CODEFORCES训练记录
文章平均质量分 79
phython96
ACM退役~
展开
-
Codeforces Gym - 100917 部分题解
A.Abstract Picture Gym - 100917A 分析:由于最后刷的一笔肯定使得某一行或者是某一列均为相同的颜色。 因此我们可以在一开始找到所有的行或者列,他们的颜色全都一样,把这样的行或列加入到队列里面去。 我们处理在队列里面的行或者列:把它取出来,并且把该笔刷成的颜色全都变成’?’(即可变颜色)。然后检查是否有新的行或者列变成颜色均相同了,如果有的话,继续加...原创 2018-08-15 12:11:25 · 2659 阅读 · 0 评论 -
codefoces 939E Maximize!好题
题解 若存在一个子集s满足答案的话,则该子集一定包含集合S的最大值。 反证法证明: 假设s集合中最大的元素为x,S集合中最大的元素为X。则如果把x换成X,最大值增加了X-x,而平均值增量一定不大于X-x。 这样的话,确定了最大值,s中剩下的数一定从集合S中从小到大依次选取, 而存在一个事实:我们通过不断向集合s中添加元素,集合s的平均值会先减小,后增大。 这个...原创 2018-02-18 17:30:55 · 350 阅读 · 0 评论 -
codeforces E. Game with String 概率
题意这道题目的叙述不好理解: 给你一个字符串sss,小a和小b都知道。现在小b要把字符串的左边一段移动到最右边,生成一个新的字符串s′s′s',小a只知道s′s′s'的首字母是什么,现在小a有权利任意选择新字符串的一个位置并掀开,然后根据这2个字符来猜测新的字符串是什么。 注意!当仅通过这2个字符不能唯一确定一个字符串的话,那么就算失败。 求小a的胜率。样例解释bbaab...原创 2018-03-07 10:10:25 · 414 阅读 · 0 评论 -
codeforces E. Jamie and Tree LCA+dfs序+线段树
题解: 写起来还稍微有点麻烦。 dfs序+线段树可以维护子树的整体修改和查询。 因此,这道题我们要往子树上靠。 我们首先从1号点进行dfs遍历,顺便求出点的dfs序和深度,然后我们采用倍增的思想,可以预处理出每个点的祖先是谁。然后可以在O(log(n))" role="presentation" style="position: relative;">O(log(n))O(lo原创 2018-01-28 18:08:38 · 256 阅读 · 0 评论 -
codeforces D.MADMAX 动态规划、记忆化搜索
题意 给出一个DAG,每条边上有权重(权重是小写字母的ASCII码),现在两位同学A和B分别位于某两点上(可以相同),其中A和B轮流走,但是每人所走的边权不能变小,走到不能走为止就输。 A先走,询问最后谁会赢。题解 比较明显是一个DP,定义dp[i][j][c]表示轮到i点的人走,另一个人在j点,下一次要走的边的权重必须>=c,i点的人是否能赢。递推方原创 2018-01-30 20:01:04 · 270 阅读 · 0 评论 -
Problem G. Graph 2015-2016 acmicpc neerc 拓扑排序模拟
一道好题题目详见题目连接G graph显然模拟拓扑排序的步骤是必不可少了。假设我们当前有t个点,他们的入度均为0.我们不知道该选取哪一个。我们把这t个点按从小到大排好序(放入小顶堆),假设我们目前有k条边(k 现在问题来了,我们给前k个点加一条边,保证了这k个点不被取到,但是,我们怎么知道这条边的父节点是谁呢?没错,我们确实不知道,但是我们目前还不需要知道,所以我们打上标记,可原创 2017-10-07 11:36:05 · 323 阅读 · 0 评论 -
编译原理练习 递归下降
#include using namespace std;const int syf = (1<<31)-1;const int maxn = 40;char buf[maxn];char mp[128];char *bp;void init(){ for(int i = 0;i < 128;++i) mp[i] = i; bp = buf;}inline bool matc原创 2017-10-07 10:50:04 · 569 阅读 · 0 评论 -
codeforces Balanced Substring
B. Balanced Substringtime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputYou are given a string s consisting on原创 2017-10-13 14:19:23 · 322 阅读 · 0 评论 -
codeforces 818G - Four Melodies 费用流,压缩建图,好题
G. Four Melodiestime limit per test5 secondsmemory limit per test1024 megabytesinputstandard inputoutputstandard outputAuthor note: I think some of you might remember the problem "Two Melodies" from E...原创 2017-10-29 14:38:17 · 1330 阅读 · 0 评论 -
codeforces 831D Two Melodies dp具有启发意义
D. Two Melodiestime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputAlice is a beginner composer and now she is原创 2017-11-05 10:19:57 · 238 阅读 · 0 评论 -
codeforces 884E Binary Matrix 并查集,滚动数组
E. Binary Matrixtime limit per test3 secondsmemory limit per test16 megabytesinputstandard inputoutputstandard outputYou are given a matrix of size n × m. Each原创 2017-11-05 10:33:57 · 626 阅读 · 0 评论 -
codeforces 883J Renovation 贪心,好题,有意义
J. Renovationtime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputThe mayor of the Berland city S sees the beau原创 2017-11-05 11:00:37 · 459 阅读 · 0 评论 -
codeforces 883C Downloading B++ 枚举,贪心
Downloading B++time limit per test3 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputOnly T milliseconds left before the start o原创 2017-11-05 11:07:10 · 352 阅读 · 1 评论 -
codeforces 939C Convenient For Everybody 简直羞耻
题解 这是一道大水题,然而我卡了1个半小时都没做出来,就是因为我搞反了时区的概念,必须挂出来,警示自己!!! 首先明确时区的概念,如果一区为1时的时候,i区的本地时间为i时。 好,那么这道题就很容易了,首先得到可用时间段长度为f-s。 然后我们用固定窗口的方法,固定一个长度为f-s的窗口,框住一段和最大的子序列,记这段子序列开始的位置为beg。 我们假设在beg时区...原创 2018-02-18 17:48:35 · 723 阅读 · 0 评论 -
codeforces 932D Tree 倍增法+二分搜索
题面叙述 题目给出两种操作: 操作1是将一个权重为W的点加到树的某个节点下。 操作2是询问一个从R开始的序列的最长可能长度。 其中这个序列要这样找:从R开始,沿着祖先方向往上找,凡是权重大于等于当前序列最后一个点的要被选上,然后更新序列。权重和要最大且小于X。题解 我们设定一个数组nxt[i]表示i的祖先中,第一个权重大于等于i的权重的节点。再定义一个数...原创 2018-02-18 19:39:31 · 356 阅读 · 0 评论 -
codeforces F.F. Teodor is not a liar! 最长不降子序列
题意给出一堆线段。 询问者每次可以询问一个整数点,回答者告诉询问者这个点被多少根线段包括。 问询问者最多问多少次,还不能确定任意一个整数点都不可能被所有的线段包含。题解首先用O(n)的方法计算出来每个点被多少条线段包含。 突破点: 我们考虑什么情况下不能确定存在整数点被所有线段包括。 反向思考:当存在一个点被所有的线段包括了,那么必定有 cnt(x1)<=cnt(...原创 2018-03-08 11:22:07 · 394 阅读 · 0 评论 -
codeforces gym-101741 Subsequence Sum Queries 分治+离线
题目这里写链接内容题意给出一个最长为200000200000200000数列 给出一堆最多为200000200000200000个询问区间,问从这些区间中取出一些数使得数字之和是m的倍数,有多少种方案。其中保证1≤m≤201≤m≤201≤m≤20。题解最容易想到的方法就是倍增+dp来做。 定义f[i][j][k]f[i][j][k]f[i][j][k]表示区间[l,...原创 2018-04-07 11:10:07 · 503 阅读 · 0 评论 -
codeforces gym-101741 Cover the Paths LCA、离线询问
题目题目链接题意给出一棵树。 给出一堆路径,找出最少一个最少的点的集合,使得所有的路径都经过集合中的至少一个点。题解考虑一个路径的两个端点,从下往上最后一个能被经过的点就是这两点的LCA。 因此我们做整棵树dfs,并在回溯的时候判断当前节点是否为某路径的LCA,如果是的话,那么这个点一定要被取到,不然会至少存在一个路径不被集合的点覆盖。 取到这个点以后,需要把这个...原创 2018-04-06 19:56:40 · 285 阅读 · 0 评论 -
codeforces gym-101745 C-Infinite Graph Game 分块
题意题目链接 给出一个顶点带权无向图。 定义访问操作:访问一个点,就要把与这个点相邻的点的权值全部都加到答案里去,然后给这个顶点的权值/2。现在给出一个无穷的访问序列中的一个循环节,求最终答案的极限是多少。 注意:本题是在模意义下。题解数据范围 ≤ 100000 我们定义一个sumsumsum数组,其中sum[v]sum[v]sum[v]表示与vvv顶点相邻的所有顶点的权值...原创 2018-03-29 10:25:18 · 244 阅读 · 0 评论 -
codeforces gym-101755 D-Transfer Window 二分图匹配、递归
题目题目链接题意告诉了n名球员的交换关系,你现在拥有k名球员,你想要其他k名球员(有的在自己队里)。输出一种交换方案。题解第一步、求闭包。我们需要在原来的交换矩阵上跑可达闭包,即G[i][j]G[i][j]G[i][j]的含义是jjj是否能通过iii的一些交换得到,例如用iii交换aaa,再用aaa交换bbb,再用bbb来交换jjj。预处理闭包的时间复杂度...原创 2018-04-02 11:17:58 · 665 阅读 · 0 评论 -
codeforces gym-101741 Elevator 动态规划、单调队列
题目这里写链接内容题解注意:题目给出是按照时间给出的顺序。我们考虑第iii个人要上的楼高h[i]h[i]h[i],排在第iii个人前面的,所有要人上的楼高度≤h[i]≤h[i]≤h[i]的人都可以被合并在与第iii个人一起被传送上去。所以我们只需要考虑h[i]h[i]h[i]单调递减的序列就可以了,其它的人我们都可以删掉不看,因为它已经被合并了。例如: 一个hhh序列...原创 2018-04-07 22:01:11 · 402 阅读 · 0 评论 -
codeforces G - Almost Increasing Array 动态规划、动态开点线段树
题意给出一个序列,允许删除一个元素,并将任意元素的值修改为任意整数,问最少修改多少个元素使得序列变成严格单调递增的序列?题解这道题目很具有启发性: 不考虑删除元素,原数列各个数值减去他们下标得到一个新的序列,那么新的序列的最长不减序列就是不需要修改的元素个数len,需要修改的元素个数就是n-len即可。这道题也是这么做的,我们枚举要删除的元素下标为kkk,并且得到以元素k−1...原创 2018-03-14 13:02:37 · 298 阅读 · 0 评论 -
codeforces E. Picking Strings 构造
题目链接Picking String题意给出字符串S和T,1e5个询问,每次询问S的一段区间是否能转变成T的一段区间。 转变方式:A>BCA>BCA>BCB>ACB>ACB>ACC>ABC>ABC>ABAAAAAAAAA可以消除题解我们从以上四个条件出发推导出更加精华的条件B>AC>AAB>...原创 2018-03-14 10:19:28 · 483 阅读 · 0 评论 -
codeforces 940E Cashback 有趣的dp
题解 这么明显的一个dp,我怎么就没看出来呢?! 首先我们需要一些前提条件:任何划分出来的一个区间的长度不应该超过c。 如果这个区间长度大于c,那么设len=n∗c+klen=n∗c+klen=n*c+k,那么这个区间应该被分成n个长度为c的区间和一个长度为k的区间,因为这样的话去掉的元素数量是相同的,并且区间更小有利于较小的值不易被取到。因为每次去掉的最小值仅仅是局部最小值,...原创 2018-02-24 22:51:12 · 746 阅读 · 0 评论 -
codeforces 938E MaxHistory 组合数学
题意 给出一个长为n的序列,对于这个序列的任意一个排列,求∑fa∑fa\sum f_a的值。题解 我们枚举每一个aiaia_i然后,计算aiaia_i出现了多少次,然后把ai∗numai∗numa_i*num加入到ans里面。 考虑aiaia_i什么时候出现。 aiaia_i出现的位置前面的ajaja_j必须严格小于aiaia_i,这样aiaia_i才能被取到...原创 2018-02-21 19:57:02 · 429 阅读 · 0 评论 -
codeforces F.Fibonacci String Subsequences
题意定义F(x)为F(x-1)与F(x-2)的连接(其中F(0) = ‘0’,F(1) = ‘1’)。 给出一个长度不超过100的字符串s,询问s在F(x)的所有子序列中出现了多少次。题解数量很大的计数问题,我们首先想到的解决方案就是dp。 我们考虑F(x) = F(x-1) + F(x-2) 是由两部分构成的,我们可以分治来计算。 s[1,n]在F(x)中出现的次数由...原创 2018-03-08 22:53:19 · 455 阅读 · 0 评论 -
codeforces 938D Buy a Ticket 有初值的Dijkstra、有趣的题目
题意 给出一些城市电影票的价格,以及城市之间交通的路费,询问每一个城市怎样才能花最少的钱看到电影(看完电影还要再回来)。题解 这是一道不太难但是挺有趣的题目。 我们这样想,每个城市只需要查看票价比他更便宜的城市,来更新本城市的票价就可以了,是不是想到了Dijkstra求最短路的思路。 这样的话,我们先从票价最便宜的城市开始,从这个城市出发,更新其他所有城市的票...原创 2018-02-19 23:07:11 · 257 阅读 · 0 评论 -
codeforces 932E Team Work 高等数学求导、dp
题解 这是一道纯粹的数学求导题目。 首先我们先写出要求的公式。 ans=∑nr=1Crnrkans=∑r=1nCnrrkans = \sum_{r=1}^{n} C_n^{r}r^k 乍一看,雾草好吓人,但是学过高等数学且稍有常识的人(不是我)可以看出,这个可以由某个式子不断乘x并求导得出来。 没错,稍有常识的人又可以看出来了,这个式子就是(1+x)n(1+x)n(...原创 2018-02-19 17:38:13 · 414 阅读 · 0 评论 -
codeforces -891B Gluttony 排列,构造题
B. Gluttony time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard output You are given an array a with n distinct integers. Construct an array b by per原创 2017-11-18 16:36:20 · 942 阅读 · 0 评论 -
codeforces 888G Xor-MST Sollin算法求最小生成树,0-1异或True
G. Xor-MSTtime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputYou are given a complete undirected graph with n原创 2017-11-18 17:02:32 · 1989 阅读 · 1 评论 -
codeforces 884F 费用流,图解很清晰
代码:#includeusing namespace std;const int inf = 1e9;const int mm = 111111;const int maxn = 2999;int node,src,dest,edge;int ver[mm],flow[mm],cst[mm],nxt[mm];int head[maxn],work[maxn],dis[maxn],原创 2017-10-28 16:28:23 · 1311 阅读 · 0 评论 -
Codeforces Gym 101173 CERC 16 D & BZOJ 4790 Dancing Disks
Codeforces Gym 101173 CERC 16 D & BZOJ 4790 Dancing Disks强烈安利这道构造题目,非常有意思。这里用到的思想是归并排序!多路归并排序!我们这样想,假设6*6的网格中除了最后一个网格外,其他的凡是有元素的格子中,这些元素都是严格有序的。也就是说在每个rod上,从栈顶到栈底是严格单调递减的,那么我们可以模仿归并排序的原创 2017-08-25 12:00:15 · 335 阅读 · 0 评论 -
codefoces730C Bulmart 二分答案+贪心check && 堆维护
C. Bulmarttime limit per test1.5 secondsmemory limit per test512 megabytesinputstandard inputoutputstandard outputA new trade empire is rising in Berland. Bulma原创 2017-08-29 10:57:45 · 772 阅读 · 1 评论 -
codeforces 850B Arpa and a list of numbers
B. Arpa and a list of numberstime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputArpa has found a list contain原创 2017-09-05 20:19:06 · 523 阅读 · 0 评论 -
codeforces 848C C. Goodbye Souvenir cdq分治
C. Goodbye Souvenirtime limit per test6 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputI won't feel lonely, nor will I be sorr原创 2017-09-05 23:52:46 · 681 阅读 · 0 评论 -
binary string codeforces 862D 交互题,二分答案
D. Mahmoud and Ehab and the binary stringtime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputMahmoud and Ehab原创 2017-09-20 23:44:39 · 921 阅读 · 0 评论 -
codeforces864F Cities Excursions 图论,tarjan算法的应用
F. Cities Excursionstime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputThere are n cities in Berland. Some pa原创 2017-09-26 19:28:21 · 647 阅读 · 0 评论 -
codeforces 863F Almost Permutation 费用流 好题!
F. Almost Permutationtime limit per test3 secondsmemory limit per test512 megabytesinputstandard inputoutputstandard outputRecently Ivan noticed an array a whil原创 2017-09-26 23:22:24 · 269 阅读 · 0 评论 -
codeforces 847J Students Initiation 网络流+二份答案
J. Students Initiationtime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputSoon the first year students will be原创 2017-09-30 10:52:12 · 482 阅读 · 0 评论 -
codeforces D. Merge Sort 分治
D. Merge Sorttime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputMerge sort is a well-known sorting algorithm.原创 2017-10-13 14:22:47 · 444 阅读 · 0 评论