
动态规划
文章平均质量分 52
ww140142
wwwwwww
展开
-
bzoj-3675 序列分割
题意:给出一个长度为n的序列和m次操作;每次操作选择一个地方将序列分开,得分为左一半的和乘右一半;求最大的总得分;题解:首先显然分割的顺序与得分无关,只要在那几个地方割就可以是最优解; (为什么?难道要我@PoPoQQQ来证明一下?)然后可以设状态为f[i][j],表示在前j个数里选择i个点分割的最大得分;那么转移式显然为f[i][j]=max原创 2015-06-05 22:22:27 · 827 阅读 · 0 评论 -
bzoj-4172 弹珠
题意:白板题,略去;题解:首先根据操作用Splay维护序列;注意维护之后的序列应该保证是n个的;然后就有三个数组a[i],p[i],q[i];令f[i]表示用前面的弹珠撞击第i个弹珠的最大得分;那么f[i]=max(0,-a[i]*p[j]+q[j]);(0暂时不考虑0,变形可得q[j]=a[i]*p[j]+f[i];这显然是一个斜率原创 2015-08-12 16:25:36 · 730 阅读 · 0 评论 -
bzoj-1026 windy数
题意:定义一种windy数,这个数在十进制下相邻两个数字之差至少为2的正整数;求区间[A,B]的这种数的个数;n题解:数位乱搞;首先求区间[A,B]等价于求[1,A-1]和[1,B]的答案;直接DP肯定不行,所以考虑一位一位来;定义f[i][j]为首位为j的i位的windy数有几个;sum[i]为不含前导零的i位的windy数有几个;那么对于一个数来原创 2015-07-21 11:39:19 · 1306 阅读 · 0 评论 -
bzoj-1030 文本生成器
题意:给出一个n个单词的字典,单词长度求长度为m的随机字符串中有多少个串至少包括一个单词;n题解:好久没有写AC自动机啦,如今还记得模板真是难得;然而这似乎是Trie图?总之写出来不差几句话;首先至少包括一个单词这个条件不太好弄;那就转化一下,求不含单词的字符串个数;然后就想办法处理这个;定义状态,f[i][j]表示长度为i的字符串,最后几位的状态在原创 2015-08-28 13:50:45 · 812 阅读 · 0 评论 -
bzoj-3791 作业
题意:给出一个长度为n的01序列;你可以进行K次操作,操作有两种:1.将一个区间的所有1作业写对,并且将0作业写错;2.将一个区间的所有0作业写对,并且将1作业写错;求K次操作后最多写对了多少作业;n题解:考虑每次操作的影响,显然第一次操作区间越大越好,那就将整个区间覆盖了;然后所有的01都有了一个1或者-1的权值;贪心做的话,每次操作就想让这个权值原创 2015-08-13 19:31:14 · 1046 阅读 · 0 评论 -
bzoj-2878 迷失游乐园
题意:给出一颗树或基环树,树是无向的,边有长度;一个人随机从树上某结点出发,每次随机选一条边走;走过的结点不能再走,不能走时停止;求走的期望长度;n50%的数据给出的图是树;另50%的数据图为基环树;基环树的环上结点不超过20个;题解:NOI2012的day1t1;我们先考虑50分的做法;显然是树形DP,而树形DP的奥义就是强行线性;恩就原创 2015-08-03 14:48:55 · 1048 阅读 · 0 评论 -
CodeForces-229E Gifts
题面:很久很久以前,一位老人和他的妻子住在蔚蓝的海边。有一天,这位老人前去捕鱼,他捉到了一条活着的金鱼。鱼说:“噢,老渔人!我祈求你放我回到海里,这样的话我保证给你n样礼物——任何你想要的礼物!”鱼给了老人一张礼物的清单并附上了礼物的价值。清单上的一些礼物可能会有相同的名称、不同的价值,也可能会有不同的名称、相同的价值。然而,清单上不会出现名称和价值都相同的礼物。老人可以向鱼索要清单上原创 2015-08-30 22:39:55 · 1248 阅读 · 0 评论 -
poj-3286 How many 0's?
题意:求[A,B]区间内0的个数;0题解:裸数位DP吧;令f[i][j]表示i位数以j开头含零的个数;sum[i]表示不含前导零的i位数含零的个数;然后按位分解瞎TM乱搞;注意枚举每一位可能值的时候要加上高位的零个数*10^位数;就是说前面确定了之后后面所有数都有这些零;这题还是调了半天。。。我还是太弱乱搞功底不足啊;我至今的数位DP还是原创 2015-08-04 14:17:20 · 833 阅读 · 0 评论 -
bzoj-3672 购票
题意:给出一颗n个结点的有根树,边有长度;每个点有可以购票前往长度相差不超过li的它的祖先,票的花费为pi*长度+qi;当然的,可以的选择多次倒车到达;求每个点到根的最小花费;n题解:这题真的好贴心,数据特殊情况都给你让你特判了2333;首先一条链的情况都会吧,设f[i]为i到根的最小花费,dis为到根的距离;转移方程为:f[i]=f[j]+p[i]*(原创 2015-08-31 17:26:17 · 1058 阅读 · 0 评论 -
bzoj-2151 种树
题意:给出一个n个点的环,每个点有一个有正有负的权值;现要在其中选出m个互不相连的点,使权值和最大;对于85%的数据:n对于100%的数据:n题解:论如何出一道大家都开心的题;只要给暴力85分就好啦!贪心的取可以取的最大权值肯定不行,所以考虑动态规划;对于动态规划的状态,一定要有前i个这个状态,也不能省略选了j个的记录;所以设f[i][j]为原创 2015-09-10 21:30:24 · 1855 阅读 · 0 评论 -
bzoj-1136 Arc
题意:此题为一道交互题;给出一个长度为n的序列,求长度为k的字典序最大的子序列;n题解:这道题建议去Poi官网提交;BZ不支持交互把这题弄成了sb题;在官网的内存限制是32MB,并不能存下长度为n的数组;所以这道题是一个伪在线题目;首先最基础的离线问题怎么解?从[1,n-k+1]选最大的做第一个,然后从[第一个+1,n-k+2]选第二个...选到n个原创 2015-09-17 21:55:27 · 1592 阅读 · 0 评论 -
bzoj-1133 Kon
题意:给出n个数轴上的点,每两个点有一条带权的边;现可以选择在n-1个区间中切k次,使切断的边权最大;注意同一条边被切断多次只计算一次;n题解:Poi~我的思路就是做相反的问题,之后用总和去减就好了;f[i][j]最后一次在i点切,切j次没被切到的最小边权;这个状态显然就每条边只能计算一次了;转移f[i][j]=min(f[k][j-1]+calc(原创 2015-09-17 07:42:09 · 1262 阅读 · 0 评论 -
bzoj-2276 Temperature
题意:给出n段区间[li,ri];求一个最长的连续区间串,满足存在一个不降序列Ai,且Ai∈[li,ri];1题解:感觉Poi题越来越难了。。。这sb题都错成狗。。我眼一花把范围看成了10W,然后YY了一个线段树;用线段树来维护所有点的DP值,然后直接DP乱搞;时间复杂度O(nlogn),空间复杂度O(nlogn);然后我调了一下午,发现T了;之后我原创 2015-09-23 16:58:36 · 1489 阅读 · 0 评论 -
bzoj-3131 淘金
题意:给出一片N*N的土地,每个土地上有一个金子;现在一阵风吹来,坐标为(x,y)上的金子将会到(f[x],f[y])上去;这里f[x]指x的各位数字之积;求风吹过后,选择K片土地上金子的最大和;N题解:首先我们可以发现,其实f[x]的取值范围并不大;打表之后,在12位以下的数的f[x]最多有一万多的取值;我们首先搜出来这些数,然后排序去重离散化;而原创 2015-10-27 09:00:35 · 1550 阅读 · 0 评论 -
bzoj-1042 硬币购物
题意:有四种面值的硬币ci,进行tot次购物;每次购物每种硬币有di个,问买s元的物品有几种方法;题解:硬币面值只有四种,可以猜测到算法复杂度不会很大;普通的背包无法限制di个这个条件;而将di个硬币拆开复杂度无法承受,并且一样难以统计方案;所以考虑容斥原理简化问题;去掉di的限制,令f[x]表示四种硬币购买x元的物品有几种方法;这个f数组可以在原创 2015-07-30 10:35:43 · 1094 阅读 · 0 评论 -
hdu-5313 Bipartite Graph
题意:给出一个完全二分图中的一些边,求这个完全二分图中最多还有多少条边;点数题解:BC的pre test太坑爹了!显然如果想让边数最多,两边的点数越均衡越好;考虑到给出的图可能是不连通的,我用了并查集来维护这些点集;(和图上染色的算法就差了一个反ackerman函数但是省了存边深搜的麻烦)这样处理之后,就得到了一些二分图,之后就是将这些二原创 2015-07-30 10:23:43 · 936 阅读 · 0 评论 -
bzoj-1492 货币兑换Cash (1)——平衡树维护凸包
题意:有n天和m的初始金钱,用来购买AB两种纪念券;n天里每天都有AB的价格,每天可以进行这样的操作;1.卖出手中x%的纪念券(AB分别都卖出x%);2.用x的金钱买入纪念券,买入AB券的比例在第i天为Rate i;求n天过去之后所获得的最大收益;金钱和券数均为实数;n题解:首先,虽然题中的买入和卖出都是任意数量的,但是同样的纪念券,分几天卖出得到的收原创 2015-07-11 09:37:45 · 2018 阅读 · 0 评论 -
poj-2057 The Lost House
题意:给出一颗有根树,边权均为1;一个S在根结点上,要找到在某个叶子结点上的它的房子;有的结点上有w,可以告诉S当前结点的子树上是否有它的房子;房子在每个叶子结点的概率相等,选择一种最佳的计划,来让S走的期望值最小;原创 2015-06-01 21:17:55 · 947 阅读 · 0 评论 -
poj-1947 Rebuilding Roads
题意:给出一颗树,剪去一些边将它变成一个含有m个结点的树;求减去的最小边数;1题解:显然是树形dp,考虑状态要包括当前结点信息和子树大小;就设状态f[ x ][ j ]为在以x为根的子树上,取包括x的j个点,所需要剪掉的边数;对于x的子结点y,深搜回溯之后的转移为:f[ x ][ j ]=min(f[ x ][ j-k ]+f[ y ][ k ]);原创 2015-05-31 19:10:22 · 718 阅读 · 0 评论 -
hdu-2242 空调教室
题意:给出一个结点带权的无向联通图;删除其中一条边,使原图分成两个图,并是两个图总权值差最小;求这个最小值; (无解输出"impossible")n题解:首先考虑无解的情况,就是所有点之间都有两条以上道路可达,无论删去什么都并不能改变连通性;这就是一个双联通的图,即在双联通的部分删边是不行的;那么倘若我们跑tarjan缩点,将图变成一颗树;然后原创 2015-05-30 20:32:30 · 891 阅读 · 0 评论 -
hdu-2196 Computer
题意:给出一颗树,求所有点离树上点的最大距离;n<=10000题解:因为一棵树是没有环的,所以对于某个点,其答案可能在其子树中,或者向上走到父结点,再由父结点找到最长路;这两者是不会有交叉的;所以维护子树到当前结点的最长路ma[x],和向上到父节点找到的最长路fa[x];fa[x]=ma[]+val原创 2015-05-28 20:53:16 · 561 阅读 · 0 评论 -
hdu-4521 小明序列
题意:给出n,m,求在长度为n的序列中,相邻元素间隔不小于m的上升子序列的最大长度;n,m题解:说得这么拗口,其实就是在0数据范围显然是要O(nlogn)的;实现的方法其实有很多,但是我觉得用贪心+二分查找是最简单的;更新一个b数组,b[i]表示长度为i的上升子序列中最小的末尾元素的值;很显然b数组单调递增;更新i时,用二分查找来找到比a[i]小的最后一原创 2015-04-27 19:01:33 · 855 阅读 · 0 评论 -
hdu-3507 Print Article
题意:给出n,m,求在n个数中分成任意段;每段的花销是(sigma(a[l],a[r])+m)^2;求这个最小值;题解:斜率优化入门题;然而入门并不是这么容易的(笑);我们可以很容易的得到dp方程;f[i]=f[j]+(s[i]-s[j]+m)^2其中s[x]表示x的前缀和,0O(n^2)超时;我们把平方打开可得;f[i] = f[j]+(s原创 2015-04-24 16:17:50 · 1141 阅读 · 0 评论 -
Poj-2796 Feel Good
题意:在一段长度为n的非负数列中,选出一段区间;使 区间和 与 区间最小值 的乘积最小;题解:我们考虑对于每一个数,当以它为最小值时,这个区间自然是越长越好;那么我们就向左找它可以到哪里,再向右找一遍;至于实现就是用单调栈,栈顶就是当前数的前一个比它小的数;记录每个数的L与R,然后预处理前缀和,取最大值就就好了;Hint:多组数据;该long原创 2015-04-20 22:07:49 · 986 阅读 · 0 评论 -
最佳挑水
描述: 小Y住在农村,离他的家不远有一口井,传说是小Y的祖先开掘的。虽然小Y的村子里通了自来水,但由于这口井的井水质量非常好,因此小Y家仍然喝这口井里的水。小Y非常喜欢这口井,所以他经常去挑水。 小Y的家里有n(n是偶数)只桶,这些桶虽然大小相等,但是由于很多都有些破损,所以认为它们是不同的。小Y经常挑一根扁担(当然一定是带两只空桶)去井边挑水。小Y每次去井旁都会把桶中的水装到极限(假原创 2015-04-20 18:29:47 · 968 阅读 · 0 评论 -
Poj-3420 Quad Tiling
题意:给出n和m,在一个4xn的地面上铺1x2的骨牌,求方案数;答案对m取模,多组数据;题解:这个显然就是骨牌覆盖问题嘛;状压dp搞一搞就好啦;然后我RE+TLE之后发现,n9这个就不好搞了,要用log级算法才行;于是就用矩阵乘法,做一个16x16的矩阵,表示各种状态之间的转移;初始矩阵就是a[0][0]=1,其他为0;至于用来快速幂的矩阵我用TLE原创 2015-04-10 16:53:27 · 877 阅读 · 0 评论 -
USACO 2008 Nov Gold 1.Mixed Up Cows
描述:Each of Farmer John's N (4 Gangsta cows are rebellious and line up to be milked in an order called 'Mixed Up'. A cow order is 'Mixed Up' if the sequence of serial numbers formed by their milk原创 2015-04-08 20:16:42 · 1184 阅读 · 0 评论 -
tyvj1617 grape
题意:一个数列中有n个数,正负均有;每m个中至少取a个,而至多取b个;求取出数总和减剩余数总和的最大值;题解:首先考虑取出数总和减剩余数总和的最大值就是两个取出的最大值减去所有总和all;那么我们就可以dp出n个数取出的最大值ans;然后2*ans-all就是答案;#include#include#include#define N 10001using原创 2015-04-08 08:05:36 · 888 阅读 · 0 评论 -
bzoj-3203 保护出题人
题意:在一个诡异的植物大战僵尸游戏中,给出n关;第i关队首僵尸距房门xi,两个僵尸之间间隔为d;每次在队首添加一个血量为ai的僵尸,其他僵尸不变;每关在门前放一个攻击力任意的植物,求n关放置植物总攻击力的最小值;n题解:题意叙述略诡异。。建议还是去看一眼原题;首先考虑对于每一关的答案,应该是恰好将最难打死的僵尸打死的攻击力值;令s[i]为i这个僵尸血量与原创 2015-08-09 10:23:50 · 979 阅读 · 0 评论 -
bzoj-1492 货币兑换Cash (2)——CDQ分治
题意:略见上一篇题解:方程还是那个方程f[i]=A[i] * X[j] + B[i] * Y[j];化简为Y[i]=(-A[i]/B[i]) * X[i] + f[i]/B[i]这一坨;既然这个斜率不单调,那排个序让它单调不就行了;排序之后的问题就是,在i前面更新i的点不一定可以更新i,而应该用来更新i的点说不定还在i的后面;那么这时候就是用CDQ分治解决;原创 2015-07-11 10:10:33 · 1341 阅读 · 2 评论 -
bzoj-2259 新型计算机
题意:给出一个长度为n的非负序列,将一个元素a修改为A的的代价是|a-A|;求最小的代价使序列合法 (合法的概念参照原题);1题解:这道题据说要卡O(nlogn),然而我依然选择用O(n*玄学)的算法AC了此题[滑稽];我们可以很容易的得到一个O(n^2)的算法;设f[i]为从i开始到序列末尾使序列合法所花费的最小代价,A[i]为i+a[i]+1;转移即为f原创 2015-10-27 08:32:30 · 1059 阅读 · 0 评论