本地AC题库WA???
  • 板块灌水区
  • 楼主qzyz_cye
  • 当前回复5
  • 已保存回复5
  • 发布时间2024/3/10 11:35
  • 上次更新2024/3/10 14:14:24
查看原帖
本地AC题库WA???
506472
qzyz_cye楼主2024/3/10 11:35

联合省选Day2 T1第一个点,数据下下来测能过,交上去wa了?? code:

#include<bits/stdc++.h>
using namespace std;
long long T,n,K,w[100005],q[400005],tr[400005],tn,ls[400005],mid,dp[400005],ll,rl,num[400005],tt[400005];
long long ans[400005],top;
void cacl(int u,int ys)
{
	if(u>=tn)
	{
		if(q[u]<ys) dp[u]=114514191981111;
		else dp[u]=0;
		return ;
	}
	cacl(u*2,ys);
	cacl(u*2+1,ys);
	dp[u]=dp[2*u]+min(w[u],dp[2*u+1]);
//	cout<<u<<" "<<dp[u]<<endl;
	return ;
}
//void add(int u,int ys)
//{
//	num[u]=dp[u];
//	if(u>=tn)
//	{
//		return ;
//	}
//	add(u*2,ys);
//	add(u*2+1,ys);
//}
long long dfs(int u,long long k,int l,int r)
{
//	cout<<u<<endl;
	if(u>=tn)
	{
		top++;
		ans[top]=q[u];
		return 0;
	}
	else
	{
		long long sum=0,dl,dr;
//		l=r=u;
//		while(l*2<tn) l*=2;
//		while((r*2+1)<tn) r=r*2+1;
		l=1,r=tn;
		while(l<r)
		{
			
			mid=(l+r)/2+1;
		//	cout<<mid<<endl;
			cacl(u,mid);
			if(dp[u]>k) r=mid-1;
			else 
			{
				l=mid;
				dl=dp[u*2];
				dr=dp[u*2+1];
			}
		}
	//	cout<<"/////"<<endl;
		ll=rl=u*2;
		while(ll<tn) ll*=2;
		while(rl<tn) rl=rl*2+1;
	//	cout<<l<<" "<<ll<<" "<<rl<<endl;
		if(tt[l]>=ll&&tt[l]<=rl)
		{
			sum=dfs(u*2,k-min(dr,w[u]),l,r);
			if(k>=sum+dr) sum+=dfs(u*2+1,k-sum,l,r);
			else sum+=w[u]+dfs(u*2+1,k-sum-w[u],l,r);
		}
		else
		{
			sum=dfs(u*2+1,k-dl,l,r);
			sum+=dfs(u*2,k-sum,l,r);
		}
		return sum;
	}
}
int main()
{
//	freopen("cs.out","w",stdout);
	cin>>T;
	while(T--)
	{
		top=0;
		scanf("%lld%lld",&n,&K);
		tn=(1<<n);
		for(int i=1;i<=tn-1;i++)
		{
			scanf("%lld",&w[i]);
		}
		for(int i=1;i<=tn;i++)
		{
			scanf("%lld",&ls[i]);
			q[tn+i-1]=ls[i];
			tt[ls[i]]=tn+i-1;
		}
		dfs(1,K,1,1);
	//	cout<<endl<<endl;
		for(int i=1;i<=top;i++)
		{
			printf("%lld ",ans[i]);
		}
		cout<<endl;
	}
	return 0;
}

1.in

5
4 41704513771
63172871346 30595220734 16095671102 3822055819 13738718698 5991071599 14075850903 6874431191 1954448141 4475339255 4509212246 3504301339 4327559573 3485545593 2074035498
7 9 5 16 3 4 1 11 14 12 2 8 15 6 13 10
4 63715445249
61413836337 11125139971 8494516376 13086757419 19161322522 935591038 5864840209 2436855506 5427420804 3091857433 1466786642 3483688932 3156703825 7139814394 5211722473
7 4 9 13 11 16 2 14 3 6 1 15 8 5 12 10
4 76781487230
87856895769 9461732595 26386254959 18275722542 9582235352 5873564893 12257714597 8160750851 6619822566 8491303373 8311057216 2024345086 7166892352 6794943819 1302208455
1 16 7 4 15 9 3 13 2 12 6 14 5 11 8 10
4 62738926280
68608144394 455832444 29501371304 12702666392 9047737820 11908603862 8444230774 6361342524 9254816214 3885679475 5201006114 5053147318 6330020322 2937211904 3156700501
14 8 10 13 4 15 7 3 16 11 1 2 5 12 9 6
4 74808510934
86214825969 20115645025 3147560298 12246279264 17338288445 6169415471 13476840002 222772729 9769277517 9960092558 711746646 4509183369 6629895897 1999455525 2085418672
2 6 10 5 13 12 7 3 14 8 16 11 15 4 1 9

1.out

6 15 10 13 12 14 2 8 7 9 5 16 1 11 3 4
3 6 1 15 8 5 12 10 7 4 9 13 11 16 2 14
1 16 7 4 15 9 3 13 2 12 6 14 5 11 8 10
11 16 1 2 5 12 6 9 14 8 10 13 3 7 4 15
2 6 10 5 13 12 7 3 14 8 16 11 15 4 1 9

2024/3/10 11:35
加载中...