codeforces
Lzed
我好菜啊
展开
-
codeforces #371(Div2)题解
A. Meeting of Old Friends求两个区间的重叠部分的大小,先把两个点排一下序好处理一点,然后判断两个区间的位置就好了 #include <iostream>#include <cstring>#include <stack>#include <vector>#include <set>#include <map>#include <cmath>#include <原创 2016-09-14 20:03:34 · 598 阅读 · 0 评论 -
Codeforces738E-Subordinates(贪心+构造)
题目链接http://codeforces.com/contest/738/problem/E思路所有员工的上下级关系构成一棵树,假设一个员工他有x个superior,那么他就在这棵树的x + 1层,则1, 2, 3, ……, x层至少存在一个员工 我们先不考虑0,那么就将这道题转化成了:我们先将原来的序列排序,得到一个LIS,现在我们可以改变若干个数,使这个序列变成连续的LIS(即任意两个相邻的原创 2016-11-23 15:30:37 · 416 阅读 · 0 评论 -
Codeforces742C-Arpa's loud Owf and Mehrdad's evil plan(强连通分量+LCM)
题目链接http://codeforces.com/contest/742/problem/C思路C的题意当时没读懂= =其实就是求一个数x,使对图中的所有点,a出发经过x能到b,b再经过x能回到a。其实就是能成环首先判断无解的情况: 对于图中的所有点,有且仅有一条出边,那么如果能成环,那么将有且仅有一条入边,若不满足,则无解 有解情况讨论: 如果环为长度为k的奇环,那么得经过k(只能回到自己原创 2016-12-10 00:52:29 · 625 阅读 · 0 评论 -
Codeforces742E-Arpa’s overnight party and Mehrdad’s silent entering(构造+二分图染色)
题目链接http://codeforces.com/contest/742/problem/E思路二分图染色 建图: 首先,男女朋友之间肯定连一条无向边 然后,考虑相邻的三个人,他们之间必须有两种食物,即有两人之间颜色不同,我们考虑在2i和2i + 1之间连一条边,然后跑二分图染色,得到的结果就是可行解 这样建图并进行二分图染色后一定有解(因为对图中的每个连通块,首先点数为偶数:因为如果包含原创 2016-12-10 01:13:37 · 965 阅读 · 0 评论 -
Codeforces743C-Vladik and fractions(构造)
题目链接http://codeforces.com/contest/743/problem/C思路要使2n=1x+1y+1z\frac{2}{n} = \frac{1}{x} + \frac{1}{y} + \frac{1}{z}且x≠y≠zx \neq y \neq z 那么我们可以考虑令z=nz = n 接下来就只需要构造1n=1x+1y\frac{1}{n} = \frac{1}{x} +原创 2016-12-17 23:35:15 · 340 阅读 · 0 评论 -
Codeforces743D-Chloe and pleasant prizes(树形dp)
题目链接http://codeforces.com/contest/743/problem/D思路要求的就是在树上找两个不相交的子树A和B,并且子树和A + B最大 首先,第一步肯定是将无根树转为有根树 然后,我们考虑先单独求对于每个节点i,以i为根节点的最大子树和 状态表示 d[u][s]d[u][s]: 当前节点为u,选中状态为s的最大子树和(s = 0代表当前节点不选,s = 1原创 2016-12-17 23:53:37 · 291 阅读 · 0 评论 -
Codeforces748D-Santa Claus and a Palindrome(贪心,构造)
题目链接http://codeforces.com/contest/748/problem/D思路只要值大于0,那么一定对我们的结果有贡献,那么尽可能的去贪心 首先,不是回文串的字符串我们必须找到它对称的字符串,一起放两边。是回文串的字符串,可能用两个放两边,也可能选出一个放中间。 我们用rem来保存放中间的那个回文串的值,oth保存放两边的回文串(如果其中有一个回文串的值小于0)的小于0的那原创 2016-12-27 13:52:52 · 479 阅读 · 0 评论 -
Codeforces750C-New Year and Rating(二分+模拟)
题目链接http://codeforces.com/contest/750/problem/C思路二分初始分数x,对初始分数x进行合法性判断即可 注意边界条件的判断,以及当时二分边界写跪了被hack了。。二分左端点可以是负值代码#include <bits/stdc++.h>using namespace std;inline int in() {int x; scanf("%d", &x); r原创 2016-12-31 14:05:29 · 445 阅读 · 0 评论 -
Codeforces750D-New Year and Fireworks(bfs)
题目链接http://codeforces.com/contest/750/problem/D思路其实可以直接暴力的,虽然n有30那么大,状态可以达到2302^{30},但是每次生成的节点最多向左边扩展5个,因此,其实向左最大扩展150个,向右最多150个,所以格子最大300∗300300 * 300, 然后每个节点最多向8个方向扩展,并且对每个节点可以走的步数(tit_i)最大为5,于是总得状态为原创 2016-12-31 15:23:29 · 607 阅读 · 0 评论 -
Codeforces 764C - Timofey and a tree(dfs)
题意给一棵树,树上每个节点都有颜色,现在要求删掉一个点,在删掉这个点后,剩下的所有子树,每个子树上的所有点颜色相同。思路缩点。 我们将树上相连的,并且颜色相同的点缩成一个点。在缩点重新建图后,假设重新建图后有tot个点,那么一定要有一个点满足度为tot - 1(即这个点和其他所有点相连并且其他点互不相连)。代码#include <bits/stdc++.h>using namespace std;原创 2017-02-03 01:02:04 · 296 阅读 · 0 评论 -
Codeforces 803C - Maximal GCD(贪心)
题目链接http://codeforces.com/contest/803/problem/C题意给一个数n和一个数k,要求把n分成k个数a1,a2,...aka_1,a_2, ...a_k的和,并且这k个数严格递增,并且使划分出来的这k个数的GCD最大,求划分方案。思路a1+a2+...+ak=na_1 + a_2 + ... + a_k = n 假设其最大的gcd为x,那么就有:x⋅p1+x⋅原创 2017-05-04 00:04:53 · 468 阅读 · 0 评论 -
Codeforces 803D - Magazine Ad(二分)
题目链接http://codeforces.com/contest/803/problem/D题意字符串分成最大k行,使最大的那一行长度尽量小。 划分要求:空格或者-思路二分 二分一下每行最大多长,然后判断即可。代码#include <bits/stdc++.h>using namespace std;inline int in() {int x; scanf("%d", &x); return原创 2017-05-04 00:08:08 · 328 阅读 · 0 评论 -
Codeforces738D-Sea Battle(贪心)
题目链接http://codeforces.com/contest/738/problem/D思路假设开始时有tot个点可以放船,只需要将可以放船的位置减少到a - 1个,那么此后总能射击成功 可以贪心的去想这个问题,要使无论如何都能成功,那么可以假设开始时的tot最大, tot最大的情况及就是所有船连着放在一起(中间如果有空位,明显不是最优)然后去射击掉tot - (a - 1)个位置即可代码#原创 2016-11-22 22:12:56 · 389 阅读 · 0 评论 -
Codeforces738C-Road to Cinema(二分答案+贪心)
题目链接http://codeforces.com/contest/738/problem/C思路首先二分一下汽车需要的最少装油量g,然后判断g是否合法 判断方法:贪心 因为在每个加油点加油不花费任何时间和金钱,因此其实每个加油点的作用是将线段划分为若干段,只需要判断每段是否满足即可 对于汽油量不够或者足够一直加速很好判断,只需要判断得加速一段时间再匀速一段时间的即可,对于一段,设长度为L,原创 2016-11-20 21:02:05 · 510 阅读 · 0 评论 -
Codeforces #370(div2)题解
A. Memory and Crow列个公式推一下就可以了#include <iostream>#include <cstring>#include <stack>#include <vector>#include <set>#include <map>#include <cmath>#include <queue>#include <sstream>#include <ioman原创 2016-09-14 12:37:42 · 406 阅读 · 0 评论 -
Codeforces731C-Socks(并查集)
题目链接http://codeforces.com/contest/731/problem/C思路只要两只袜子同时穿,那么就放进一个集合里面,最后统计一下每个集合里面出现颜色最多的,这样这个颜色就可以不改变,这个集合里面的其他袜子全部变成这个颜色细节统计每个集合里面的出现最多的颜色的时候,如果直接用数组来统计会爆内存,于是用的数组+map代码#include <iostream>#include原创 2016-10-22 20:21:27 · 376 阅读 · 0 评论 -
Codeforces730J-Bottles(0-1背包)
题目链接http://codeforces.com/contest/730/problem/J思路0-1背包 状态表示: d[i][j][k]d[i][j][k]代表选到第i个瓶子时,已经选择了k个瓶子,选中瓶子的总体积为j时,选中的瓶子装水的最大总体积 状态转移: 选:d[i][j][k]=max(d[i][j][k],d[i−1]]j−b[i]][k−1]+a[i])d[i][j][k]原创 2016-10-25 21:49:25 · 796 阅读 · 0 评论 -
Codeforces373D-Lakes in Berland(dfs)
题目链接http://codeforces.com/contest/723/problem/D思路先对格点图跑一遍dfs,对连通分量编个号,然后把边界的点排除掉,最后统计一下就好代码#include <iostream>#include <cstring>#include <stack>#include <vector>#include <set>#include <map>#inclu原创 2016-10-04 14:56:33 · 336 阅读 · 0 评论 -
Codeforces722C-Destroying Array(线段树 or 并查集)
题目链接http://codeforces.com/contest/722/problem/C思路1. 线段树 其实就是线段树的区间并操作,对于每个节点,需要维护4个值,sumv[], suml[], sumr[], f[](分别代表当前区间的最大子区间和,当前区间的左端点到断点的区间和,当前区间的右端点到断点的区间和,以及f代表当前区间是否被分割过) 对于合并操作,见下图: 关键就是pu原创 2016-10-06 16:34:37 · 373 阅读 · 0 评论 -
Codeforces722D-Generating Sets(set + 二分答案)
题目链接http://codeforces.com/contest/722/problem/D思路最大值最小问题,显然二分 二分一下最大值的大小,然后每次去judge judge的思路:设上限为y,对于一个元素x,首先缩小到x≤yx \leq y,然后如果集合里面已经存在x了,那么x=x/2x = x / 2,直到能够插入x细节答案是在judge函数里面插入的,二分的时候如果judge(L) M原创 2016-10-06 20:33:17 · 276 阅读 · 0 评论 -
Codeforces723E - One-Way Reform(Euler回路)
题目链接http://codeforces.com/contest/723/problem/E思路首先基于下面两个事实: 1. 连通图度数为奇数的点一定为偶数个(每条边都能贡献2个度数,因此总度数一定为偶数,从而度数为奇数的点一定为偶数个) 2. Euler回路中所有点的入度都等于出度 这道题要求的就是所有边定向后入度等于出度的点,由此想到可以跑Euler回路,因为原图中存在度数为奇数的点,可原创 2016-10-07 16:08:33 · 282 阅读 · 0 评论 -
Codeforces725D-Contest Balloons(优先队列+模拟)
题目链接http://codeforces.com/contest/725/problem/D思路贪心,每次选择气球比自己多,并且飘起来需要最小气球的队伍,将气球给他 但是每个给完气球后之前比自己气球少的队伍会更新,因此用优先队列来维护每次状态代码#include <iostream>#include <cstring>#include <stack>#include <vector>#i原创 2016-10-30 16:30:57 · 284 阅读 · 0 评论 -
Codeforces687B-Remainders Game(数论)
题目链接http://codeforces.com/contest/687/problem/B思路cf题解上有证明:有解的充要条件是k|lcm(c1,c2,...,cn)k | lcm(c_1, c_2, ..., c_n) 那么只需要求得lcm(c1,c2,...,cn)即可lcm(c_1, c_2, ..., c_n)即可 首先利用素数筛法,得到所有数的一个质因子,然后进行因式分解,最后判断原创 2016-11-15 17:07:48 · 365 阅读 · 0 评论 -
Codeforces687C-The Values You Can Make(dp)
题目链接http://codeforces.com/contest/687/problem/C思路第一次遇到这种状态表示的dp,转移还是0-1背包,但是状态表示非常重要 可以这样考虑:我们有一个集合A,sum{A}=Ksum\{A\} = K,现在我们从集合A里面选出若干元素,组合一个新的集合B,另sum{B}=jsum\{B\} = j 对于初始的大集合S里面的每个元素i,我们可以做的就是:原创 2016-11-20 15:56:25 · 302 阅读 · 0 评论 -
Codeforces 803E - Roma and Poker(dp)
题目链接http://codeforces.com/contest/803/problem/E思路dp状态表示d[i][j]d[i][j],第i局得分为j是否成立转移方程这一局为?,即可能赢,输,平局:d[i][j]=d[i−1][j−1]|d[i−1][j+1]|d[i−1][j]d[i][j] = d[i - 1][j - 1] | d[i - 1][j + 1] | d[i - 1][j]原创 2017-05-04 17:01:46 · 325 阅读 · 0 评论