「题解」Codeforces 1710C XOR Triangle

「题解」Codeforces 1710C XOR Triangle

x=axorb,y=bxorc,z=axorc,则 xxoryxorz=0

即有 xxory=z,考虑异或是在做不进位加法,则有 x+y>z=xxoryxandy0

故数位 dp 记 fi,0/1,0/1,0/1,0/1,0/1,0/1 表示从高到低填到第 i 位,a,b,c 有没有顶到上界(前 (i1) 位和 n 一样,以及 xandy,yandz,xandz 是不是非 0).

记忆化搜索,很好写。

int solve(int pos,int s1,int s2,int s3,int t1,int t2,int t3){
	if(pos==n+1)
		return t1&&t2&&t3;
	if(vis[pos][s1][s2][s3][t1][t2][t3])
		return f[pos][s1][s2][s3][t1][t2][t3];
	int &now=f[pos][s1][s2][s3][t1][t2][t3];
	vis[pos][s1][s2][s3][t1][t2][t3]=1;
	for(int a=0;a<=min(v[pos]+s1,1);a++)
		for(int b=0;b<=min(v[pos]+s2,1);b++)
			for(int c=0;c<=min(v[pos]+s3,1);c++){
				int p1=s1|(a<v[pos]),p2=s2|(b<v[pos]),p3=s3|(c<v[pos]);
				int x=a^b,y=b^c,z=a^c;
				int q1=t1|(x&&y),q2=t2|(y&&z),q3=t3|(x&&z);
				cadd(now,solve(pos+1,p1,p2,p3,q1,q2,q3));
			}
	return now;
}
posted @   do_while_true  阅读(26)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?

This blog has running: 1845 days 1 hours 33 minutes 14 seconds

点击右上角即可分享
微信分享提示