递推与动归
Eirlys_North
这个作者很懒,什么都没留下…
展开
-
bzoj 1863 二分+递推
题意:n个人围成一个环,每个人要求有ai种不同颜色的勋章且与相邻的两个人不能有同种颜色的勋章,问最少准备多少种颜色一个骗分的方法: ans=max{a[i],a[i mod n+1]} 其实这并不是骗分,当n是偶数的时候,这个东西就是正解 ∑(っ °Д °;)っ好吧,正经的题解是二分,这种环的限制和左右不同的限制的一般套路就是按照一个方向的顺序,贪心着从1推到n,然后判断n和1是否原创 2017-03-05 19:58:52 · 321 阅读 · 0 评论 -
bzoj 1613 dp
题意:n分钟,每分钟可以选择跑di米同时疲劳加1或者一直休息同时恢复疲劳减1,但要一直休息到疲劳值为0。在疲劳值为0的时候休息,疲劳值不变,开始时疲劳值为0。要求结束时疲劳值为0,求最多能跑多少米很容易的dp呀,O(n*m):f[i,j]表示第i分钟的疲劳值为j时最多跑多少米转移:f[i,j]=f[i-1,j-1]+d[i] f[i,0]=f[i-1,0]原创 2017-03-09 15:02:23 · 320 阅读 · 0 评论 -
bzoj 1003 dp+spfa
题意:m个码头,每天从1号码头到m号码头,有些码头在某些天是不能经过的,每次修改路线要花cost,求n天最小总成本,总成本=n天经过权值和+修改路线次数*cost跑n^2遍spfa预处理出第i天到第j天从1号码头到m号码头的最短距离t[i,j]对于第i天,我们有两种选择(1)从第一天开始就不改变航线(2)从第j天开始改变航线一直保持到第i天即f[i]=min{t[1,i]*i,原创 2017-03-10 20:46:35 · 271 阅读 · 0 评论 -
bzoj 1609 简单dp
题意:n个数,要求从形成单调不减或单调不增的序列,求最少改变多少个数用f[i,j]表示第i头牛编号为j时的最小修改次数因为正反均可,所以做正反两遍取min转移方程 :从左到右 :f[i,j]=min{f[i-1,k] + (a[i] != j)} (k从右往左: f[i,j]=min{f[i+1,k] + (a[i] != j)} (jvar n,t1,t原创 2017-03-10 22:57:26 · 317 阅读 · 0 评论 -
bzoj 1616 dfs 或 dp
题意:n*m的网格,有一些障碍点不能通过,起点为(r1,c1),要求在经过T秒后,恰好在(r2,c2)。T秒内可以多次经过(r2,c2)但是第T秒时必须恰好在(r2,c2),1s移动一个单位长度,求有多少种满足条件的移动方案由于T不超过15,一眼看过去dfs嘛然后无脑dfs就华丽丽的TLE了加一个剪枝:一个点到(r2,c2)的最少移动时间为 abs(r2-x)+abs(c2-y) ,原创 2017-03-11 16:19:58 · 380 阅读 · 0 评论 -
bzoj 1668
题意:n*m的矩阵,从(1,1)出发,只能向(i,j+1)、(i-1,j+1)、(i+1,j+1)的格子前进,每个格子有一个权值,求到(n,m)的最大权值和简单dp,注意要求从(1,1)出发,所以有的点是走不到的,更新的时候判断一下即可var n,m :longint; i,j :longint;原创 2017-03-11 18:05:04 · 417 阅读 · 0 评论 -
bzoj 1222 奇怪的dp
题目:某加工厂有A、B两台机器,来加工的产品可以由其中任何一台机器完成,或者两台机器共同完成。由于受到机器性能和产品特性的限制,不同的机器加工同一产品所需的时间会不同,若同时由两台机器共同进行加工,所完成任务又会不同。某一天,加工厂接到n个产品加工的任务,每个任务的工作量不尽一样。你的任务就是:已知每个任务在A机器上加工所需的时间t1, B机器上加工所需的时间t2及由两台机器共同加工所需的时间t3原创 2017-03-13 14:47:39 · 415 阅读 · 0 评论 -
bzoj 2023 && bzoj 1630 dp+滚动数组
题意:n个数,共分为m种,求选出k个数的不同方案(在忽略顺序不同的前提下当且仅当方案内有一个数不同即为不同方案)f[i,j]表示选前i种数,选出j个数的不同方案f[i,j]=sigma(f[i-1,k]) ( max(j-w[i],0)显然O(n^2m)的复杂度是不可以的,所以我们用前缀和优化一下时间复杂度就变成了O(nm)然后f[i,j]直接开数组空间也是会超的,所以滚动数组处原创 2017-03-24 23:30:30 · 426 阅读 · 0 评论 -
bzoj 1046 dp
题意:给定序列ai,m个询问,每次询问是否存在长度问len的上升子序列,如果存在多个输出位置字典序最小的那个判断是否存在长度为len的上升子序列只需要判断len与最长上升子序列的大小即可对于这种最后要求字典序最小的答案自然是尽量把字典序小的放前面那么我们就需要判断当前位置能否放在答案里也就是以当前位置开始的最长上升子序列的长度是否不小于当前所需要的长度也就是需要求出每个位置原创 2017-05-02 17:18:16 · 518 阅读 · 0 评论