社区讨论

剪了一晚上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有进位

C
inline 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 条回复,欢迎继续交流。

正在加载回复...