贪心就完事,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; }