一名苦逼的OIer,想成为ACMer

Iowa_Battleship

随笔分类 -  DP

上一页 1 2 3 下一页

洛谷1070 道路游戏
摘要:"原题链接" 太菜了,只会$O(n^3)$暴力$DP$,最后看大佬的博客看了好久也是一知半解。。 "大佬博客传送门" cpp include include using namespace std; const int N = 1010; struct dd{ int l, r, v[N], id[ 阅读全文

posted @ 2018-10-24 09:36 Iowa_Battleship 阅读(96) 评论(0) 推荐(0) 编辑

BZOJ1899或洛谷2577 [ZJOI2005]午餐
摘要:"BZOJ原题链接" "洛谷原题链接" 解决这题得先想到一个贪心:吃饭慢的先排队。 ~~并不会证明(感觉显然~~ 设$f[i][j][k]$表示已经排好了前$i$人,第一个队伍需要花费的打饭时间为$j$,第二个队伍需要花费的打饭时间为$k$,最后一个吃完饭的时刻。 显然这会$MLE$~~(滚动数组也 阅读全文

posted @ 2018-10-23 21:22 Iowa_Battleship 阅读(98) 评论(0) 推荐(0) 编辑

BZOJ1057或洛谷1169 [ZJOI2007]棋盘制作
摘要:"BZOJ原题链接" "洛谷原题链接" 设$L[i][j],R[i][j],H[i][j]$表示点$(i,j)$向左、右、上尽量拓展的左端点、右端点、上端点的坐标。 $L,R$直接初始化好,$H$则全部为$1$。 扫过整个矩阵,对于每个点,尽量去拓展上端点,并更新$L[i][j] = \max\{ 阅读全文

posted @ 2018-10-23 19:29 Iowa_Battleship 阅读(108) 评论(0) 推荐(0) 编辑

洛谷1273 有线电视网
摘要:"原题链接" 显然是一个树形$DP$,状态转移则是裸的分组背包模型。 先将边权转换为点权,即每个转播台或用户的权值为原来的点权减去它到父亲的边权(没有的作为$0$去计算),记为$V[x]$。 设$f[x][k]$表示以$x$为根的子树中,选择$k$个用户所能达到的最大收入,$size[x]$表示以$ 阅读全文

posted @ 2018-10-23 18:09 Iowa_Battleship 阅读(128) 评论(0) 推荐(0) 编辑

洛谷1220 关路灯
摘要:"原题链接" 很容易看出来是区间$DP$(当然爆搜$+$玄学剪枝也是可以的)。 设$f[i][j][k]$表示已经关闭了$[i,j]$间的路灯,老张的状态为$k$时所消耗的最小功耗。 1. $k = 0$时,老张最后关闭了$i$灯,即在区间$[i,j]$的左端。 2. $k = 1$时,老张最后关闭 阅读全文

posted @ 2018-10-23 10:45 Iowa_Battleship 阅读(96) 评论(0) 推荐(0) 编辑

BZOJ1217或洛谷2279 [HNOI2003]消防局的设立
摘要:"BZOJ原题链接" "洛谷原题链接" 该题有两种做法,树形$DP$和贪心。 先讲贪心。 先将所有点按深度从大到小排序,然后从大到小依次取出点,若已经被覆盖则跳过,否则就在它的祖父点建立消防站。 考虑如何判断该点是否被覆盖,设数组$dis[x]$表示点$x$到达离它最近的消防站的距离。 则在扫到一个 阅读全文

posted @ 2018-10-22 21:21 Iowa_Battleship 阅读(105) 评论(0) 推荐(0) 编辑

洛谷1373 小a和uim之大逃离
摘要:"原题链接" 只要想好状态,这题就是水题了,转移方程完全没难度。。 设$f[i][j][w][u]$表示走到$(i, j)$格,小$a$和$uim$所取得魔力值的差值为$w$,该格由($u = 0$则小$a$取,$u = 1$则$uim$取)时的总方案数。 设格子$(i, j)$的魔力值为$a[i] 阅读全文

posted @ 2018-10-22 14:36 Iowa_Battleship 阅读(98) 评论(0) 推荐(0) 编辑

洛谷1005 矩阵取数游戏
摘要:"原题链接" 由于每一行之间没有干扰,所以可以一行一行$DP$过去。 设$f[i][j]$表示区间$[1,i)\cup (j, m]$被取所取得的最大值,则有转移方程: $\qquad\qquad f[i][j] = \max\{f[i][j], \max\{f[i 1][j] + 2^{m (j 阅读全文

posted @ 2018-10-21 21:01 Iowa_Battleship 阅读(125) 评论(0) 推荐(0) 编辑

洛谷1441 砝码称重
摘要:"原题链接" 挺水的一道题。 $DFS$枚举被删除的砝码,每次删完后进行$01$背包计数,取最大值即可。 这题不需要剪枝即可通过。 我这里是用链表储存的数据。 cpp include include include using namespace std; const int N = 25; con 阅读全文

posted @ 2018-10-19 16:52 Iowa_Battleship 阅读(133) 评论(0) 推荐(0) 编辑

BZOJ4033或洛谷3177 [HAOI2015]树上染色
摘要:"BZOJ原题链接" "洛谷原题链接" 很明显的树形$DP$。 因为记录每个点的贡献很难,所以我们可以统计每条边的贡献。 对于每一条边,设边一侧的黑点有$B_x$个,白点有$W_x$,另一侧黑点有$B_y$,白点有$W_y$,边权为$w$,那么这条边的贡献就是$(W_x\times W_y + B_ 阅读全文

posted @ 2018-09-30 10:33 Iowa_Battleship 阅读(149) 评论(0) 推荐(0) 编辑

BZOJ1833或洛谷2602 [ZJOI2010]数字计数
摘要:"BZOJ原题链接" "洛谷原题链接" 又是套记搜模板的时候。。 对$0\sim 9$单独统计。 定义$f[pos][sum]$,即枚举到第$pos$位,前面枚举的所有位上是当前要统计的数的个数之和为$sum$。 cpp include include using namespace std; ty 阅读全文

posted @ 2018-09-29 19:48 Iowa_Battleship 阅读(126) 评论(0) 推荐(0) 编辑

Codeforces55D Beautiful numbers
摘要:"原题链接" 虽然依旧是套模板,但是因为我太弱了,不会建状态,所以去看了题解。。 这里就直接引用我看的题解吧,写的不错的。 "题解" cpp //我的代码 include include using namespace std; const int mod = 2520; const int N = 阅读全文

posted @ 2018-09-27 14:31 Iowa_Battleship 阅读(143) 评论(0) 推荐(0) 编辑

HDOJ4734 F(x)
摘要:"原题链接" 数位$DP$,~~继续套记搜模板~~ 定义$f[pos][now]$,$pos$是枚举到的位数,$now$是$A$的权值减去当前枚举的数的权值,即剩余权值大小。 然后就是记搜模板的事。 cpp include include using namespace std; const int 阅读全文

posted @ 2018-09-26 19:57 Iowa_Battleship 阅读(176) 评论(0) 推荐(0) 编辑

HDOJ2089 不要62
摘要:"原题链接" 数位$DP$入门题。 记录前一个枚举到的数位,在每次枚举的时候避开$4$,如果前一个数位为$6$,还要跳过$2$。 然后套上记搜模板就好。 阅读全文

posted @ 2018-09-26 19:11 Iowa_Battleship 阅读(108) 评论(0) 推荐(0) 编辑

BZOJ1093或洛谷2272 [ZJOI2007]最大半连通子图
摘要:"BZOJ原题链接" "洛谷原题链接" 和 Going from u to v or from v to u?( "题解" )这道题类似,只不过是求最大子图的大小和个数而已。 一样用$tarjan$求强连通分量,并进行缩点,然后对于缩点后的$DAG$进行拓扑排序$DP$。 定义$size[i]$表示 阅读全文

posted @ 2018-09-20 21:16 Iowa_Battleship 阅读(151) 评论(0) 推荐(0) 编辑

JoyOI1940 创世纪
摘要:一道基环树+树形$DP$ "原题链接" 显然输入的是内向基环树森林,且我们可以单独考虑每一棵基环树。 既然是基环树,自然先$dfs$找环,然后随便找环上的一点$r$,将其与$A[r]$的边断开,建反边,这时就会形成一棵以$r$为根的树,且每个点的子节点都是能限制它的元素。 于是我们可以在这棵树上跑树 阅读全文

posted @ 2018-09-07 20:55 Iowa_Battleship 阅读(186) 评论(0) 推荐(0) 编辑

hihoCoder1159 扑克牌
摘要:一道记忆化搜索 "原题链接" 和着色方案很像,这里就不详细阐述,可以去我博客里的 "着色方案" 里看。 但要注意本题不一样的是同种面值的牌花色不同,所以在转移时还需要乘上同种面值的牌的个数。 cpp include include using namespace std; typedef unsig 阅读全文

posted @ 2018-08-23 21:19 Iowa_Battleship 阅读(220) 评论(0) 推荐(0) 编辑

BZOJ1079或洛谷2476 [SCOI2008]着色方案
摘要:一道记忆化搜索 "BZOJ原题链接" "洛谷原题链接" 发现对于能涂木块数量一样的颜色在本质上是一样的,所以可以直接压在一个状态,而这题的数据很小,直接暴力开$6$维。 定义$f[a][b][c][d][e][la]$,$a$表示能涂$1$个木块的颜色总数,$b$表示能涂$2$个木块的颜色总数,$c 阅读全文

posted @ 2018-08-23 20:53 Iowa_Battleship 阅读(181) 评论(0) 推荐(0) 编辑

HDOJ2870 Largest Submatrix
摘要:一道$DP$ "原题链接" 发现只有$a,b,c$三种情况,所以直接初始化成三个$01$方阵,找最大子矩阵即可。 我是先初始化垂直上的高度,然后对每一行处理出每个点向左向右的最大延伸,并不断计算矩阵大小来更新答案。 因为不想开函数传数组,所以全写在主函数复制粘贴了三遍。。代码显得比较冗长。 cpp 阅读全文

posted @ 2018-08-22 19:09 Iowa_Battleship 阅读(203) 评论(0) 推荐(0) 编辑

BZOJ1855或洛谷2569 [SCOI2010]股票交易
摘要:一道单调队列优化$DP$ "BZOJ原题链接" "洛谷原题链接" 朴素的$DP$方程并不难想。 定义$f[i][j]$表示到第$i$天,手上持有$j$股时的最大收益。 转移方程可以分成四个部分。 1. 第$i$天为空手时买股票 $\qquad\qquad f[i][j]= AP_i\times j$ 阅读全文

posted @ 2018-08-21 20:33 Iowa_Battleship 阅读(126) 评论(0) 推荐(0) 编辑

上一页 1 2 3 下一页

导航