社区讨论
剪了一晚上90分我真的剪枝剪不过去了
P1092[NOIP 2004 提高组] 虫食算参与者 2已保存回复 4
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 4 条
- 当前快照
- 1 份
- 快照标识符
- @mi6yyslx
- 此快照首次捕获于
- 2025/11/20 13:06 4 个月前
- 此快照最后确认于
- 2025/11/20 13:06 4 个月前
剪枝代码贼丑,开O2水过去了。
有没有大佬能告诉我还有哪些剪枝没减??
剪枝操作
1.从3个式子右边开始从上到下枚举字母对应数字。
2.末尾(A+B)%n!=C。
3.已知A,B,不知C,且C的可能数字已经使用。
4.已知A.C,不知B,且B的可能数字已经使用。
5.已知B,C,不知A,且A的可能数字已经使用。
6.已知A,B,C,且A+B不等于C,且A+B+1不等于C。
7.已经A,B,C的最高位,且A+B有进位
Cinline int jianzhi(){
if(dis[mp2[a[n-1]&31]]&&dis[mp2[b[n-1]&31]]&&dis[mp2[c[n-1]&31]]&&(dis[mp2[a[n-1]&31]]+dis[mp2[b[n-1]&31]])%n!=dis[mp2[c[n-1]&31]])return 1;
if((dis[mp2[a[0]&31]])&&(dis[mp2[b[0]&31]])&&(dis[mp2[a[0]&31]]+dis[mp2[b[0]&31]]>=n))return 1;//最高位
for(R int i=0;i<=n-1;++i){
if(dis[mp2[a[i]&31]]&&dis[mp2[b[i]&31]]&&dis[mp2[c[i]&31]]){
if((((dis[mp2[a[i]&31]]+dis[mp2[b[i]&31]])%n)!=dis[mp2[c[i]&31]])&&(((dis[mp2[a[i]&31]]+dis[mp2[b[i]&31]]+1)%n)!=dis[mp2[c[i]&31]]))return 1;
if((dis[mp2[a[i]&31]])&&(dis[mp2[b[i]&31]])&&(dis[mp2[c[i]&31]]==0)&&(flag[(dis[mp2[a[i]&31]]+dis[mp2[a[i]&31]])%n]==1&&flag[(dis[mp2[a[i]&31]]+dis[mp2[b[i]&31]]+1)%n]==1))return 1;
if((dis[mp2[a[i]&31]])&&((dis[mp2[c[i]&31]]))&&(dis[mp2[b[i]&31]]==0)&&flag[(dis[mp2[c[i]&31]]-dis[mp2[a[i]&31]]+n)%n]&&flag[(dis[mp2[c[i]&31]]-dis[mp2[a[i]&31]]-1+n)%n])return 1;
if((dis[mp2[b[i]&31]])&&((dis[mp2[c[i]&31]]))&&(dis[mp2[a[i]&31]]==0)&&(flag[(dis[mp2[c[i]&31]]-dis[mp2[b[i]&31]]+n)%n])&&(flag[(dis[mp2[c[i]&31]]-dis[mp2[b[i]&31]]-1+n)%n]))return 1;
}
}
return 0;
}
回复
共 4 条回复,欢迎继续交流。
正在加载回复...