CF
Facico
生命是闪耀的此刻,不是过程,就像芳香不需要道路一样。
展开
-
【CF 662B】Graph Coloring
Description现在你有一张无向图包含n个节点m条边。最初,每一条边都是蓝色或者红色。每一次你可以将一个节点连接的所有边变色(从红变蓝,蓝变红)。 找到一种步数最小的方案,使得所有边的颜色相同。Solution一开始看到这题,之前好像做过类似的题目,不过是在序列上的…… 想了半天,啊,每个点最多只会被翻转一次:为什么呢,翻转两次会与不翻转的情况一样,翻转三次会与翻转一次的情况一样,最终翻奇原创 2016-07-20 20:33:16 · 1138 阅读 · 0 评论 -
【CF 578D】LCS again
Description现在有一个长度为n的串S,其中每一个字母都是前m个小写字母 计算有多少个不同的长度为n的T(其中T也是由前m个小写字母组成),并且S与T的LCS为n-1 LCS就是同时存在于S和T的最长子序列Description很眼熟的题目,但是不会做。 题解给了一个不用DP的机智做法。 我们现在采取的策略是,用算重方案数减去重复的方案数。 我们考虑三个条件: 1、取出哪个字符原创 2016-07-20 21:04:33 · 1737 阅读 · 3 评论 -
【CF 666B】World Tour
DescriptionCicasso是一个著名的雕塑家。 现在他想去城市之间旅游,他是一个聪明的人,所以从一个城市到另一个城市他只会走最短路。他想游览全国的风景,所以他想走的路的总长度尽量长,但是经费有限,他只能去四个城市,而且这四个城市不能重复(在途中经过的城市不计算,例如 ,他要去的四个城市有上标,[1, 5, 2, 4],这样是合法的) 注意,道路是单向路,并且距离都为1。Solution原创 2016-07-20 21:15:50 · 1062 阅读 · 0 评论 -
【CF 583C】
DescriptionSolution很明显的,答案数组里面最大的数就是输入数组里面最大的数,答案数组里面的次大数就是输入数组里面的次大数,那么按照这个思路想,除了gcd(最大数,次大数),那么答案数组里面第三大的数就是第三大数…… 用一个map来计算一个数的出现次数。 每次找到这个大数,把它与当前答案序列上两两的gcd的影响去掉(次数-=2),然后继续找就可以了。Code#include<io原创 2016-08-15 21:58:12 · 1096 阅读 · 0 评论 -
【CF 706E】Working routine
Description题意就是一开始给出一个n*m的矩阵,然后每次把这个矩阵中的两个子矩阵的所有值交换,这两个子矩阵不能相交。输出最后矩阵的形态。Solution先考虑交换两个序列先考虑交换两个序列[l,r],[l1,r1]的所有值,就算交换了[l,r]里面的数还是相邻的,所以我们考虑维护每个点的右边那个节点是什么,每次交换的时候只用改4个值(l左边,r,l1左边,r1)他们的右边都要修改一下。原创 2016-08-18 22:09:34 · 1197 阅读 · 0 评论 -
【CF 534F】Game
DescriptionSolutionCF上是输出任意一个方案,这题改成了输出方案数。 其实用一个六维DP很显然的。但很麻烦。 考虑优化一下暴搜。 以为行数最多只有5行,所以可以枚举每列的状态然后再判断行的状态。 所以要先预处理每列要使值为x的所有状态。 然后把得出的一行的状态hash一下,记忆化一下,设f[x][y][z]表示做到第x列,x-1列的状态是y,现在的hash值是z,如果这个原创 2016-08-19 23:13:56 · 1083 阅读 · 0 评论 -
【CF 311E】
DescriptionSolution网络流一看就知道是网络流。最小割往网络流的方向去想,答案=所有的赞助-不要的赞助-喝茶的费用-牛变性的费用。 让不要的东西最小,就是经典的最小割模型。连边因为有牛还有人,所以要建立牛的点,还要建立人的点。 根据上面的想法,我们先解决牛的变性问题: 如果一头牛是雄性的,那么我们把S向i连一大小为变性的费用(bian[i])的边,如果割掉了这条边表示我让这头牛原创 2016-08-12 22:16:01 · 1656 阅读 · 0 评论 -
【CF 513F2】
Description神犇ddddddpppppp勤奋好学,经常会找Fanvree大神问问题。 终于有一天,Fanvree忍无可忍(因为dp问的问题在他看来太无聊),他决定躲在某个机房让dp无法找到他。 所有的机房在一个二维平面上,可以视为一个网格图,每个网格就代表一个机房或者是杂物房。 为了不被dp发现,Fanvree找来了小伙伴帮助他。其中有A个男生,B个女生,和小标。如果每一个男生都有一原创 2016-08-13 19:59:14 · 1116 阅读 · 0 评论 -
【51Nod 1472&&CF 549F】取余最大值
Description有一个长度为n的数组a,现在要找一个长度至少为2的子段,求出这一子段的和,然后减去最大值,然后对k取余结果为0。 问这样的子段有多少个。 样例解释:下标从1开始,对应的三个区间为[1:3],[1:4],[3:4]Solution很有意思的一道题目。 首先,我们做最大值,很容易想到,找到所有的最大值,然后去扩展区间,可以用O(n)预处理。出l,r数组。 如果最大值为a,那原创 2016-09-22 17:12:20 · 1121 阅读 · 0 评论