2015年7月13日

摘要: 我们令f(i,j)表示在字符串中从i-j的回文串的分割后的最小次数,那么可以很容易的发现f(i,j)=min{f(i,k)}+1条件是从k+1到i的这几个字符串是回文串,那么才可以进行分割,这道题目唯一要注意的地方就是注意在预处理回文串的判断的时候要注意奇数串和偶数串#includ... 阅读全文
posted @ 2015-07-13 11:55 JeremyGuo 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 令dp(i,j)表示用第i个方块做底其中第j条边做高的时候所可以得到的最大高度那么显然dp(i,j)=min{dp(k,p)}+h(i,j)同时要求第k个的底面严格小于i的底面。这道题就是这样。#include #include #include using namespace s... 阅读全文
posted @ 2015-07-13 11:46 JeremyGuo 阅读(118) 评论(0) 推荐(0) 编辑

2015年6月24日

摘要: 实际上就是统计一下所有的元素一共有多少,如果是一个奇数那么肯定不能被分成两半,如果是一个偶数,那么就开一个总和的一半的背包,然后看背包最大能够装多少,如果可以刚好装满,那么说名肯定可以被分成两半,然后因为数量有限,所以搞一个多重背包,我的代码如下:#include #include... 阅读全文
posted @ 2015-06-24 15:00 JeremyGuo 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 这道题目是一个多重背包的题目,多重背包实际上就是把整个物品的件数拆分成a0∗20+a1∗21+a2∗22+...an∗2n且a=0或1这样每一次最优解实际上就是在之前的基础上进行的最优解的累加,但是发现如果物品数量不是恰好是某几个数之和,那么就会出现有几个统计不到的情况,那么只要提... 阅读全文
posted @ 2015-06-24 13:45 JeremyGuo 阅读(262) 评论(0) 推荐(0) 编辑

2015年6月23日

摘要: 这道题实际上就是先预处理每一行的最优f(i,j)表示每一行前i个粉刷j次做多刷正确的数量那么每次枚举起点位置k那么显然f(i,j)=max(f(k,j−1)+max(sum[i]−sum[j],i−j−sum[i]+sum[j]))如果说不放那么在循环之前先令f(i,j)=f(i−... 阅读全文
posted @ 2015-06-23 19:04 JeremyGuo 阅读(173) 评论(0) 推荐(0) 编辑

2015年6月19日

摘要: 简直是醉了,这道题本来想了一会儿,然后看了看数据边的数量顶天了才400然后时间最多才100那么直接用SPFA 复杂度O(nm2)就可以过了,然后注意一下特别判定是否超过INF可能有数据很极限,判断一下是否超过了INF没有才运算,我被这个小问题卡了好久。。。然后就是枚举当前连续一段的... 阅读全文
posted @ 2015-06-19 21:29 JeremyGuo 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 意思就是把所有点存下来,按照高度排个序, 然后从小到大枚举,然后判断当前的点的四个方向有没有存在经过当前点更优的情况,并且那个点的高度比当前点的高度要高如果存在就更新,因为根据大小排了序,所以不会出现不会出现一个点重复统计的情况那么复杂度是O(n2)#include #includ... 阅读全文
posted @ 2015-06-19 13:31 JeremyGuo 阅读(71) 评论(0) 推荐(0) 编辑
摘要: 就是最大矩阵和,如果直接爆搜复杂度就是O(n4)的所以进行优化,sum[i][j][k]表示在第i列到第j列的第k行的和,那么就枚举i, j然后最大子段和,然后就变成O(n3)了, 反正n只有100就过了#include #include #include using namesp... 阅读全文
posted @ 2015-06-19 13:17 JeremyGuo 阅读(111) 评论(0) 推荐(0) 编辑

2015年6月17日

摘要: 题目大意:多个询问,给出一个原始的字符串,多次操作每次要么在原串的末尾加入一个新的字符,要么询问当前的字符串中有多少个子串重复出现了至少k次实际上和大部分后缀自动机的题目差不多,根据后缀自动机的原理建完树之后实际上每一个节点到root的最路径的所有种数实际上就是每一个子串那么在每一... 阅读全文
posted @ 2015-06-17 13:36 JeremyGuo 阅读(315) 评论(0) 推荐(0) 编辑

2015年6月11日

摘要: 题目描述:就是给你多个01串当作字典然后给你另一个01串问你这个01串长度90%以上被匹配时的分段匹配的段的最大值L0(这个最大值是当前分段每一段的最小值,就是每一段长度都大于这个值,求这个值的最大值) 我看到这道题就知道要把所有的字典的串合成一个串来搞,原来弄过一个AC自动机的题... 阅读全文
posted @ 2015-06-11 22:28 JeremyGuo 阅读(216) 评论(0) 推荐(0) 编辑

导航