题目传送门

题意简述:

(就是连环的意思)

唔,这道题考场上写了个什么神仙做法,数据太水了居然过了:

//
#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=;i<=n;i++)
{
scanf("%d",&a);
ans^=a;
}
if(ans==) printf("Yes\n");
else printf("No\n");
return ;
}

反例还是很容易构造的吧,比如$n$不能被$3$整除的情况(看了下面的分析就可以轻而易举地举出好多反例来了)

分析:

1.左右两个数的异或值等于中间的数,那么任意相邻三个数的异或和一定为$0$

2.考虑一般情况,设序列的前$3$个数为$xyz$,且$x^y^z==0$,那么如果要满足任意三个相邻的数的异或和都为0,则下一个数只能为$x$,因为要满足$y^z^这个数==0$,依次推下去,可以发现$n%3==0$时,比如$xyzxyz$在连成环的情况下可以符合要求,反之不能,比如$xyzxy$。也就是这三个数的个数一定要是相等,且均为$n/3$

2.考虑特殊情况,上一种情况中的$xyz$中有2个数相等的时候,剩下那一个数只能为$0$,也就是$0$的个数为$n/3$,另一个数的个数为$n/3*2$。

3.最最特殊的情况,就是全部都是$0$的情况,这种情况不需要判断$n%3==0$。

但是,

做这道题的时候该犯的错误,不该犯的错误都犯到位了。

1.没有开ll

2.多组数据不清零(线下考试的时候由于AT数据过于水,重造了数据,没有绑点,但是多组数据)

3.在找不一样的数的时候,用的下面的式子判断,但是,要记得赋$a[0]=-1或INF$,否则在第一个数是0的时候会炸掉。

 //不开ll见祖宗
#include<iostream>
#include<string>
#include<cstdio>
#include<cstring>
#include<map>
#include<algorithm>
using namespace std;
#define N 100005
#define ll long long
#define MOD 1000000007
#define INF 0x3f3f3f3f
int n;
ll a[N],num[];
int cnt[],tot;
int main()
{
//freopen("circle.in","r",stdin);
//freopen("circle.out","w",stdout);
int T;scanf("%d",&T);
while(T--)
{
//f**k多组数据不清零
tot=;
cnt[]=cnt[]=cnt[]=;
num[]=num[]=num[]=;
bool f=;
scanf("%d",&n);
for(int i=;i<=n;i++)
{
scanf("%lld",&a[i]);
if(a[i]!=) f=;
}
if(f==)
{//全部都是0
puts("Yes");
continue;
}
sort(a+,a+n+);
a[]=INF;
for(int i=;i<=n;i++)
{
if(a[i]!=a[i-])
cnt[++tot]++,num[tot]=a[i];
else cnt[tot]++;
if(tot>)
{
puts("No");
f=;//混用变量
break;
}
}
if(f==) continue;
if(n%==)
{
if(tot==&&(num[]^num[]^num[])==&&cnt[]==n/&&cnt[]==n/&&cnt[]==n/)
{
puts("Yes");
continue;
}
if(tot==&&num[]==&&cnt[]==n/&&cnt[]==n/*)
{
puts("Yes");
continue;
}
}
puts("No");
}
return ;
}

Code

AGC035 A - XOR Circle【分析】的更多相关文章

  1. xor和gates的专杀脚本

    前段时间的一次样本,需要给出专杀,应急中遇到的是linux中比较常见的两个家族gates和xor. 首先是xor的专杀脚本,xor样本查杀的时候需要注意的是样本的主进程和子进程相互保护(详见之前的xo ...

  2. 2115: [Wc2011] Xor

    2115: [Wc2011] Xor 链接 分析: 对于图中的一个环,是可以从1到这个环,转一圈然后在回到1的,所以可以一开始走很多个环,然后在走一条1到n的路径. 那么可以求出所有的环,加入到线性基 ...

  3. 4269: 再见Xor

    4269: 再见Xor 链接 分析: 和SGU 275唯一不同的就是需要求出次小值,那么异或出最大值的所有元素中,找到最小的,去除即可. 代码: #include<bits/stdc++.h&g ...

  4. AtCoder Grand Contest 035

    Preface Atcoder的题都好劲啊,都是我做不动的计数与构造 就当锻炼自己的思维能力了(基本都是bzt教的) A - XOR Circle bzt说这题数据太水了只要判一下所有数异或值是否为\ ...

  5. AtCoder Grand Contest 035 简要题解

    从这里开始 题目目录 Problem A XOR Circle 你发现,权值的循环节为 $a_0, a_1, a_0\oplus a_1$,然后暴力即可. Code #include <bits ...

  6. AtCoder Beginner Contest 121 题解

    题目链接:https://atcoder.jp/contests/abc121 A White Cells 分析:题目数据规模很小,直接暴力修改都可以.或者可以推出公式. 代码: #include & ...

  7. Codeforces 460D. Little Victor and Set

    D. Little Victor and Set time limit per test:1 second memory limit per test:256 megabytes input:stan ...

  8. Django-C003-视图

    此文章完成度[5%]留着以后忘记的回顾.多写多练多思考,我会努力写出有意思的demo,如果知识点有错误.误导,欢迎大家在评论处写下你的感想或者纠错. 在这个章节中,我们也一样需要练习过往已经掌握的技能 ...

  9. 【AtCoder】AtCoder Grand Contest 035 解题报告

    点此进入比赛 \(A\):XOR Circle(点此看题面) 大致题意: 给你\(n\)个数,问是否能将它们摆成一个环,使得环上每个位置都是其相邻两个位置上值的异或值. 先不考虑\(0\),我们假设环 ...

随机推荐

  1. python广度遍历文件夹

    import os from collections import deque path = r"E:\Python" queue = deque([])#队列 queue.app ...

  2. Git账号Window10系统配置密钥

    Git 拉取 推送 报错 . Window10系统 需要配置Git账号密钥.

  3. buuctf@ciscn_2019_en_2

    from pwn import * context.log_level='debug' io=process('./ciscn_2019_en_2') libc=ELF('./libc.so') el ...

  4. JavaScript基础——JavaScript常量和变量(笔记)

    JavaScript常量和变量(笔记) Javascript代码严格区分大小写. javascript暂不支持constant关键字,不允许用户自定义常量. javascript使用var关键字声明变 ...

  5. 对abel 转译 class 过程的研究----------------------引用

    作为当下最流行的 JavaScript 编译器,Babel 替我们转译 ECMAScript 语法,而我们不用再担心如何进行向后兼容. 零.前言 虽然在 JavaScript 中对象无处不在,但这门语 ...

  6. HGOI 20190708 题解

    Problem A 拿出勇气吧 幸运数字每一位是$4$或者$7$,现在给出一个数字每位数位上数的和为n,求出最小的幸运数n 对于100%的数据,$n\leq 10^6$ Sol : 显然本题要求数的长 ...

  7. hdu_1059(多重背包)

    多重背包的讲解: 多重背包问题https://blog.csdn.net/yandaoqiusheng/article/details/84782655 ; i <= n; i++) { int ...

  8. 17.Python print()函数高级用法

    前面使用 print() 函数时,都只输出了一个变量,但实际上 print() 函数完全可以同时输出多个变量,而且它具有更多丰富的功能. print() 函数的详细语法格式如下: print (val ...

  9. [清华集训2016]温暖会指引我们前行——LCT+最大生成树

    题目链接: [清华集训2016]温暖会指引我们前行 题目大意:有$n$个点$m$次操作,每次操作分为三种:1.在$u,v$两点之间连接一条编号为$id$,长度为$l$,温度为$t$的边.2.查询从$u ...

  10. C++入门经典-例6.7-字符串比较

    1:strcmp函数,用于比较两个字符串.格式如下: strcmp(字符数组名1,字符数组名2) 按照ASCII码,按顺序比较两个数组中的字符,并由函数返回值返回比较结果的执行过程. (1)各自选中自 ...