![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
codeforces
萌之上荡漾
这个作者很懒,什么都没留下…
展开
-
Codeforces Round #371 (Div. 2) C. Sonya and Queries
题目链接分析:01trie树,很容易就看出来了,也没什么好说的。WA了一发是因为没有看见如果数字位数大于01序列的时候01序列也要补全0。我没有晚上爬起来打,白天发现过的人极多。/*****************************************************///#pragma comment(linker, "/STACK:1024000000,1024000000"原创 2016-09-14 13:17:42 · 226 阅读 · 0 评论 -
codeforces 149D Coloring Brackets
题目链接分析: 区间dp。 开四维dp[l][r][x][y],表示在区间[l, r]中,最左边涂x,最右边涂y,的可行状态数。 当l和r的括号配对的时候,可以从[l + 1, r - 1]推导出来。配对的括号要满足给定的要求。 当l和r的括号不配对的时候,那一定能把这个区间划分成两个配对的小区间,搜索配对的两个小区间。递归搜索两个子区间。这时候l和r的两个括号没必要满足颜色不同的要求。代码原创 2017-04-14 11:21:26 · 243 阅读 · 0 评论 -
codeforces D. Bear and Tree Jumps
题目链接自己好弱啊, 比赛的时候感觉有点想法,但是思维一直非常混乱,没有找对正确的节点合并的方法- -学习了一下题解,感觉通过层次将节点分类的做法非常巧妙,自己没有想到= =在此mark一下。分析: 求总的路径长度是非常简单的,考虑每条边存在于几个点对路径中就可以了。这道题求的是每条路径⌈LK⌉\left \lceil\frac{L}{K} \right \rceil,当然,简单的求总路径就不可行原创 2017-03-20 17:24:07 · 272 阅读 · 0 评论 -
codeforces 570D Tree Requests
题目链接分析:之前学习到了一种做法,将树上的dfs序和bfs序都计算出来,主要用到bfs序。通过bfs序可以找到对应层数的所有节点,然后通过dfs序范围确定符合要求节点的范围长度,这一点可以用二分来确定左右区间范围。然后就是判断区间里的字母个数为奇的是否小于等于1。我用了数组预处理了每个字母的前缀和,在写题解的时候想到可以用int二进制表示。代码:/*************************原创 2017-02-16 22:26:56 · 251 阅读 · 0 评论 -
codeforces 660E Lomsat gelral
题目链接分析:这是一道启发式合并的题目,大致思路非常简单,就是从根节点dfs,对于每棵子树,将它子节点的信息合并到子树根节点。合并的过程中,把小树合并到大树中降低复杂度。可以利用map, s[i][j][k]s[i][j][k]指以ii为根节点的子树中,颜色jj的节点数量。cnt[i]cnt[i]记录节点ii的答案。存疑:我自己只是大致明白ff数组的作用,但是具体究竟是怎么实现的,现在还需要留一个疑原创 2017-02-16 18:31:50 · 273 阅读 · 0 评论 -
Codeforces Round #379 (Div. 2) F. Anton and School
题目链接分析:这道题的关键点是要知道一个关于位运算的式子 a+b=(a|b)−(aa + b = (a | b) - (a &b) b) 这样的话,可以有以下的推导:∑ni=1a[i]=sum\sum_{i=1}^{n}a[i] = sum,那么c[i]=∑Nj=1(a[i]+a[j])−b[i]c[i] = \sum_{j = 1}^{N}(a[i] + a[j]) - b[i],然后推出b[原创 2016-11-17 18:35:15 · 334 阅读 · 0 评论 -
Codeforces Round #375 (Div. 2) F. st-Spanning Tree
传送门分析:构造题。可以这么想:先把s,t两个点去掉,把剩下的点先并查集合并。这样会出现N+2N + 2个集合:ss, tt, NN个剩余集合。那么NN个集合中先把只能与ss或tt中一个相连的连起来,如果这样已经超出了要求,那么就不能构造。剩余的既能和ss又能和tt相连的集合就按照不超过dsds,dtdt这两个要求相连,可以则YesYes,否则为NoNo。这样有一个特殊情况:就是ss或者tt可能只有原创 2016-10-05 10:09:41 · 356 阅读 · 0 评论 -
Codeforces Round #374 (Div. 2) D. Maxim and Array
传送门分析:其实没什么好分析的。统计一下负数个数。如果负数个数是偶数的话,就要尽量增加负数或者减少负数。是奇数的话就努力增大每个数的绝对值。用一个优先队列搞一下就行了。 我感觉这道题的细节极为多,非常复杂,其实是自己智障了。。我看了一下学长菊苣的代码,好精巧。。。注释部分是他的代码/*****************************************************///#p原创 2016-10-01 15:40:44 · 302 阅读 · 0 评论 -
Codeforces Round #373 (Div. 2) E. Sasha and Array
题目链接分析:矩阵快速幂+线段树 斐波那契数列的计算是矩阵快速幂的模板题,这个也没什么很多好解释的,学了矩阵快速幂应该就知道的东西= =这道题比较巧妙的在于需要用线段树来维护矩阵,达到快速查询区间斐波那契数列和的目的。这道题极为卡常数,我TLE了不知道多少发,才在赛后过了这道题。我尝试下来,发现矩阵乘法的写法极为重要,我就是因为用了三层循环来写矩阵乘法导致了悲剧的TLE,一直卡在了第17组数据。我百原创 2016-09-27 20:30:20 · 248 阅读 · 0 评论 -
Educational Codeforces Round 14 E.Xor-sequences
题目链接分析:K很大,以我现有的极弱的知识储备,大概应该是快速幂了。。。怎么考虑这个快速幂呢,用到了dp的思想。定义dp[i][j]dp[i][j]表示从a[i]a[i]到a[j]a[j]的合法路径数。那么递推式就是dp[i][j]=∑k(dp[i][k]∗dp[k][j])dp[i][j] = \sum_k(dp[i][k] * dp[k][j])。每次进行这样一次计算,那么序列的长度就会增加一,原创 2016-09-08 21:22:26 · 252 阅读 · 0 评论 -
Educational Codeforces Round 14 D. Swaps in Permutation
题目链接分析:一些边把各个节点连接成了一颗颗树。因为每棵树上的边可以走任意次,所以不难想出要字典序最大,就是每棵树中数字大的放在树中节点编号比较小的位置。我用了极为暴力的方法,先dfs每棵树,再用了优先队列。我估计最大复杂度约在O(Nlog(N))O(Nlog(N)),理论上应该跑不过。因为再cf上做题,看见5s时限,强行上了。很侥幸,在4秒的时候过了= =。/*******************原创 2016-09-08 19:41:17 · 276 阅读 · 0 评论 -
Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined) C. Ray Tracing
我不告诉你这个链接是什么分析:模拟可以过,但是好烦啊。。不会写。还有一个扩展欧几里得的方法,见下: 假设光线没有反射,而是对应的感应器镜面对称了一下的话 左下角红色的地方是原始的N∗MN*M的方格,剩下的三个格子是镜面对称的结果。原来的点是(a,b)(a,b)的话,剩下三个点从左上到右下分别是(a,2∗N−b)(a, 2 * N - b),(2∗M−a,2∗N−b)(2*M-a,2*N-b)原创 2016-10-09 13:55:54 · 366 阅读 · 0 评论 -
Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined) D. Dense Subsequence
传送门吐槽:昨天诸事不宜,思路十分混乱,一道题也不会,真是太忧伤了。分析:其实非常好想。枚举最后一个字母,然后暴力跑一遍。 如果跑到的字母比枚举的小,一定会放进去;如果跑了MM个字母都没有比枚举的小,那么就找MM个中和枚举的字母相等的放进去,更新一下状态;如果MM个中都没有等于的,那么枚举的最后一个字母不成立。代码:/****************************************原创 2016-10-09 10:51:56 · 302 阅读 · 0 评论 -
Codeforces Round #372 (Div. 2) C. Plus and Square Root
题目链接分析:这题都过了2000了,应该很简单。。写这篇只是为了凑篇数= = 假设在第ii级的时候开方过后的数为i∗t[i]i * t[i],t[i]t[i]是第ii级的系数。那么(3t[3])2−(2t[2])≡0(mod2)(3t[3])^2 - (2t[2]) \equiv 0 (mod 2) (4t[4])2−(3t[3])≡0(mod3)(4t[4])^2 - (3t[3]) \equ原创 2016-09-19 10:44:56 · 663 阅读 · 0 评论 -
Codeforces #369 div2 D.Directed Roads
codeforces原创 2016-09-02 21:21:11 · 394 阅读 · 0 评论 -
CodeForces - 497D Gears
题目链接分析: 如果固定了A不动,那么Q点则以P为圆心,PQ为半径做圆周运动。然后B与Q的相对位置保持不变。那么B上的任意一个点D,则绕着点P+QB,以PQ为半径做圆周运动。题目变成了A是否和B上任意一个顶点画的圆相交的问题了。判断A与圆相交是板子了。同理也固定B不动,A做圆周运动判一下。代码:#include <iostream>#include <cstring>#include <cst原创 2017-05-06 14:41:14 · 1151 阅读 · 0 评论