题目链接 题意 给出m个数b,这些数是由n个数a两两异或组成的,问初始的那n个数分别是多少. 思路 存在多组解的情况...原来是个构造题. 考虑这样一种情况:b1 = a1 ^ a2,b2 = a2 ^ a3,b3 = a1 ^ a3.那么只要确定了a1,就可以求出a2和a3了.那么可以假设a1=0,自然就可以求出a3,再可以求出a2了.但是对于某个ai,如果ai加入了答案,那么存在一些bj就是不合法的,例如我们选了的b1 = a1 ^ a2,如果我们把a1和a2都加入了答案里面,那么对于其他的…
题目链接:http://codeforces.com/contest/862/problem/C 题解:一道简单的构造题,一般构造题差不多都考自己脑补,脑洞一开就过了 由于数据x只有1e5,但是要求是1e6,而且我们知道3个数可以组合成任意数也就是说n-3的数从1-1e5直接任意找然后使得其总xor为sum 当sum=x时(定义Max=1<<17 > 1e5)那么这三个数只要组成0就行,当sum!=x时那么这三个数只要构成sum^x就行,这3个数从1e5~1e6中找 很好找的. #inc…
http://codeforces.com/contest/755/problem/E 题意:给出n个点和一个距离d,让你在这个n个点的图里面构造一个子图,使得这个子图的直径和补图的直径的较小值为d,如果不可能输出-1,如果可能把子图的边表示出来. 思路:一个图的直径就是图的任意两点之间的距离的最大值. 这里有参考:http://blog.csdn.net/jasonvictoryan/article/details/54572646 感觉这种类型的构造题目不会做的话还是只能找规律,当然这个规律…
题目链接:http://codeforces.com/contest/454/problem/E 题意:给出n个点和m条边,要求每一个点要走指定的奇数次或者是偶数次. 构造出一种走法. 题解:可能一开始会难以入手.其实要想改变这个点的奇偶次数只要回去上一个节点再回来就行.然后上一个节点会在 dfs回朔时再进行修改最后只要关注起点就行了. #include <iostream> #include <cstring> #include <vector> #include &…
A 直接判存不存在连续的三个包含A,B,C就行 /*Huyyt*/ #include<bits/stdc++.h> #define mem(a,b) memset(a,b,sizeof(a)) using namespace std; typedef long long ll; typedef unsigned long long ull; ][] = {{, }, {, }, {, -}, { -, }, {, }, {, -}, { -, -}, { -, }}; , gakki = +…
Codeforces 题面传送门 & 洛谷题面传送门 神仙构造题(不过可能我构造太烂了?) 首先考虑这个奇奇怪怪的 \(\dfrac{4}{7}\),以及这个每个点出度最多为 \(2\) 的条件有何用意.容易发现 \(4=2^2,7=1+2+4\),这启发我们通过某种方式将原图的点集分成三部分.我们考虑构造三个点集 \(A,B,C\) 满足: 对于 \(A\) 中的点 \(x\),要么其入度为 \(0\),要么所有连向它的边的另一个端点都属于 \(C\) 对于 \(B\)​ 中的点 \(x\),…
#include<bits/stdc++.h>using namespace std;const int N=1e6+6;int x[N],y[N];int sx,sy,n;char s[N];bool check(int m){    for(int i=1;i<=n-m+1;i++)    {        int tx=x[n]-x[i+m-1]+x[i-1];  //当前原来选项造成的横坐标影响        int ty=y[n]-y[i+m-1]+y[i-1];  //当前原…
题目链接: 232A - Cycles(点击打开) 题意: 要构成一个存在 \(k\) 个三元环的图,需要多少个点,输出顶点数 \(n\),并输出图. 题解: 题目中的任何图都可以用 \(90\)~ \(100\)个顶点构造完成. Proof that \(100\) vertices are always enough for the given restrictions on \(n\). - For some \(p\) after first \(p\) iterations we wi…
题目链接:https://vjudge.net/contest/175446#problem/J 题解:显然要用最多n个点构成的图要使的得到的最短路条数有1e9次个,显然要有几个数相乘容易想到2的几进制显然所有数都可以又2的几次方凑的于是利用一下别人的图 这就是构造方法我的稍稍有些不同我是先构造直线再构造交叉的我感觉这样简单一点 #include <iostream> #include <cstring> #include <cstdio> using namespac…
题目链接:http://codeforces.com/contest/872/problem/D 题意:给你一个排列p和对应的位置b也就是说p[b[i]]=i,然后给你最多询问2*n次找出所有的p排列,然后任意输出一个. 题解:其实是一道水题要知道一共n个数询问2*n次也就是说能够询问p[0]^b[i](0<=i<n)和p[i]^b[0](0<=i<n)然后只要给p[0]赋一个值所有的值就都出来了然后就简单了.. #include <iostream> #include…