贪心就完事,1号点是小美,问max.那么就是每次都操作都对小美最有利.
如何操作呢?首先呢,假如我是小美,我肯定是把这些数分成2组,一组是比我大的数,另外一组是比我小的数.我希望怎么比赛呢,肯定是我每次跟比我小的数进行比赛,然后比我大的人进行比赛,比我小的人进行比赛,这样子是最优的,然后代码就很好写了.
代码如下:
#include <bits/stdc++.h>
using namespace std;
const int N=(1<<21);
int a[N];
int main()
{
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++) scanf("%d",&a[i]);
int cnt1=0,cnt2=0;
for(int i=2;i<=n;i++)
{
if(a[i]>a[1]) cnt1++;
else cnt2++;
}
//总有一个会单出来.不是cnt1就是cnt2.
int ans=0;
while(cnt2>1)
{
cnt2/=2;
ans++;
}
cout<<ans<<endl;
return 0;
}
京公网安备 11010502036488号