
DP---一般DP
forezxl
水君一枚
展开
-
BZOJ 1899 午餐 (洛谷P2577)
DPDescription上午的训练结束了,THU ACM小组集体去吃午餐,他们一行N人来到了著名的十食堂。这里有两个打饭的窗口,每个窗口同一时刻只能给一个人打饭。由于每个人的口味(以及胃口)不同,所以他们要吃的菜各有不同,打饭所要花费的时间是因人而异的。另外每个人吃饭的速度也不尽相同,所以吃饭花费的时间也是可能有所不同的。 THU ACM小组的吃饭计划是这样的:先把所有的人分成两队,并安排好每队中原创 2017-05-22 21:31:33 · 720 阅读 · 0 评论 -
BZOJ1057: [ZJOI2007]棋盘制作(洛谷P1169)
DPBZOJ题目传送门 洛谷题目传送门这是一类套路题,叫最大子矩形问题,具体可以看看这里代码:#include<cctype>#include<cstdio>#include<cstring>#include<algorithm>#define N 2005#define F inlineusing namespace ...原创 2018-02-25 09:32:01 · 229 阅读 · 0 评论 -
BZOJ1566: [NOI2009]管道取珠(洛谷P1758)
DPBZOJ题目传送门 洛谷题目传送门神奇的DP题。考虑∑a2i∑ai2\sum a_i^2的组合意义,可以发现其实是做两遍这个游戏,产生的两个序列相同的方案数。那么我们就把两次放在一起来做,f[i][j][k][t]f[i][j][k][t]f[i][j][k][t]表示第一次上面取iii个,下面取jjj个,第二次上面取kkk个,下面取ttt个。可以发现i+j=k+ti+j...原创 2018-03-29 20:58:40 · 254 阅读 · 0 评论 -
洛谷P3897 [湖南集训]Crazy Rabbit(BZOJ3663 4660 4206)
计算几何 LIS洛谷题目传送门 BZOJ3663 BZOJ4660 BZOJ4206这套题老师拿给我们考简直有毒神题根本不会做,考场上就写了个10分代码。%%%liu_runda我们通过看题解画图可以发现,当两个点的切点所对应的弧相交且不包含时才能满足题意。差不多长这样: 和[HAOI2008]下落的圆盘这道题一个套路,我们把圆上的点对应到区间上来。原问题转...原创 2018-06-02 21:30:38 · 352 阅读 · 3 评论 -
BZOJ4806 炮(BZOJ1801、洛谷P2051)
DPBZOJ4806 BZOJ1801 洛谷P2051每行每列最多只有两个炮。发现行/列都是相同的,那么记f[i][j][k]f[i][j][k]f[i][j][k]表示前iii行有jjj列放了一个炮,有kkk列放了两个炮(记0、1、2随便两个都可以)。考虑如下六种转移情况:1.当前行不放炮,f[i][j][k]=f[i−1][j][k]f[i][j][k]=f[i−1][j]...原创 2018-07-13 11:09:44 · 215 阅读 · 0 评论 -
BZOJ2298 [HAOI2011]problem a(洛谷P2519)
DPBZOJ题目传送门 洛谷题目传送门好妙的DP题我们可以把条件ai,biai,bia_i,b_i转化为ai+1,n−biai+1,n−bia_i+1,n-b_i的一段区间上。那么说真话的要么不相交,要么完全重合。f[i]f[i]f[i]表示右端点到iii时最多说真话的人。转移方程为f[i]=max{f[j−1]+min{i−j+1,sum[i][j]}}f[i]=max{f[j...原创 2018-07-13 15:08:53 · 179 阅读 · 0 评论 -
BZOJ5157 [Tjoi2014]上升子序列(洛谷P3970)
树状数组 DPf[i]f[i]f[i]表示以iii结尾的上升子序列个数。那么有f[i]=∑j<i,a[j]<a[i]f[j]+1f[i]=∑j<i,a[j]<a[i]f[j]+1f[i]=\sum_{ja[i]a[i]a[i]的f[i]f[i]f[i]的和,因为要去重,每次要减掉之前位置的f[i]f[i]f[i]。最终答案还要减掉长度为1的个数。代码:#incl...原创 2018-08-14 14:33:30 · 237 阅读 · 0 评论 -
BZOJ4903 [Ctsc2017]吉夫特(洛谷P3773)
lucas DPBZOJ题目传送门 洛谷题目传送门这道题翰爷很早以前讲过,然而当时我连lucas都不会,今天又讲到这题才听懂。要使那个式子模2&amp;amp;gt;02&amp;amp;gt;02&amp;gt;0,则每一项都必须为111。由lucas定理得最终只有四种情况:C00,C01,C10,C11C00,C10,C01,C11C_0^0,C_1^0,C_0^1,C_1^1。可以发现只有C10C01C_0^1这一个为0,...原创 2018-07-14 16:33:38 · 259 阅读 · 0 评论 -
洛谷P3953 逛公园(NOIp2017)
最短路 记忆化搜索题目传送门考场上用最短路优化一下就有60了。。。先刷一遍反图最短路求出每个点到nnn的最短路dis[i]dis[i]dis[i]。记f[i][j]f[i][j]f[i][j]表示到第iii个点,超出最短路的路程≤j\leq j≤j的方案数。搜索的时候对每条边的转移f[i][j]=∑f[v][j−d]f[i][j]=\sum f[v][j-d]f[i][j]=∑f[v][j...原创 2018-09-24 19:01:57 · 250 阅读 · 0 评论 -
BZOJ1044: [HAOI2008]木棍分割(洛谷P2511)
二分 DPBZOJ题目传送门洛谷题目传送门第一问二分后贪心即可。第二问要DP。令f[i][j]f[i][j]f[i][j]表示前iii个分成jjj段的方案数。那么有f[i][j]=∑f[k][j−1](∑p=kp&lt;ia[p]≤ans1)f[i][j]=\sum f[k][j-1](\sum_{p=k}^{p&lt;i} a[p]\leq ans1)f[i][j]=∑f...原创 2018-10-15 21:04:48 · 235 阅读 · 0 评论 -
洛谷P3891 [GDOI2014]采集资源
DP题目传送门预处理f1[i]f1[i]f1[i]表示用iii的资源能得到的最大效率。因为苦工的数量无限制,那么这就是一个完全背包。设f2[i][j]f2[i][j]f2[i][j]表示第iii时间剩下jjj的资源能得到的最大效率。那么就可以借助f1f1f1进行转移了。注意一有答案就要退出,不然会T。代码:#include<cstdio>#include<cstri...原创 2018-10-23 20:54:46 · 375 阅读 · 0 评论 -
BZOJ3875: [Ahoi2014&Jsoi2014]骑士游戏(洛谷P4042)
最短路 DPBZOJ题目传送门洛谷题目传送门很显然有f[u]=min(ku,su+∑f[v])f[u]=min(k_u,s_u+\sum f[v])f[u]=min(ku,su+∑f[v])。但是这个是有后效性的,那么就用spfa搞(也可以用类似拓扑的方法做)。每次更新一个点后把所有指向它的点都加到队列里更新即可。代码:#include<queue>#include&l...原创 2018-10-31 14:06:22 · 284 阅读 · 0 评论 -
BZOJ1296: [SCOI2009]粉刷匠(洛谷P4158)
DPBZOJ题目传送门洛谷题目传送门我连背包都不会了做两遍DP,第一遍求出每一行刷kkk次分别最多能刷对多少个格子。第二遍就把第一遍的当作分组背包来选物品就好了。设f[i][j]f[i][j]f[i][j]表示当前这行做到第iii列,刷了jjj次的最多格子数。那么有f[i][j]=max{f[k][j−1]+max{s0i−s0k,s1i−s1k}}f[i][j]=max\{f[k][j...原创 2018-11-02 18:59:35 · 268 阅读 · 0 评论 -
BZOJ1855: [Scoi2010]股票交易(洛谷P2569)
单调队列 DPBZOJ题目传送门洛谷题目传送门设f[i][j]f[i][j]f[i][j]表示前iii天还剩jjj股的最多钱数。有四种转移方式。1.之前没有股票,直接从这一天开始买,f[i][j]=−j∗APi(j∈[0,ASi])f[i][j]=-j*AP_i\quad(j\in[0,AS_i])f[i][j]=−j∗APi(j∈[0,ASi])2.这一天啥也不干,f[i][j]=...原创 2018-11-02 20:55:52 · 357 阅读 · 0 评论 -
codeforces 1067A. Array Without Local Maximums
DP题目传送门题目大意: 有一个数列,满足a1≤a2,an≤an−1,ai≤max(ai−1,ai+1)a_1\leq a_2,a_n\leq a_{n-1},a_i\leq max(a_{i-1},a_{i+1})a1≤a2,an≤an−1,ai≤max(ai−1,ai+1)且1≤ai≤2001\leq a_i\leq 2001≤ai≤200。现在有一些数不知道,问原数列的所...原创 2018-11-05 14:40:40 · 427 阅读 · 2 评论 -
BZOJ1046: [HAOI2007]上升序列(洛谷P2215)
DPBZOJ题目传送门 洛谷题目传送门首先预处理以iii为起点的LIS。一看O(nm)O(nm)O(nm)不会超,那么每次询问复杂度应该就是O(n)O(n)O(n)的了。扫一遍过去,记下f[i]≥l−kf[i]≥l−kf[i]\geq l-k且a[i]>a[k]a[i]>a[k]a[i]>a[k]的a[i]a[i]a[i],最后输出即可。注意过滤行末空格。代码...原创 2018-03-01 09:20:30 · 275 阅读 · 0 评论 -
BZOJ2748 [HAOI2012]音量调节(洛谷P1877)
BZOJ2748: [HAOI2012]音量调节(洛谷P1877)DPBZOJ题目传送门 洛谷题目传送门继续划水据说这种类型的背包叫做到达型背包。 f[i][j]f[i][j]f[i][j]表示前i首能否达到j的音量。能为1,不能为0。代码:#include&lt;cstdio&gt;#include&lt;cstring&gt;#include&lt;algori...原创 2018-02-09 15:28:31 · 259 阅读 · 0 评论 -
洛谷P2766 最长递增子序列问题
DP 最大流 网络流题目传送门第一问直接DP水过啦啦啦(长度记为l)。 第二问需要建图。 1、把每个点i拆成i.a,i.b两个点,在之间连一条容量为1的边。 2、加一个超级源和一个超级汇(也就是起点和终点),若f[i]=1就在s和i.a之间连一条容量为1的边,若f[i]=l就在i.b和t之间连一条容量为1的边。 3、如果i>j且a[i]>a[j]且f[j]+1=f[i],就在j.b和i.原创 2017-06-29 14:21:53 · 364 阅读 · 0 评论 -
51nod1241 特殊的排序
dp原创 2017-08-27 15:38:19 · 273 阅读 · 0 评论 -
最长公共子序列LCS简介
一个数列 ,如果分别是两个或多个已知数列的子序列,且是所有符合此条件序列中最长的,则称为已知序列的最长公共子序列。原创 2017-09-06 21:37:49 · 292 阅读 · 0 评论 -
洛谷P2285 [HNOI2004]打鼹鼠 (BZOJ 1207)
DP原创 2017-10-20 18:39:06 · 749 阅读 · 0 评论 -
最长上升子序列LIS
最长上升子序列(Longest Increasing Subsequence,LIS),在计算机科学上是指一个序列中最长的单调递增的子序列。原创 2017-10-11 19:25:07 · 644 阅读 · 0 评论 -
洛谷P2679 子串(NOIP2015)
DP原创 2017-10-21 08:51:03 · 692 阅读 · 1 评论 -
洛谷P1052 过河(NOIp2005)
DP原创 2017-10-31 07:12:44 · 563 阅读 · 0 评论 -
洛谷P1137 旅行计划
拓扑排序 DP原创 2017-10-31 09:38:07 · 566 阅读 · 0 评论 -
洛谷 P1941 飞扬的小鸟(NOIp2014)
DP原创 2017-10-24 15:43:35 · 821 阅读 · 0 评论 -
洛谷P1439 最长公共子序列(LCS问题)
DP原创 2017-11-01 15:31:20 · 662 阅读 · 0 评论 -
洛谷 P1282 多米诺骨牌
背包原创 2017-10-16 15:43:21 · 1121 阅读 · 0 评论 -
洛谷P1373 小a和uim之大逃离
DP原创 2017-11-04 15:42:36 · 656 阅读 · 0 评论 -
洛谷P2331 [SCOI2005]最大子矩阵(BZOJ1084)
DP原创 2017-11-05 18:03:13 · 579 阅读 · 0 评论 -
BZOJ1003: [ZJOI2006]物流运输(洛谷P1772)
最短路 DPBZOJ题目传送门 洛谷题目传送门首先spfa预处理从i'>iii到j'>jjj天用同一路线的最短路,记为w[i][j]'>w[i][j]w[i][j]w[i][j]。 dp[i]'>dp[i]dp[i]dp[i]表示前i'>iii天的最小代价。 那么有转移方程dp[i]=min(dp[i],dp[j]+w[j+1][i]+k) 代码:#include#inclu原创 2018-01-27 17:30:57 · 331 阅读 · 0 评论 -
codeforces 999F. Cards and Joy
DP题目传送门题目大意: 有nnn个人n∗kn*kn∗k张卡片,每个人都要分到kkk张卡片。卡片上有数字,每个人也有一个数字,当一个人分到iii张和他的数字一样的卡片时会有h[i]h[i]h[i]的贡献,求最大贡献。设g[i][j]g[i][j]g[i][j]表示iii张卡片分给jjj个人的最大贡献,那么有g[i][j]=max{g[i−p][j−1]+h[p]}g[i][j]=max\{g...原创 2018-11-05 20:03:45 · 239 阅读 · 0 评论