上一页 1 ··· 10 11 12 13 14 15 16 17 18 ··· 21 下一页
摘要: 此题就是1227 的弱化版。 画个图或者稍微证明一下就能够知道,一定不会超过一次变换。 那么我们只需要统计有多少个白点会变黑,换句话说就是有多少个白点上下左右都有黑点。 离散化横坐标,因为没有黑点在的列是没有任何意义的,对答案也没有贡献。 然后处理每一行,对于每一行,维护一个BIT也就是哪些点会产生 阅读全文
posted @ 2017-03-25 21:55 free-loop 阅读(217) 评论(0) 推荐(0) 编辑
摘要: 由于答案具有单调性,考虑二分答案并验证。 如果能凑齐x堆,因为每个joke在一个牌堆里最多只能用一次,则至多只能用min(x,m)个joke. 对于每个牌,如果这个牌的总数小于x,用joke补齐剩下的,如果能补齐那么一定能组成x堆。 简单证明: 补齐完后的牌堆里每用joke一个,一定能在其他牌里面凑 阅读全文
posted @ 2017-03-25 20:45 free-loop 阅读(271) 评论(0) 推荐(0) 编辑
摘要: 如果考虑每一行的状态的话,是会有后效性的,解决办法就是改变状态的表示。 注意到每一行只能放0个,1个,或2个炮。那么可以依据这个转移来定义状态。 定义dp[i][j][k]表示前i行有j列0个炮,k列1个炮,m-j-k列两个炮的方法数。 则转移方程是显然的。我们剩下的只需要记忆化搜索一下即可。 # 阅读全文
posted @ 2017-03-25 20:25 free-loop 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 题目实际上是求环套树森林中每个环套树的直径。 对于环套树的直径,可以先找到这个环套树上面的环。然后把环上的每一点都到达的外向树上的最远距离作为这个点的权值。 那么直径一定就是从环上的某个点开始,某个点结束的。 把环拆成链,定义dp[i]表示第i个点为结束点的最远距离,显然有dp[i]=val[j]+ 阅读全文
posted @ 2017-03-24 21:09 free-loop 阅读(271) 评论(0) 推荐(1) 编辑
摘要: 问题一:是否存在一个最小代价路径切断方案,其中该道路被切断? 问题二:是否对任何一个最小代价路径切断方案,都有该道路被切断? 现在请你回答这两个问题。 最小割唯一性判定 jcvb: 在残余网络上跑tarjan求出所有SCC,记id[u]为点u所在SCC的编号。显然有id[s]!=id[t](否则s到 阅读全文
posted @ 2017-03-23 18:13 free-loop 阅读(596) 评论(0) 推荐(0) 编辑
摘要: 这题类似于1787,最后的节点一定是两点的LCA,这里也就是两个字符串的最长公共前缀。 # include <cstdio> # include <cstring> # include <cstdlib> # include <iostream> # include <vector> # inclu 阅读全文
posted @ 2017-03-23 17:20 free-loop 阅读(219) 评论(0) 推荐(0) 编辑
摘要: 转换成抽象模型,就是要求一棵树(N个点,有N-1条边表示这个图是棵树)中某一点满足给定三点a,b,c到某一点的距离和最小。那么我们想到最近公共祖先的定义,推出只有集合点在LCA(a,b)、LCA(a,c)、LCA(b,c)中,才能保证距离和最近。 # include <cstdio> # inclu 阅读全文
posted @ 2017-03-23 17:02 free-loop 阅读(182) 评论(0) 推荐(0) 编辑
摘要: 如果我们直接令dp[i][j]为前i个位置第i个位置填j所产生的逆序对的最少数。这样是不满足无后效性的。 但是如果发现对于两个-1,如果前面的-1填的数要大于后面的-1填的数。容易证明把他们两交换结果不会变差。 所以对于所有的-1,填的数一定是一个非递减的。 现在我们考虑每个位置对答案的贡献。显然数 阅读全文
posted @ 2017-03-23 15:34 free-loop 阅读(187) 评论(0) 推荐(0) 编辑
摘要: 如果有一块土地的长和宽都小于另一块土地的长和宽,显然这块土地属于“赠送土地”。 我们可以排序一下将这些赠送土地全部忽略掉,一定不会影响到答案。 那么剩下的土地就是长递减,宽递增的。令dp[i]表示购买前i个土地的最小代价。 显然有dp[i]=min(dp[j]+ku[i]*ch[j+1]).(j<i 阅读全文
posted @ 2017-03-21 16:18 free-loop 阅读(160) 评论(0) 推荐(0) 编辑
摘要: 很容易想到直接排序然后DP。令dp[i]为到达i点的最大收益,则有dp[i]=max(dp[j]-(xi-xj)^2-(yi-yj)^2+v[i]).(j<=i,xj<=xi,yj<=yi)。 时间复杂度为O(n^2).显然超时。 考虑到转移的特性。假设在计算dp[i]的时候,j,k在同一列且xj< 阅读全文
posted @ 2017-03-20 17:23 free-loop 阅读(200) 评论(0) 推荐(0) 编辑
上一页 1 ··· 10 11 12 13 14 15 16 17 18 ··· 21 下一页