AGC035 A - XOR Circle【分析】
题意简述:
(就是连环的意思)
唔,这道题考场上写了个什么神仙做法,数据太水了居然过了:
// #include<cstdio> #include<algorithm> #include<iostream> #include<vector> #include<queue> #include<cstring> using namespace std; #define MAXN 10005 #define LL long long #define INF 0x3f3f3f3f int n,a,ans; int main() { scanf("%d",&n); for(int i=1;i<=n;i++) { scanf("%d",&a); ans^=a; } if(ans==0) printf("Yes\n"); else printf("No\n"); return 0; }
反例还是很容易构造的吧,比如不能被整除的情况(看了下面的分析就可以轻而易举地举出好多反例来了)
分析:
1.左右两个数的异或值等于中间的数,那么任意相邻三个数的异或和一定为
2.考虑一般情况,设序列的前个数为,且,那么如果要满足任意三个相邻的数的异或和都为0,则下一个数只能为,因为要满足,依次推下去,可以发现时,比如在连成环的情况下可以符合要求,反之不能,比如。也就是这三个数的个数一定要是相等,且均为
2.考虑特殊情况,上一种情况中的中有2个数相等的时候,剩下那一个数只能为,也就是的个数为,另一个数的个数为。
3.最最特殊的情况,就是全部都是的情况,这种情况不需要判断。
但是,
做这道题的时候该犯的错误,不该犯的错误都犯到位了。
1.没有开ll
2.多组数据不清零(线下考试的时候由于AT数据过于水,重造了数据,没有绑点,但是多组数据)
3.在找不一样的数的时候,用的下面的式子判断,但是,要记得赋,否则在第一个数是0的时候会炸掉。

1 //不开ll见祖宗 2 #include<iostream> 3 #include<string> 4 #include<cstdio> 5 #include<cstring> 6 #include<map> 7 #include<algorithm> 8 using namespace std; 9 #define N 100005 10 #define ll long long 11 #define MOD 1000000007 12 #define INF 0x3f3f3f3f 13 int n; 14 ll a[N],num[10]; 15 int cnt[10],tot; 16 int main() 17 { 18 //freopen("circle.in","r",stdin); 19 //freopen("circle.out","w",stdout); 20 int T;scanf("%d",&T); 21 while(T--) 22 { 23 //f**k多组数据不清零 24 tot=0; 25 cnt[1]=cnt[2]=cnt[3]=0; 26 num[1]=num[2]=num[3]=0; 27 bool f=0; 28 scanf("%d",&n); 29 for(int i=1;i<=n;i++) 30 { 31 scanf("%lld",&a[i]); 32 if(a[i]!=0) f=1; 33 } 34 if(f==0) 35 {//全部都是0 36 puts("Yes"); 37 continue; 38 } 39 sort(a+1,a+n+1); 40 a[0]=INF; 41 for(int i=1;i<=n;i++) 42 { 43 if(a[i]!=a[i-1]) 44 cnt[++tot]++,num[tot]=a[i]; 45 else cnt[tot]++; 46 if(tot>3) 47 { 48 puts("No"); 49 f=0;//混用变量 50 break; 51 } 52 } 53 if(f==0) continue; 54 if(n%3==0) 55 { 56 if(tot==3&&(num[1]^num[2]^num[3])==0&&cnt[1]==n/3&&cnt[2]==n/3&&cnt[3]==n/3) 57 { 58 puts("Yes"); 59 continue; 60 } 61 if(tot==2&&num[1]==0&&cnt[1]==n/3&&cnt[2]==n/3*2) 62 { 63 puts("Yes"); 64 continue; 65 } 66 } 67 puts("No"); 68 } 69 return 0; 70 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现