随笔分类 - 构造
[校内训练2021_03_03]C
摘要:题目大意:问平面上有多少个不同的由n个点组成的无向无标号的树(即在纸上画树,树边不能交叉)。n=10000000,对质数取模。 思考: 由于树太难直接考虑,我们需要建立一种一一对应的关系来方便计数。这里将树变成了平面图,即对于任意一个有2(n-1)个点均匀分布在圆周上的圆,我们给这些点两两配对,连出
阅读全文
[校内训练2021_02_24]B,代数数的和仍然是代数数
摘要:我们先说理性地考虑如下证明:代数数的和仍然是代数数。 设P(a)是n次数多项式,Q(b)是m次多项式,并且最高项系数为1,系数均为有理数,a、b分别是P(a)和P(b)的任意根,满足P(a)=0,P(b)=0。 我们现在要构造一个数列(可能是无限长的),满足$t_0(a+b)^0+t_1(a+b)^
阅读全文
[校内训练20_09_29]ABC
摘要:1.问一个圆上的最多不交弧的个数。 1 #include<bits/stdc++.h> 2 using namespace std; 3 const int maxn=1E6+5; 4 int n,m,tot; 5 int totT,tmp[maxn],jump[maxn][20]; 6 struc
阅读全文
[校内训练20_09_22]AB
摘要:1.结论题,不会证 1 #include<bits/stdc++.h> 2 using namespace std; 3 const int base=200*500; 4 const int limit=2*200*500; 5 int T,n,a[555]; 6 bitset<205*505*2
阅读全文
[校内训练20_09_08]AC
摘要:1.求二元组异或的三次方的和。k为位数,nk<=2000000。 n比较小时,直接两两枚举并用bitset计算。 k比较小时,按照位数进行分组,那么考虑贡献(三个位置)分别在一个组、两个组、三个组里的,枚举这些组并用FWT合并。 1 #include<bits/stdc++.h> 2 #define
阅读全文
[校内训练19_09_10]sort
摘要:题意 给一个非负整数序列,每次问能否异或上一个正整数使得所有的数单调不减。如果能,输出最小的x,否则输出-1。单点修改。多测。要求最多一个log。 思考 只要考虑相邻的两个数。找到这两个数最高的不同的一位,那么只要考虑是一定要异或或者是一定不要异或。 代码 1 #include<bits/stdc+
阅读全文
[校内训练19_09_06]直径
摘要:题意 构造一棵树,让它有k条直径。边权都是非负整数,要求点数不能超过5000。 $k \leq 5000000$ 思考 让树根底下分别挂着长度为a,b,c的边权为0的链,然后将链的某一端向根连一条边权为1的边,这样共有ab+ac+bc条直径。可以发现,对于数据范围内的k,可以很快地找到这样的a,b,
阅读全文
19_07_08校内训练[grid]
摘要:题意 现有n*m的长方形网格,每个格子中写着一个数,并构成了[0,n*m)的排列。每次可以将一行循环平移x格,也可以将一列循环平移x格。给出初始状态,给出一个到达给定状态的方案。n*m<=10000,n,m>=2。 思考 发现存在一种方法,能够使任意三个方格进行顺时针或逆时针改变位置。其中有一个方格
阅读全文
19_07_8校内训练[sort]
摘要:题意 一个排列,每次选一个子序列按顺序放在开头,要求变成升序的操作次数不超过17次,给出方案。n<=1E5。 思考 对于ai=aj-1且i<j的数字,一定要保持其相对顺序。可以根据这个关系分成若干个块,并根据每个块最小的数从小到大将块编号为1~m。 接着把所有奇数编号的块选出来放在左侧。能发现这次操
阅读全文
CF572_Div2_D2
摘要:题意 http://codeforces.com/contest/1189/problem/D2 思考 显然地,如果出现度数为2且两条出边边权不相同的情况,是无法构造合法方案的。 下面考虑缩边后的树,此时每个非叶子节点的度数一定大于等于3。 枚举每个非叶子节点,将其重新作为树的根,并尝试将它所有的出
阅读全文
[CF 487C Prefix Product Sequence]
摘要:题意 将1~n的正整数重排列,使得它的前缀积在模n下形成0~n-1的排列,构造解或说明无解。n≤1E5。 思考 小范围内搜索解,发现n=1,n=4和n为质数时有解。 不难发现,n一定会放在最后,否则会多出很多的0。 1.n≥4且n为合数:由于n能写成pq的形式,其中pq|(n-1)!,因此第n-1的
阅读全文
浙公网安备 33010602011771号