玄关,求调

P4715 【深基16.例1】淘汰赛

dfs打错了 ```cpp #include<bits/stdc++.h> using namespace std; int n,v[1<<8]; int win[1<<8]; void dfs(int x){ if(x>=(1<<n)) return; dfs(2*x); dfs(2*x+1); int lv=v[2*x]; int rv=v[2*x+1]; if(lv>rv){ v[x]=lv; win[x]=win[2*x]; }else{ v[x]=rv; win[x]=win[2*x+1]; } } int main(){ cin>>n; for(int i=0;i<(1<<n);i++){ cin>>v[(1<<n)+i]; win[(1<<n)+i]=i+1; } dfs(1); int num=(v[2]>v[3]?win[3]:win[2]); cout<<num; return 0; } ```
by queenbee @ 2024-04-12 18:28:39


其实这个题直接求左边最大,再求右边最大,两个一比较,输出较小值的下表就可以,@[queenbee](/user/789564) 他是我同学,我下午讲课讲了这道题,@[queenbee](/user/789564) 你没听课,举报了(doge
by Jason__Wang @ 2024-04-12 18:37:41


@[queenbee](/user/789564) @[Jason__Wang](/user/1110117) 谢啦
by lucy2012 @ 2024-04-12 18:38:29


|