Codeforces Round #453 (Div. 1)

A. Hashing Trees

题目描述:给出一棵树的高度和每一层的节点数,问是否有两棵树都满足这个条件,若有,则输出这两棵树,否则输出perfect

solution
首先判断什么时候是perfect:当不存在相邻两层的节点数均大于\(0\)时,输出perfect
接下来就是构造的问题。若上一层只有一个节点,那么这一层的所有节点只能连到那个唯一的节点,否则分为两棵树不同的构造:

  1. 所有点都连到上一层的第一个节点
  2. 第一个点连到上一层的第一个节点,其它点连到上一层的第二个节点。

时间复杂度:\(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
考虑两种情况:

  1. 该图是一个二分图。如果二分图的两边的\(c_i\)之和不同,则无解,否则随便找出一棵生成树,令不在树上的边权为\(0\)。随便找一个点为根,然后从叶子节点开始给边赋值即可。
  2. 该图有奇环。随便找出一个奇环,然后整个图随便找一棵生成树,令不在树上的边权为\(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)的更多相关文章

  1. Codeforces Round #453 (Div. 1) 901C C. Bipartite Segments

    题 http://codeforces.com/contest/901/problem/C codeforces 901C 解 首先因为图中没有偶数长度的环,所以: 1.图中的环长度全是奇数,也就是说 ...

  2. Codeforces Round #453 (Div. 1) D. Weighting a Tree(构造)

    题意 一个 \(n\) 个点 \(m\) 条边的无向连通图中每个点都有一个权值,现在要求给每条边定一个权值,满足每个点的权值等于所有相连的边权之和,权值可负. 题解 如果图是一棵树,那么方案就是唯一的 ...

  3. 【做题】Codeforces Round #453 (Div. 1) D. Weighting a Tree——拆环

    前言:结论题似乎是我的硬伤…… 题意是给你一个无向图,已知连接到每一个点的边的权值和(为整数,且属于区间[-n,n]),需要求出每条边权值的一个合法解(都要是在区间[-2*n^2,2*n^2]内的整数 ...

  4. 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 ...

  5. Codeforces Round #453 Div. 2 A B C D (暂时)

    // 从大作业和实验报告中爬出来水一发 // 补题...还是得排在写完实验报告之后... A. Visiting a Friend 题意 给定若干段行车区间,问能否从起点到终点 思路 扫描一遍,维护最 ...

  6. 【Codeforces Round #453 (Div. 2) A】 Visiting a Friend

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 维护最右端的端点就好. [代码] #include <bits/stdc++.h> using namespace st ...

  7. 【Codeforces Round #453 (Div. 2) B】Coloring a Tree

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 从根节点开始. 显然它是什么颜色.就要改成对应的颜色.(如果上面已经有某个点传了值就不用改 然后往下传值. [代码] #includ ...

  8. 【Codeforces Round #453 (Div. 2) C】 Hashing Trees

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 显然只有当a[i]和a[i-1]都大于1的时候才会有不同的情况. a[i] >= a[i-1] 且a[i-1]>=2 则 ...

  9. 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 ...

随机推荐

  1. iOS开发--字典(NSDictionary)和JSON字符串(NSString)之间互转

    iOS开发--字典(NSDictionary)和JSON字符串(NSString)之间互转 1. 字典转Json字符串 // 字典转json字符串方法 -(NSString *)convertToJs ...

  2. tarjan强连通分量模板(pascal)

    友好城市 [问题描述]小 w 生活在美丽的 Z 国. Z 国是一个有 n 个城市的大国, 城市之间有 m 条单向公路(连接城市 i. j 的公路只能从 i 连到 j). 城市 i. j 是友好城市当且 ...

  3. 【明哥报错簿】之【HTTP Status 500 - Servlet.init() for servlet mvc-dispatcher threw exception】

    报错:java.lang.NoClassDefFoundError: /factory/config/EmbeddedValueResolver spring或者jdk的问题,解决办法:spring3 ...

  4. 洛谷 P5078 Tweetuzki 爱军训

    题目连接 很明显,1e6的范围,要么nlgn要么O(n) nlgn的话可能会想到借助一些数据结构,我并没有想到这种做法 对于这种题,O(n)的做法要么是线性递推,要么就应该是贪心了 考虑这道题我们怎么 ...

  5. 降雨量 HYSBZ - 1067(RMQ)

    F.A.Qs Home Discuss ProblemSet Status Ranklist Contest 入门OJ Login Register 捐赠本站 Notice:1:注册本OJ方式请见ht ...

  6. 【BZOJ4540】【HNOI2016】序列(莫队)

    [BZOJ4540][HNOI2016]序列(莫队) 题面 BZOJ 洛谷 Description 给定长度为n的序列:a1,a2,-,an,记为a[1:n].类似地,a[l:r](1≤l≤r≤N)是 ...

  7. 【bzoj3173】最长上升子序列

    Portal --> bzoj3173 Solution 感觉自己需要智力康复qwq 首先题目给的这个序列肯定是一个\(1-n\)的排列,并且插入的顺序是从小到大 仔细思考一下会发现如果知道了最 ...

  8. MDK5.13新建工程步骤

    http://www.stmcu.org/module/forum/thread-600249-1-1.html 本人也是接触stm32没多久,之前用的MDK是5.1,现在用的是5.13,MDK5.0 ...

  9. Codeforces Round #423 (Div. 2, rated, based on VK Cup Finals) D 构造烟花

    D. High Load time limit per test 2 seconds memory limit per test 512 megabytes input standard input ...

  10. 安装黑苹果的config.plist

    前提条件:有mac真机.目前在测试虚拟机可行性 第一步:制作U盘启动盘 1.在 app store 下载 mac OS sierra 镜像 2.格式化 U 盘,gpt 格式 3.执行以下命令(具体名称 ...