原题复现:
思想的火花:
虽然本题被认为跟树有关,但是数据太水,也没必要那么麻烦,直接queue搞定,只是要注意2^n支队伍,而不是n支。。。
#include<iostream>
#include<algorithm>
#include<string>
#include<queue>
#include<math.h>
using namespace std;
const int mod=1000000007;
const int MAX=1e6+10;
#define ull unsigned long long
#define ll long long
struct dui
{
int id,nen;
} a[MAX];;
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
ll t=1,n;
//cin>>t;
while(t--)
{
queue<struct dui>q;
cin>>n;
int ji=0;n=pow(2,n);
for(int i=1; i<=n; i++)
{
cin>>a[i].nen;
a[i].id=i;
q.push(a[i]);
}
while(!q.empty())
{
struct dui a1=q.front(),a2;
q.pop();
a2=q.front();
q.pop();
q.push(a1.nen>a2.nen?a1:a2);
ji++;
if(ji==n-1)
{
cout<<(a1.nen>a2.nen?a2.id:a1.id);
break;
}
}
}
}
评价嘛:
想练树却被我做成队列。。。。。