4 条题解

  • 1
    @ 2022-12-15 21:17:37

    淘汰赛

    没有复杂的pair版

    #include<bits/stdc++.h>
    using namespace std;
    int n,a[200],xx[200],z=1;//用xx[i]记录谁赢了第i队
    int arcaea(int l,int r,int c)
    {
    	if(c==0)//初始化树的最底层 c==0时l-r区间内只有一队
    	{
    		xx[l]=l;
    		return a[l];
    	}
    	int mid=(l+r)/2;
    	int lans=arcaea(l,mid,c-1);
    	int rans=arcaea(mid+1,r,c-1);
    	if(c==n)
    		if(lans<rans)
    			return xx[l];
    		else
    			return xx[r];
    	if(lans<rans)
    	{
    		xx[l]=xx[r];
    		return rans;
    	}
    	else
    	{
    		xx[r]=xx[l];
    		return lans;
    	}
    }
    int main()
    {
    	cin>>n;
    	int aa=n;
    	while(aa--)
    		z*=2;//z 总共队数
    	for(int i=1;i<=z;i++)
    		cin>>a[i];
    	cout<<arcaea(1,z,n);
    	return 0;
    }
    

    信息

    ID
    1191
    时间
    1000ms
    内存
    256MiB
    难度
    1
    标签
    递交数
    28
    已通过
    27
    上传者