Atcoder D - XOR Replace(思维)】的更多相关文章

题目链接:http://agc016.contest.atcoder.jp/tasks/agc016_d 题解:稍微想一下就知道除了第一次的x是所有的异或值,之后的x都是原先被替换掉的a[i]所以要想可以通过操作得到必须使a[i]里的所有数b[j]里都有 而且数量相同,(a[0]=a[1]^a[2]^..^a[n],b[0]=b[1]^b[2]^..^b[n]).然后就是怎么交换能够使得操作数最少,其实可以用并查集,但是用dfs比较好理解 一点其实都是一样的.显然f[a[i]]=b[i],于是如…
目录 题目链接 题解 代码 题目链接 AGC016D - XOR Replace 题解 可以发现一次操作相当于一次置换 对于每个a上的位置映射到b对应 可以找到置换群中的 所有轮换 一个k个元素的轮换需要k+1步完成 那么答案就是边数+轮换数-1 -1的话发现当最一个数为缺少的数时不需吧最后一步换回来 代码 #include<map> #include<cstdio> #include<algorithm> #define gc getchar() #define pc…
AGC 16 D - XOR Replace 附上attack(自为风月马前卒爷) 的题解 Problem Statement There is a sequence of length N: a=(a1,a2,-,aN). Here, each ai is a non-negative integer. Snuke can repeatedly perform the following operation: Let the XOR of all the elements in a be x.…
$ >AtcoderGrandContest \space 016 D.XOR\space Replace<$ 题目大意 : 有两个长度为 \(n\) 的数组 \(A, B\) ,每次操作将 \(A\) 中的一个元素替换为 \(A\) 中所有元素的异或和,求最少几次操作可以从 \(A\) 变换到 \(B\) . \(1 \leq n \leq 10^5\) 解题思路 : 设初始状态的异或和为 \(S\) ,第一次替换掉的数为 \(x\) ,容易发现新的数列的异或和为 \(x\) ,可以简单证明…
Problem Statement You are given a tree with N vertices. The vertices are numbered 0 through N−1, and the edges are numbered 1 through N−1. Edge i connects Vertex xi and yi, and has a value ai. You can perform the following operation any number of tim…
原文链接 https://www.cnblogs.com/cly-none/p/9813163.html 题意:给出初始序列\(a\)和目标序列\(b\),都有\(n\)个元素.每次操作可以把\(a\)中的一个元素替换为\(a\)中所有元素的异或和,问最少操作多少次,把序列\(a\)变成序列\(b\),或判断无解. \(n \leq 10^5\) 首先,这个"替换为所有元素的异或和",其实就是一开始有\(v\)为\(a\)中所有元素异或和,每次操作把\(a\)中某个元素与\(v\)交换…
题意 题目链接 给出两个长度为\(n\)的数组\(a, b\) 每次可以将\(a\)中的某个数替换为所有数\(xor\)之和. 若\(a\)数组可以转换为\(b\)数组,输出最少操作次数 否则输出\(-1\) Sol 一般那看到这种\(N \leqslant 10^5\)而且不可做的题肯定是先找结论啦 不难看出,我们把所有数\(xor\)起来的数替换掉之后再次\(xor\),得到的一定是被替换掉的数. 实际上,我们可以把xor出来的数放到一个新的位置\(N+1\),这样每次操作就变成了交换第\(…
题目链接:http://agc017.contest.atcoder.jp/tasks/agc017_e 题解:这题很巧妙运用了cnt[i]抽象的表示了上下互补的状态,最后上面突出的一定要处理完.下面突出的可以多.而且最后要处理一下下面多的情况不能自己左右互补具体看一下代码. #include <iostream> #include <cstring> #include <cmath> #include <cstdio> #include <vecto…
题目链接:http://agc016.contest.atcoder.jp/tasks/agc016_c 题解:挺简单的构造,很容易想到的构造方法就是(h*w)的小矩阵里其他值赋值为1,最后一个赋值为(h*w).这只是最基础的构造,然后 判断count - (H * W - count) * (h * w - 1)(count表示基础构造后正数的个数)是否大于0,如果大于0都可以构造,怎么构造就是将正的不断+1,负的不断-(h*w-1) 就行.如果小于等于0就要看初始的sum值(sum表示基础构…
题目链接:http://arc075.contest.atcoder.jp/tasks/arc075_d 题意:求rev(N)=N+D的个数,rev表示取反.例如rev(123)=321 题解:具体看一下代码,这题需要思考一下,虽然是简单的dfs但是不好想到. #include <iostream> #include <cstring> #include <cmath> using namespace std; typedef long long ll; ll Powe…
题目大意:给定一个 N 个点的序列,求有多少个区间满足\(\oplus_{i=l}^ra[i]=\sum\limits_{i=l}^ra[i]\). 题解: 小结论:\(a\oplus b=a+b\rightarrow a\&b=0\). 对每个点来说,考虑向右延伸能够满足条件的右端点的位置,显然右端点的位置单调不减,双指针扫一遍即可. 代码如下 #include <cstdio> using namespace std; const int maxn=2e5+10; int n,a[…
题意 题目链接 系统中有两个数\((a, b)\),请使用\(62\)以内次询问来确定出\((a, b)\) 每次可以询问两个数\((c, d)\) 若\(a \oplus c > b \oplus d\)返回\(1\) 若\(a \oplus c = b \oplus d\)返回\(0\) 若\(a \oplus c < b \oplus d\)返回\(-1\) 保证/需要保证\(0 \leqslant a, b, c, d, < 2^{30}\) Sol 严重怀疑自己小学数学没学好,…
Portal --> agc016D Description ​ 一个序列,一次操作将某个位置变成整个序列的异或和,现在给定一个目标序列,问最少几步可以得到目标序列 ​ Solution ​ 翀哥神仙!(守恒什么的哈哈哈哈哈哈哈==) ​​ 首先当然是要快乐手玩样例啊然后就发现这个异或是假的,比如说手头上有四个元素\(\{a,b,c,d\}\),比如说我们现在用异或和替掉\(b\)(用\(\oplus\)表示异或),那就是\(\{a,a\oplus b\oplus c\oplus d,c,d\}…
传送门 题目大意 给定两个长为$n$的序列$A,B$你可以进行若干组操作,每次操作选定一各位置$x$,令$A_x$等于$A$的异或和. 问能否通过一定操作使得$A$成为$B$,如果能,求最小操作书数. 题解 考虑操作的意义,找找规律就知道第一次操作是把一个数变为异或和,以后每次操作都是把这个数变成上次操作位置原来的数,因此由以下几个结论. 一定有解,当且仅当排序后$A,B$完全相同或至多一个数不相同且$B$中的那个数是$A$所有元素的异或和. 所以判无解有一个技巧,令$A_{n+1}=A$的异或…
题意: 题解: 棒棒的神仙题...这题只是D题???(myh:看题五分钟,讨论两小时) 首先这个异或和是假的,比如我现在有$a=(a_1,a_2,a_3,a_4)$,操作一下$a_2$,就变成了$a=(a_1,a_1\oplus a_2\oplus a_3\oplus a_4,a_3,a_4)$: 再操作一下$a_3$,因为$a_i\oplus a_i=0$,它就变回了$a=(a_1,a_1\oplus a_2\oplus a_3\oplus a_4,a_2,a_4)$. 所以这个操作只是第一次…
>< 直接写中文了 Problem Statement 给定的是长度为N-1的字符串S. S中的每个字符都是<或>. 当对所有i(1≤i≤N-1)都满足以下条件时,N个非负整数a1,a2,[cdots],aN的序列被认为是满足的 如果Si = <:ai <ai + 1 如果Si =>:ai> ai + 1 找出N个非负整数的良好序列的元素的最小可能和. 约束条件 2≤N≤5×105 S是长度为N-1的字符串,由<和>组成 Input 输入来自标准…
#define HAVE_STRUCT_TIMESPEC#include<bits/stdc++.h>using namespace std;int col[207],s[207],n;char ss[207][207];int bfs(int x){ int l=0,r=0; for(int i=1;i<=n;i++) col[i]=0; s[++r]=x; col[x]=1; while(l<r){ x=s[++l]; for(int i=1;i<=n;i++) if(s…
A - Shrinking 用每个字母模拟一下就行 #include <bits/stdc++.h> #define fi first #define se second #define pii pair<int,int> #define mp make_pair #define pb push_back #define space putchar(' ') #define enter putchar('\n') #define eps 1e-10 #define MAXN 200…
前言: 因为要普及了,今年没一等就可以退役去学文化课了,所以暑假把历年noip普及组都刷了一遍,离noip还有50+天,想弄点强化训练什么的. 想了想,就这些天学文化课之余有空就把AtCoder之前那些ARC 的 C D E 什么的刷一下吧(一般是D,可能会有简单一点的E和难一点的C)(可能会很慢,毕竟基本有时间也就周末了) 所以就开了这个坑鞭策一下自己,上个坑是dp的,开了50题,补的巨累...这次吸取教训,只开20题...(也没那么多时间去刷题了) 不会说题意,题意的话可以上网找或者去原站看…
我思维越来越菜了,这样下去感觉要退役了. 听说Atcoder的题练思维?那就试着做一做吧. 坚持每天一两道吧.(很有可能咕掉.) AGC036 官方题解 ---A-Triangle                  √ (2019.8.09) | 构造 题解 ---B-Do Not Duplicate   √ (2019.8.14) | 倍增 ---C-GP 2                                              | 计数 ---D-Negative Cyc…
呼我竟然真的去刷了016QwQ[本来以为就是个flag的233] 感觉AGC题目写起来都不是很麻烦但是确实动脑子qvq[比较适合训练我这种没脑子选手] 先扔个传送门:点我 A.Shrinking 题意:给一个串S,每一轮操作可以使S变成S'.S'[i]=S[i] 或者 S[i+1](你来选择).每次字符串长度-1(去掉最后一个字符).问最少几轮操作后可以使S中的字符都相同.(|S|<=100) 撕烤过程:诶?区间DP??这没法转移啊??哦凑|S|怎么这么小??暴搜就行了啊. 题解:枚举最后S中剩…
阶段性总结 GDOI 2022 PJ 比赛经过 Day ? ~ Day -1 半停课集训,补了很多东西,但是之前漏得太多了,结果是还有很多题没改 打了若干场 AtCoder ,承认自己思维的不足,训练时 dp 与 ds 交错食用效果感觉可以? Day 0 信 心 赛,被 lll 只用 2h 吊打 最后一题一个普通的线段树.一直在想 set ,大雾 赛前必敲的 manacher 挂了?不祥. Day 1 上了一节文化课(其实是发呆)后过来,有点蒙. 提前 20 min 录屏,去了个洗手间,精神了一…
题目链接:https://atcoder.jp/contests/abc121/tasks/abc121_d 题目很裸(Atcoder好像都比较裸 就给一个区间求异或和 n到1e12 肯定不能O(n)推 那肯定得通过异或的一些性质 用$f\left( a,b\right)$表示[a,b]区间的异或和 我只观察出了$f\left( 2^{a},2^{b}-1\right)$的异或和肯定为0. 通过$f\left( 2^{a},2^{a+1}-1\right)$每一位都会出现偶数次 例如 [4,8)…
题目传送门:https://arc092.contest.atcoder.jp/tasks/arc092_b 这场arc好难啊...这场感觉不像正常的arc...其实这道题还可以更早写出来的,但是蒟蒻解不等式的时候搞错解集了,一个错调了半天... 我的做法是首先按位考虑,求所有的ai+bj中每个数位的xor和. 首先我们可以想到,如果有两个数x,y,且0<x,y<=2k,那么当0<=x+y<2k时,x+y在2k这一位上的贡献肯定为0. 但是如果2k+1<=x+y<2k+…
题目链接:https://atcoder.jp/contests/abc126/tasks/abc126_f 题目大意 给定两个整数 M 和 K ,用小于 2M 的的所有自然数,每个两个,用这些数排成一个长度为 2M+1 的序列,使得序列满足以下条件: 每个自然数只能用 2 次. 设序列为 a,$\forall_{i < j}\ 满足a[i] == a[j]$有 a[i] xor a[i + 1] xor……xor a[j] == K. 问这个序列是否存在,存在则输出任意一个,不存在输出 -1.…
AtCoder Grand Contest 019 B - Reverse and Compare 题意:给定字符串,可以选定任意i.j且i<=j(当然i==j时没啥卵用),然后翻转i到j的字符串,问能组成多少种不同的字符串. tourist出的题..感觉好棒,虽然简单,但我就是不知道怎么弄,感觉思维好匮乏. 首先,如果Si=Sj,那么反转i到j和翻转i+1到j-1是一样的,也就是这种翻转不会贡献更多的答案.那么其实只要求i<j且Si!=Sj的个数就行了,当然,本身不变也是一种答案.求解i&l…
Xor 思维题 题目描述 小\(Q\)与小\(T\)正在玩一棵树.这棵树有\(n\)个节点,编号为 \(1\),\(2\) \(3...n\),由\(n-1\)条边连接,每个节点有一个权值\(w_i\). 在这个游戏中,小 \(Q\) 需要选择一些节点.他可以选择任意个数的点(小\(Q\)一定会选择最优策略),但是一条边连接的两个节点不能同时被选. 当小\(Q\)选完后,小\(T\)将选择剩下的节点.这样这棵树上的每个点都将被小\(Q\)或者小\(T\)选择. 最后两人的分数分别为自己选择的点的…
Atcoder 题面传送门 & 洛谷题面传送门 Yet another 思维题-- 注意到此题 \(n\) 数据范围很大,但是 \(a_i,b_i\) 数据范围很小,这能给我们什么启发呢? 观察题目所求的组合数的形式,我们可以联想到组合数的组合意义(qwq 似乎 AGC 很喜欢放组合意义的题?涨见识了/cy):\(\dbinom{x+y}{x}\) 为从 \((0,0)\) 出发,只能向上或向右走,到达 \((x,y)\) 的方案数. 于是此题可以转化为,对于 \(\forall i,j\) 求…
Atcoder 题面传送门 & 洛谷题面传送门 这是一道难度 Cu 的 AGC E,碰到这种思维题我只能说:not for me,thx 然鹅似乎 ycx 把题看错了? 首先这个平方与乘法比较喜闻乐见,很容易与组合联系在一起,于是我们不妨把题目条件翻译成组合的语言: 有一排 \(n\) 个格子,你要在其中插入若干个隔板将其隔成若干段 有 \(m\) 个特殊格子 \(a_1,a_2,\dots,a_m\),\(\forall i\in [1,m]\) 你禁止在 \(a_i\) 与 \(a_{i}+…
Atcoder 题面传送门 & 洛谷题面传送门 u1s1 Atcoder 不少思维题是真的想不出来,尽管在 Atcoder 上难度并不高 二分答案(这我倒是想到了),检验最上面一层的数是否 \(\ge x\). 我们将最底下一层的数中 \(\ge x\) 的 \(a_i\) 设为 \(1\),\(<x\) 的设为 \(0\),那么原题可以转化为每次操作对于相邻三个数,如果 \(1\) 的个数 \(\ge 2\),就在该位上填一个 \(1\),否则在该位上填一个 \(0\),求最终顶上的数是…