Codeforces Round #453 (Div. 1)
Codeforces Round #453 (Div. 1)
A. Hashing Trees
题目描述:给出一棵树的高度和每一层的节点数,问是否有两棵树都满足这个条件,若有,则输出这两棵树,否则输出perfect
solution
首先判断什么时候是perfect:当不存在相邻两层的节点数均大于\(0\)时,输出perfect。
接下来就是构造的问题。若上一层只有一个节点,那么这一层的所有节点只能连到那个唯一的节点,否则分为两棵树不同的构造:
- 所有点都连到上一层的第一个节点
- 第一个点连到上一层的第一个节点,其它点连到上一层的第二个节点。
时间复杂度:\(O(n)\)
B. GCD of Polynomials
题目描述:将求两个数的公因数的辗转相除法拓展到求两个多项式的公因式上去。给定一个数\(n\),求两个多项式,使得该多项式的系数的绝对值小于等于\(1\),且运用了\(n\)步辗转相除。
solution
手工计算前几项可以发现:
\[p_0=1, p_1=x\]
\[p_{n+1}=xp_n \pm p_{n-1}\]
是加号还是减号需要判断一下,但总有一个符号能满足条件。最终的答案就是\(p_n, p_{n-1}\)
时间复杂度:\(O(n^2)\)
C. Bipartite Segments
题目描述:给定一个有\(n\)个点的无向图,满足图中没有长度为偶数的环。有\(q\)个询问,每次询问给定一个区间\([L, R]\), 问有多少个子区间\([x, y], (L \leq x \leq y \leq R)\), 使得只包含\([x, y]\)的点和它们之间的边的子图是二分图。
solution
由题目条件可以看出,该图是一棵顶点仙人掌,而且图中的环的长度都是奇数,又因包含奇环的图都不是二分图,所有由区间\([x, y]\)构成的图不能有环。
首先找出每个环中编号最大值和最小值,以此来求出对于每个点\(i\),最大的\(Rmax[i]\)使得\([i, Rmax[i]]\)没有环,这个从大到小扫一下就好了。对于每个询问,答案为\((\sum min(Rmax[i], R)-i+1)\),由于\(Rmax[i]\)是递增的,所以可以二分求出最大的\(j\),使得\(Rmax[j] \leq R\),\([L, j]\)可由部分和求出,后面的直接用求和公式就好。
时间复杂度:\(O(qlogn)\)
D. Weighting a Tree
题目描述:给定一个无向连通图,每个点都有一个值\(c_i\),\(c_i\)的奇偶性与\(i\)的度相同,现给每条边添加一个边权,使得每个点所连的边的边权之和等于\(c_i\),求一种方案或无解。
solution
考虑两种情况:
- 该图是一个二分图。如果二分图的两边的\(c_i\)之和不同,则无解,否则随便找出一棵生成树,令不在树上的边权为\(0\)。随便找一个点为根,然后从叶子节点开始给边赋值即可。
- 该图有奇环。随便找出一个奇环,然后整个图随便找一棵生成树,令不在树上的边权为\(0\)。随便找一个在之前找的奇环里的点为根,然后从叶子节点开始给边赋值。最终有可能根的\(c_i\)是不满足的(满足的话直接输出答案即可),记当前与根相连的边权和为\(sum\)。找出在环中的与根相连的边,将该边的权值加\(x\),然后沿着奇环将边权\(-x,+x,-x, ..., +x\)交替运算,其中\(x=\frac{c_i-sum}{2}\)(这里一定能整除)。这样除了根,在环中的点所连的边的边权总和不变,而与根相连的总和增加了\(c_i-sum\),使得根满足条件。
时间复杂度:\(O(n)\)
E. Cyclic Cipher
题目描述:现有一个方法来加密一个长度为\(n\)的序列\(a_i\),为加密这个序列,我们会选择一个密钥\(b_i(0\leq i<n)\)。\(b_i\)有一个特点,那就是它每一个循环置换的数组都是线性无关的,也就是说,不存在一组非零系数,使得\(\sum_{i=0}^{n-1} x_ib_{(k-i)mod(n)}=0\)对于所有的\(k\)都成立。加密过程为:
\[c_i=\sum_{k=0}^{n-1}(b_{(k-i) mod (n)}-a_k)^2\]
现给出\(c_i,b_i\),求出所有满足的\(a_i\)
solution
观察\(c_i, c_{i-1}\):
\[c_i=\sum_{k=0}^{n-1}(b_{(k-i) mod (n)}-a_k)^2\]
\[=\sum_{k=0}^{n-1} (b_{(k-i) mod (n)}^2 - 2a_kb_{(k-i) mod (n)} + a_k^2)\]
\[c_{i-1}=\sum_{k=0}^{n-1}(b_{(k-i+1) mod (n)}-a_k)^2\]
\[=\sum_{k=0}^{n-1} (b_{(k-i+1) mod (n)}^2 - 2a_kb_{(k-i+1) mod (n)} + a_k^2)\]
第一项是\(\sum b_i^2\)(两个式子只是循环置换了而已,本质都是平方和), 第三项是\(\sum a_k^2\), 只有第二项是不一样的。因此
\[c_i-c_{i-1}=-2\sum_{k=0}^{n-1} a_k(b_{(k-i) mod (n)} - b_{(k-i+1) mod (n)})\]
设\(b'_i=b_i-b_{i-1}, c'_i=\frac{c_i-c_{i-1}}{2}\),则
\[c'_i=\sum_{k=0}^{n-1} a_kb_{(k-i+1) mod (n)}\]
设\(p=k-i+1\),则
\[c'_i=\sum_{p=0}^{n-1} b'_pa_{p+i-1}\]
设
\[B=\sum_{k=0}^{n-1} b'_kx^k, A=\sum_{k=0}^{n-1}a_kx^{n-k}, C=\sum_{k=0}^{n-1} c'_kx^k\]
则\(C=AB\),符合卷积运算,用FFT就能逆推出来,但在逆推过程中会出现多解,具体可参考题解,但我觉得里面的符号有点乱。
Codeforces Round #453 (Div. 1)的更多相关文章
- Codeforces Round #453 (Div. 1) 901C C. Bipartite Segments
题 http://codeforces.com/contest/901/problem/C codeforces 901C 解 首先因为图中没有偶数长度的环,所以: 1.图中的环长度全是奇数,也就是说 ...
- Codeforces Round #453 (Div. 1) D. Weighting a Tree(构造)
题意 一个 \(n\) 个点 \(m\) 条边的无向连通图中每个点都有一个权值,现在要求给每条边定一个权值,满足每个点的权值等于所有相连的边权之和,权值可负. 题解 如果图是一棵树,那么方案就是唯一的 ...
- 【做题】Codeforces Round #453 (Div. 1) D. Weighting a Tree——拆环
前言:结论题似乎是我的硬伤…… 题意是给你一个无向图,已知连接到每一个点的边的权值和(为整数,且属于区间[-n,n]),需要求出每条边权值的一个合法解(都要是在区间[-2*n^2,2*n^2]内的整数 ...
- Codeforces Round #453 ( Div. 2) Editorial ABCD
A. Visiting a Friend time limit per test 1 second memory limit per test 256 megabytes input standard ...
- Codeforces Round #453 Div. 2 A B C D (暂时)
// 从大作业和实验报告中爬出来水一发 // 补题...还是得排在写完实验报告之后... A. Visiting a Friend 题意 给定若干段行车区间,问能否从起点到终点 思路 扫描一遍,维护最 ...
- 【Codeforces Round #453 (Div. 2) A】 Visiting a Friend
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 维护最右端的端点就好. [代码] #include <bits/stdc++.h> using namespace st ...
- 【Codeforces Round #453 (Div. 2) B】Coloring a Tree
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 从根节点开始. 显然它是什么颜色.就要改成对应的颜色.(如果上面已经有某个点传了值就不用改 然后往下传值. [代码] #includ ...
- 【Codeforces Round #453 (Div. 2) C】 Hashing Trees
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 显然只有当a[i]和a[i-1]都大于1的时候才会有不同的情况. a[i] >= a[i-1] 且a[i-1]>=2 则 ...
- Codeforces Round #366 (Div. 2) ABC
Codeforces Round #366 (Div. 2) A I hate that I love that I hate it水题 #I hate that I love that I hate ...
随机推荐
- 【Java】自动获取某表某列的最大ID数
使用场景: 当需要往数据库插入数据时,表的主键需要接着已经有的数据后面进行自增.比如已经wq_customer表里,主键为TBL_ID,如果是空表,那么插入的数据TBL_ID设置为1,如果已经有n条数 ...
- 深入理解JVM一垃圾回收器
上一篇我们介绍了常见的垃圾回收算法,不同的算法各有各的优缺点,在JVM中并不是单纯的使用某一种算法进行垃圾回收,而是将不同的垃圾回收算法包装在不同的垃圾回收器当中,用户可以根据自身的需求,使用不同的垃 ...
- 原子性、内存可见性和重排序——重新认识synchronized和volatile
一.原子性 原子性操作指相应的操作是单一不可分割的操作.例如,对int变量count执行count++d操作就不是原子性操作.因为count++实际上可以分解为3个操作:(1)读取变量count的当前 ...
- Remember the Word UVALive - 3942(dp+trie)
题意: 给S个不同的单词和一个长字符串 问将其分解为若干个单词有多少种方法(单词可重复使用) 解析: dp[i]表示在这个字符串中以某个位置i为起点的 的一段子字符串 则这个子字符串若存在某个前缀恰好 ...
- Day21-Cookie
1. Cookie,有时也用其复数形式 Cookies,指某些网站为了辨别用户身份.进行 session 跟踪而储存在用户本地终端上的数据(通常经过加密).例如在某个网站上保存了用户名和密码,3个月内 ...
- 【Aizu2292】Common Palindromes(回文树)
[Aizu2292]Common Palindromes(回文树) 题面 Vjudge 神TMD日语 翻译: 给定两个字符串\(S,T\),询问\((i,j,k,l)\)这样的四元组个数 满足\(S[ ...
- CF954F Runner's Problem(动态规划,矩阵快速幂)
CF954F Runner's Problem(动态规划,矩阵快速幂) 题面 CodeForces 翻译: 有一个\(3\times M\)的田野 一开始你在\((1,2)\)位置 如果你在\((i, ...
- Unity3D手游开发日记(7) - 适合移动平台的天气效果
腾讯的天涯明月刀的天气很棒,以前我也在CE3的基础上做了一个效果差不多的,但是在手机上,还是斜下固定视角的游戏,是否还需要一个天气系统? 而且没有G-Buffer的支持,很多牛逼效果实现不了,比如角色 ...
- java规范(三)-----判空----方法内的为空判断
一般我们判空或者有判断条件时 都是使用 if(条件成立){ 执行代码 } 这样的逻辑. 但是如果对象的字段很深层次时或者条件很多时就容易形成很多个{}的情况,这样就容易分不出哪个花括号属于哪部分.如下 ...
- 【bzoj4182】shopping
Portal --> bzoj4182 Solution 感天动地..几百年没在场上写点分了的感觉== (然后就写了很久qwq) 不过感觉自己想这道题怎么颇有运气成分==大概是:诶是不是快乐 ...