codeforces
文章平均质量分 76
WA是一笔财富
这个作者很懒,什么都没留下…
展开
-
Codeforces 873D. Merge Sort 分治 + 构造
传送门:Codeforces 873D题意:给出一种特殊的归并排序,分治的方法同普通的归并排序一样,只是如果当前待排序的区间已经是有序的,就不会再继续递归了,让你构造一个会调用k次mergesort函数的序列。思路:因为我们上来就会调用一次mergesort函数,并且只要当前待排序区间不是有序的,那么在该层递归里就会调用两次mergesort,因此可以推出总调用次数一定是个奇数。然后我们递原创 2017-10-17 13:03:01 · 552 阅读 · 0 评论 -
CodeForces - 841D Leha and another game about graph 构造(dfs + 思维)
传送门:Codeforces 841D题意:给出一个连通图,并给每个点赋一个d值0或1或-1,要求选出一个边的集合,使得所有的点i要么d[i] == -1,要么dgree[i] % 2 == d[i],dgree[i]代表i结点的度数。思路:首先我们考虑一条边都不选的情况,此时所有d[i] == 0的i都满足了题目要求,此时如果有d[i] == 1的点,我们就要加一条边,我们考虑用df原创 2017-08-20 21:48:48 · 1089 阅读 · 0 评论 -
Codeforces 832 D. Misha, Grisha and Underground 倍增法求LCA
传送门:Codeforces 832D题意:给出一棵n个节点的树,然后给出m个三元组(i,j,k),将其中两个点做起点另一个点做终点,问两条路径的公共部分最大是多少。思路:很明显要求lca,我用了较为简单的倍增法求,然后就是对给出的三个点枚举终点,求一个最大值,求两条路径的公共部分的时候有思维点,需要仔细思考一下,有必要画个图思考一下两条路径的相交可能出现的情况。代码:#include原创 2017-07-25 23:18:32 · 981 阅读 · 0 评论 -
Codeforces 835 D Palindromic characteristics 区间dp
传送门:Codeforces 835D题意:给定一个字符串,定义普通的回文串为1 - 回文串,则k - 回文串满足:1. 字符串左半段等于右半段2.左右都为k - 1 回文串问给定字符串当中每种回文串的数量。思路:由定义可以推得k - 回文串一定是k - 1回文串,要求k - 回文串我们要先预处理出所有可能的回文串,定义dp[i][j]表示s[i...j]是否为回文串,容易原创 2017-08-01 20:16:33 · 335 阅读 · 0 评论 -
Codeforces 834D The Bakery 线段树优化DP
传送门:Codeforces 834D题意:给定一个序列,将其分成k段,每段的值定义为其中不同数的个数,问怎么分能使总值最大。思路:dp[i][j]表示将前j个数分成i段能得到的最大值。显然dp[i][j] = max(dp[i - 1][k - 1] + num[k, j])(1暴力枚举的话是k * n^2的,显然不行,考虑优化取max的过程,可以用线段树维护,记录每个数和它前一个数原创 2017-08-01 01:58:47 · 334 阅读 · 0 评论 -
Codeforces 817 C. Really Big Numbers 二分
传送门:Codeforces 817C题意:定义really big num为比其各位数字之和至少大s的数,问比n小的数中有多少个really big num。思路:怎么也没想到是二分啊。。主要是没想到(x-x的各位数字之和)是单调不减的。。。代码:#includeusing namespace std;#define ll long longint a[1000010];原创 2017-07-09 21:32:32 · 204 阅读 · 0 评论 -
Codeforces 822 D. My pretty girl Noora 数学+dp
传送门:Codeforces 822D题意:一场比赛有N个人,可以分成N/x,每组x人。每组的比较次数为x(x-1)/2,每组最后胜出一个人进行下一轮比赛,直到最后只剩一个人,f[N]为最后决出冠军所需的比较次数,可以通过改变x的值使f[N]改变。题目给出t,l,r。求 t^0*f(l)+t^1*f(l+1)+……+t^(r-l)*f(r) 的最小值。思路:想到了每组内的人数越少越好(应该原创 2017-07-09 20:57:24 · 305 阅读 · 0 评论 -
HDU 4857 逃生 && Codeforces 825 E. Minimal Labels 逆向拓扑序+优先队列
传送门:HDU4857思路:很容易看出来是个拓扑序,然而我用队列、优先队列、排序等等什么方法求拓扑序都wa。。正解:应该反向建图,由在后面的指向在前面的,这样每次取出来的一定是可以放在最后面的,如果同时有多个入度为0,则取编号较大的,这一过程可以用优先队列维护。虽然证明不了这样是反着做是对的,但是很简单一组数据就能证明正向做不可行:13 23 13 1答案应为3 1原创 2017-06-09 22:07:01 · 245 阅读 · 0 评论 -
Codeforces 822 C. Hacker, pack your bags! 思维
传送门:Codeforces 822C题意:给出n组l r c,定义duration为r-l+1,找出两组使其duration之和为x,并且(l,r)不相交,求c之和最大是多少。思路:一开始我按duration排序,然后二分瞎搞了半天,不是wa就是tle。。正解:将输入的端点按大小排序,然后遍历,如果是右端点就更新num数组,如果是左端点就更新答案。num[i]保存的是已经遍历原创 2017-07-09 20:27:55 · 721 阅读 · 0 评论 -
Codeforces 821C Okabe and Boxes 思维模拟
传送门:codeforces 821C题意:给定两种操作,一种是‘add x’,将x放到栈顶,一种是remove,将栈顶移除,但是移除的顺序必须是从1到n,操作过程中可以将栈内元素顺序重排,问至少重排几次才能满足移除的顺序。思路:只想到每次不满足就暴力排序。。虽然明知道会超时还是勇敢的交了一发。正解:我们完全可以将排序的过程省去,每次要是需要排序了,我们就可以将栈清空,以后再remo原创 2017-07-07 13:23:41 · 284 阅读 · 0 评论 -
Codeforces 828 D. High Load 思维+构造
传送门:D. High Load题意:构造一颗有n个节点,其中包含k个叶节点的树,并且使得距离最远的两个叶节点之间的距离最小,问最小距离是多少。思路:一开始还以为是构造网状结构,想都没想就造了个环交上去了,wa了还找不出bug来,赛后才发现只让构造n-1条边。。正解:因为除了叶节点之外题中并没有规定节点的度数是多少,因此我们可以先取一个节点当根节点,剩下的点构造k条不相交的树链,因为要原创 2017-07-12 15:42:05 · 276 阅读 · 0 评论 -
Codeforces 828 C. String Reconstruction 思维
传送门:C. String Reconstruction题意:给定n个子串,和每个子串在原串中的出现位置(每个子串可能出现多次),问字典序最小的原串是什么。思路:这题暴力3分钟就写完了,然而并不敢交,想了很长时间的优化也就想到了记录每个位置的结束点,然并卵,大数据该T还是T。正解:利用类似并查集寻根函数的思想维护区间端点,以前做过类似的题的,昨晚不知为啥脑抽就是想不起来。。PS:不原创 2017-07-12 15:27:01 · 293 阅读 · 0 评论 -
Codeforces 839B Game of the Rows 贪心
传送门:Codeforces 839B题意:有k个小队坐飞机,每个小队有a[i]人,飞机上有n排座位,每排座位有8个,定义同一排中{1, 2}, {3, 4}, {4, 5}, {5, 6} or {7, 8}. 几个座位是相邻的,问能否保证相邻的座位中没有两个不同的队伍的人。思路:先贪心的使用3、4、5、6四个座位,然后再用两边的,我是用优先队列维护的这一过程,比赛的时候傻X的一原创 2017-08-14 17:54:12 · 299 阅读 · 0 评论 -
Codeforces 839 D. Winter is here 容斥
传送门:Codeforces 839D题意:给出一个序列,求取出一个字序列,当他们的GCD大于1时,将贡献子序列所有数的gcd * 子序列的长度,问总贡献是多少。思路:感觉很像前几次的多校一个题,但是想了很久也没想出来该怎么求∑i∗C(n, i)(i >= 1)然而,其实∑i∗C(n, i) == n * ∑ C(n - 1, i - 1)(i >= 0),化成组合数的定义式立马就能看原创 2017-08-14 21:38:35 · 592 阅读 · 0 评论 -
Codeforces 732d Exams
传送门:Exams题意:有n天和m门考试,每场考试都需要一定的准备时间,每天可能能考其中一门也可能不能考试,问最短多少天能考完所有科目。明显的贪心题目,当时想到了从后往前贪心,只是没想到用二分去做,还是太水啊。#include #include #include #define M 100005using namespace std;int test[M],time[M],boo原创 2016-10-21 16:31:57 · 293 阅读 · 0 评论 -
CodeForces - 867E Buy Low Sell High 贪心 + 优先队列
传送门:CodeForces - 867E题意:有一个物品,在n天内有不同的价格,每天可以选择买入或者卖出该物品,而且只能操作一次,初始手上没有该物品,问能获得的最大利益是多少。思路:题目都告诉你了,我们肯定是要贪心的低买高卖,考虑用优先队列(小顶堆)维护这一过程,我们每次得到一个新的价格,将其和堆顶的价格比较,如果比堆顶的价格低,就直接放入堆中,如果比堆顶的价格高,就意味着我们可以提前以原创 2017-10-12 15:38:51 · 767 阅读 · 0 评论 -
Gym-100851F Froggy Ford 最短路变形 dijkstra || spfa
题意:有条宽为w的河流,两岸分别在x = 0, x = w处,河中间有n个石头。在河的左岸有一只青蛙想通过石头跳到对岸去。现在可以在河中间某个位置多加一块石头,使得青蛙在单步跳跃中的最大值最小,问应在哪里加。思路:将左岸抽象成原点,右岸抽象成目标点,原点到任意石头(x, y)的距离都是x,目标点到任意石头的距离都是w - x,任意两石头之间的距离就是他们坐标的欧氏距离,按此建图,跑一个dijk原创 2017-10-10 21:37:48 · 358 阅读 · 0 评论 -
CodeForces - 862E Mahmoud and Ehab and the function 二分(思维题)
传送门:Codeforces 862E题意:给出长为n的a序列和长为m的b序列,求.的最小值,其中0 还有q次操作,每次操作将a[l..r]区间内的数 + x, 每次操作后求一次f(j)的最小值思路:容易得到无论a序列的数怎么变化,每个位置上的数的加减性质是不会变的,即奇数位置上的数一直是加,偶数位置上的减,因此我们将f(j)的值拆成a序列的贡献和b序列的贡献两部分,无论j怎么原创 2017-10-03 22:12:35 · 266 阅读 · 0 评论 -
CodeForces - 540E Infinite Inversions 离散化 + 树状数组
题意:有一个1,2,3,4...无限序列,进行m次操作,每次交换i,j位置上的数,问操作完以后有多少对逆序数。思路:来自:点击打开链接思维点在于将没有操作过的连续序列也离散成一个点,权值为序列中数的个数,这样就可以无脑进行交换操作,然后用树状数组统计一下逆序对数就好了(注意每个点有权值)。代码:#include#define ll long long#define inf 0x原创 2017-10-02 21:15:34 · 273 阅读 · 0 评论 -
CodeForces - 859D Third Month Insanity dfs + 概率期望
传送门:Codeforces 859D题意:有 2^n 个队伍进行比赛,每次都是编号相邻的的两队伍比赛,胜出的晋级下一轮,失败的淘汰,这样n轮过后只剩一只队伍时停止。每一场比赛你都可以赌某个队伍赢,第一轮赌中了获得一分,后面每轮赌中得分翻倍,现在给出每两个队伍比赛的胜负概率,问你最大得分期望是多少。整个比赛过程其实就是一颗完全二叉树,每一轮比赛对应二叉树的一层,每一场比赛对应二叉树原创 2017-09-22 12:46:03 · 531 阅读 · 0 评论 -
Codeforces 869 E. The Untended Antiquity 二维树状数组
传送门:Codeforces 869E题意:在一个n×m的方格板上,操作1将一个矩形区域的边界上加上一圈障碍,操作2将一个矩形区域的边界上的障碍移除,操作3询问两点是否能不越过障碍互相到达。题目保证任意两圈矩形障碍不会相交。思路:很容易想到二维树状数组实现区间更新点查询,但是如果只是简单的+1,-1更新的话是无法判断出两点是否可以不经过障碍可达的。因此我们要把每一圈障碍都哈希出一个不同的值原创 2017-10-07 22:26:58 · 555 阅读 · 0 评论 -
Codeforces 868 D. Huge Strings 字符串思维乱搞
传送门:Codeforces 868 D题意:有n个01字符串,第i个操作是用第l个和第r个拼成第n + i个字符串,然后询问最大的k使得所有长度为k的01串都在这个串中出现过。思路:emmm,借鉴了杜瑜皓大佬的思路和代码风格,这题解法很多,前提是要知道一点:k的范围不会很大,甚至不会超过10。知道了答案范围这么小以后基本就可以瞎搞了,暴力,搜索,二分,STL什么的都能上。大佬的思路是原创 2017-10-07 19:41:40 · 585 阅读 · 0 评论 -
CodeForces - 859C Pie Rules DP(逆推)(思维好题)
传送门:Codeforces 859c题意:有n个物品,每个物品有不同的价值,物品按顺序分给两个人,有一块令牌,每回合拥有令牌的人拥有物品的分配权,但是该回合未获得物品的那个人会在下回合获得令牌,开始令牌在Bob手里,两个人都采取最优的策略,问最后各能获得的最大价值是多少。思路:考虑dp求解,要明确dp的状态只与是否有令牌有关,而与令牌在谁手里无关,因为不论令牌在谁手里,那个人都会尽可能的原创 2017-09-20 23:20:35 · 2634 阅读 · 0 评论 -
CodeForces - 855C Helga Hufflepuff's Cup 树形DP
传送门:Codeforces 855C题意:给你一棵树,可以染m种颜色(1~m),现在定义一种特殊颜色k,一棵树上最多能有x个特殊颜色,如果一个节点为特殊颜色k,那么他相邻的节点的值只能选比k小的颜色。现在问你一共有多少种染色的方法。思路:dp[i][j][k] 表示以i为根的子树上有j个特殊颜色结点的染色方案数,k = 0 :i结点的颜色比k小k = 1 :i结点的颜色为kk原创 2017-09-26 17:10:26 · 463 阅读 · 0 评论 -
Codeforces 842 D Vitya and Strange Lesson 线段树
传送门:Codeforces 842D题意:给出一个长度为n的序列和m次操作,每次操作将序列中所有数异或上给定的数x,然后求序列的mex。mex:给定序列中未出现的最小的非负数。思路:首先不要被题目中说的每次序列都会变化迷惑,因为异或满足结合律,因此我们只要把所有的x异或起来,就相当于对原序列和一个x求题目中的要求,假设原序列为a[i],和x异或以后得到b[i],我们要求mex(b[i原创 2017-08-30 18:03:33 · 395 阅读 · 0 评论 -
CodeForces - 839E Mother of Dragons 最大团(Bron–Kerbosch算法)
传送门:Codeforces 839E题意:给出一个图的邻接矩阵,要求给每个点赋值,使得点权和为K,并定义每条边权值为两端点点权的乘积,要求最大化边的权值和。思路:最大化边权就是要将k均分给图中的最大团中的点。证明见:http://blog.csdn.net/hzoi_ztx/article/details/77151474http://www.cnblogs.com/FxxL/p原创 2017-08-15 20:36:01 · 717 阅读 · 0 评论 -
Vladik and Memorable Trip CodeForces - 811C DP
传送门:CodeForces - 811C题意:给定N个数,将它们划分成任意多个区间,要求:相同的数要么在同一个区间内,要么不在任何区间内。问区间异或和最大是多少。思路:可以预处理出区间异或值来,也可以动态求,然后dp求一个最大值。代码:#include#define ll long long#define fi first#define se second#define pi原创 2017-05-31 20:59:41 · 300 阅读 · 0 评论 -
Vladik and Favorite Game CodeForces - 811D bfs+模拟
传送门:CodeForces - 811D题意:给定n*m的图,你输出一个方向之后,系统反馈给你一个坐标,表示走完这步之后到的位子,问怎样走能在在2*n*m步之内走到终点。起点是(1,1),终点是'F',‘*’表示不能走,游戏开始的时候,可能将U和D互换,即如果我们操作了U,但是实际是走到了D。L和R同理。思路:看完题意就被吓到了,这是什么鬼题,特别是还有ffl原创 2017-05-31 19:36:01 · 283 阅读 · 0 评论 -
CodeForces - 363D Renting Bikes
传送门:CodeForces - 363D 题意:有n个人去买车,每个人都有自己的钱,还有一定量的钱a是公用的,每个人最多买一辆车,问最多能买几辆车?买最多的车的基础上最少花多少每人私有的钱?思路:一开始我是写的纯贪心,不用别人说连我自己都觉得不对。。果不其然wa了,后来某宇巨说要二分+贪心,仔细一想好像是的,因为贪心只能用来验证买k辆车钱够不够,而不能单纯贪心的去考虑最多买多少辆车,至于原创 2017-02-24 11:34:55 · 352 阅读 · 0 评论 -
CodeForces - 365D Free Market 背包求状态数+贪心
传送门:CodeForces - 365D题意:有n种物品,每种物品有它的价值,john要和别人做交易,每次交易双方物品集合的总价值之差不能超过d,每天john只能做一笔交易,一开始john什么都没有,另一个人有所有的n种物品,问john最多能获得多大价值的物品,最少用多少天能获得最大价值的物品。思路:我刚开始做这个题就是xjb模拟加贪心,最大价值还好说,天数一直搞不定,看了题解才发现要用原创 2017-03-03 11:23:02 · 414 阅读 · 1 评论 -
Codeforces #398 div2 A-D
传送门:Codeforce #398这次比赛说来好气啊,就搞出一个A来,其实B和C都不是很难的,但是比赛的时候大家出题都很慢,我也就自然而然的认为很难了。。还是菜啊。A题没什么好说的,就是题意有点难懂,结合note能明白个差不多,直接贴上代码:#include#include#include#include#include#include#include#include原创 2017-02-20 19:37:16 · 302 阅读 · 0 评论 -
Codeforces 8VC Venture Cup 2017 - Elimination Round D.PolandBall and Polygon
传送门:PolandBall and Polygon题意:给定n条边的凸多边形,保证这种凸多边形任意三条对角线不会交于一点,然后从一顶点出发,每次走K步,然后将出发点与终点连接起来,输出此时多边形被分成的块数,重复此步骤n次。解法:个人感觉就是多画几个图找规律。。或者你的几何学的好能推出公式或规律来,我发现的规律就是每画一条对角线,增加的块数等于该对角线跨过的对角线条数+1,也等于走的K步原创 2017-01-16 16:57:55 · 528 阅读 · 0 评论 -
Codeforces Round #388 (Div. 2)D. Leaving Auction
传送门:点击打开链接题意:有有许多人参加拍卖,问当假定某些人不参加的时候剩余的人当中谁是最终的赢家,输出他的编号和最终竞价,注:每个人都不能和自己竞价,即若某人连续竞价两次,以第一次价格为准。输入数据保证竞价递增。比赛的时候根本没来及看这题。。后来补题,看懂题意感觉很简单啊,用set模拟瞎搞一发估计会超时,交上去果真超时了。。我的思想是将被去掉的人标记出来,然后按竞价从大往小找就行了,T在原创 2016-12-20 13:41:32 · 406 阅读 · 0 评论 -
Fix a Tree codeforces 698B 并查集
Fix a TreeTime Limit:2000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64uSubmit StatusDescriptionA tree is an undirected connected graph without cycles.Let's cons原创 2016-11-18 23:20:25 · 455 阅读 · 0 评论 -
codeforces 731c Socks 并查集
A - SocksTime Limit:2000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64uSubmit StatusDescriptionArseniy is already grown-up and independent. His mother decided to l原创 2016-11-16 22:53:11 · 363 阅读 · 0 评论 -
codeforces723D.Lakes in Berland(dfs)
传送门:723D。题意:用最少的步数把连通块的数量改变到指定值k,注意最外层的连通块不算。了解题意以后立马想到的就是dfs,不过实现过程却是这卡那卡,其实这个题解法和Floodfill算法很相似,不过首先要注意的就是不能在原输入数组上进行涂色修改,必须另外开辟数组涂色,其次就是因为题中要删除的连通块不只一个,所以就要记录每种涂色的颜色和数量,按数量排序后取数量少的再改变原数组中对应的符号,原创 2016-10-08 16:18:23 · 297 阅读 · 0 评论 -
codeforce 374C. Journey(dp)
传送门:C. Journey。这是一个典型的图论里的题目,解法和Bellman-Ford算法很类似,题意要求从第一个点开始在规定时间内到达最多的点,而且最后一定要在n点(题目保证在规定时间内能到达n点),用dfs的话会超时,所以应该用dp。设dp[i][j]表示经过i个点到达j点所用的最小时间,则题意变成在dp[i][n]里找最大的i就好了,外层循环遍历i的可能取值,内层循环遍历所有的边,原创 2016-10-08 12:04:17 · 323 阅读 · 0 评论 -
codeforces373#C. Efim and Strange Grade
传送门:C. Efim and Strange Grade题意:每一次可以指定任意小数位进行四舍五入,问你在规定次数之内最大能得到多少。这个题还略有一丝贪心的思想,可以从前往后找到第一个大于等于五的位置,然后从当前位置开始进行四舍五入,注意只能小数部分四舍五入,还有就是很坑的一个数据:999.999,要再往前进一位。自己写完以后又搜了一下题解,发现自己做的太麻烦了,第一:完全不用再开辟数组原创 2016-10-07 22:05:19 · 291 阅读 · 0 评论 -
Maze(codeforces377a)dfs,思维
传送门:377a。题意:给你一个图,将k个‘.’变成‘X’,使剩下的‘.’仍然连通,图中还有‘#’。思维关键点是既然他要你修改k个,那么假设一开始有s个,则dfs搜索到k-s个的时候停止就好了,没被搜索到的就是要修改的,这样可以保证剩下的必定连通。#include #include #include int n,m,k;int go[4][2]={0,1,1,0,0,-1,-1,0原创 2016-10-15 20:21:01 · 641 阅读 · 0 评论 -
Codeforce div2 #401 E. Hanoi Factory
传送门:E. Hanoi Factory题意:给定n个空心圆柱形砖块和他们的内径外径以及高度,要把他们摞到最高并且满足上面的外径一定要小于等于下面的外径,上面的外径要大于下面的内径。思路:赛后补的这个题,看完题后觉得是DP,看这个题的tag也有dp,但是想不出具体该怎么转移状态来,最终还是向题解妥协。很简单的一种思路是用栈去贪心的保存所用的砖块,先按外径排序,外径相等的话内径较大的在前面,原创 2017-02-26 20:12:26 · 332 阅读 · 0 评论