一名苦逼的OIer,想成为ACMer

Iowa_Battleship

随笔分类 -  DP

1 2 3 下一页

洛谷1136 迎接仪式
摘要:"原题链接" 普通的$DP$题,~然而我又做了好久,太菜了~。 很容易发现直接描述“交换”这一操作比较困难,于是我们可以考虑将这一操作转换一下:交换一个 和`z z`变为 ,一个 变为 。 那么我们可以求出当$j$个 变为 ,$k$个 变为 时最多能出现的 个数。而“交换”这一操作就是当$j=k$的 阅读全文

posted @ 2019-10-24 20:54 Iowa_Battleship 阅读(194) 评论(0) 推荐(0) 编辑

洛谷1121 环状最大两段子段和
摘要:"原题链接" 乍看完全没啥想法,实际上很简单。 首先预备知识: "最大子段和" 的做法。 对于环状最大两段子段和,实际上只有两种情况(设$0$表示不取,$\_$表示取): 1. $0000\_\_\_\_0000\_\_\_\_0000$,即没有利用环状这个条件,直接在原序列里取。 2. $\_\_ 阅读全文

posted @ 2019-03-25 21:05 Iowa_Battleship 阅读(319) 评论(1) 推荐(0) 编辑

BZOJ1270或洛谷1107 [BJWC2008]雷涛的小猫
摘要:"BZOJ原题链接" "洛谷原题链接" $DP$水题。 定义$f[i][j]$表示小猫在高度$i$,位于第$j$棵树时最多能吃到的柿子的数量。分为直接往下跳和跳到另一棵树两个决策。 那么很容易写出状态转移方程: $$f[i][j] = \max \{ f[i + 1][j], f[i + Delta 阅读全文

posted @ 2019-03-07 20:58 Iowa_Battleship 阅读(180) 评论(0) 推荐(0) 编辑

洛谷1103 书本整理
摘要:"原题链接" $DP$水题,但我用了个三维数组。。在某谷看到的题解全是二维的。。不过反正能$A$,管它呢。 定义$f[i][j][k]$表示前$i$本书中不选$j$本,且最后一本选的书的下标为$k$。设$a[i]$表示第$i$本书的宽度,$m$表示最多能不选几本,$abs()$为绝对值。 于是有状态 阅读全文

posted @ 2019-03-04 21:22 Iowa_Battleship 阅读(176) 评论(0) 推荐(0) 编辑

洛谷1043 数字游戏
摘要:"原题链接" 又是一道挺水的类区间$DP$。 因为题目给定的是一个环,所以先断环成链再$DP$即可。 设$f[i][j][l]$表示$i \sim j$之间的数分成$l$段的最大值,$g[i][j][l]$为最小值,$mod(x)$为$(x \mod 10 + 10) \mod 10$,$s[]$为 阅读全文

posted @ 2018-12-29 15:08 Iowa_Battleship 阅读(135) 评论(0) 推荐(0) 编辑

洛谷1040 加分二叉树
摘要:"原题链接" 挺水的一道区间$DP$。 设$f[i][j]$表示在中序遍历下编号$i \sim j$的点所构成的子树的最高加分,枚举$k$为子树的根,则有状态转移方程: $$f[i][j] = \max \limits _{k = i + 1} ^ {j 1} \{ f[i][k 1] \times 阅读全文

posted @ 2018-12-26 20:56 Iowa_Battleship 阅读(144) 评论(0) 推荐(0) 编辑

洛谷1021 邮票面值设计
摘要:"原题链接" 爆搜面值,$DP$判断就好。 一开始打了记搜,结果连$5\ 5$的数据都过不去。。最后还是老老实实写了$DP$,不过还是跑不过$7\ 5$的数据,但因为这题数据极水,所以轻松过了。 我也去网上翻了翻,目前没有发现哪份代码能真正过满数据,所以就懒得改了。~~反正能$A$~~ cpp in 阅读全文

posted @ 2018-12-16 21:40 Iowa_Battleship 阅读(167) 评论(0) 推荐(0) 编辑

洛谷1018 乘积最大
摘要:"原题链接" 设$f[i][j]$表示在$[1, i]$中放置$j$个乘号,且第$i$个数字后面放第$j$个乘号时所获得的最大乘积。$ace(1, i)表示将$1 \sim i$的数字变为一个数。 有状态转移方程: $$f[i][j] = \max \{ f[i][j], \max \limits 阅读全文

posted @ 2018-12-14 20:29 Iowa_Battleship 阅读(185) 评论(0) 推荐(0) 编辑

洛谷1004 方格取数
摘要:"原题链接" ~~继续写水题中~~ $DP$水题。 不过费用流解更灵活,可以解决$k$条路。 所以就写了个费用流。 cpp include include using namespace std; const int N = 1e4 + 10; int fi[N], ne[N], da[N], di 阅读全文

posted @ 2018-12-06 20:48 Iowa_Battleship 阅读(125) 评论(0) 推荐(0) 编辑

洛谷1002 过河卒
摘要:"原题链接" $DP$水题。 ~~还有哪个zz打上去的高精标签,害我还敲了一波高精。。~~ cpp include include using namespace std; typedef long long ll; const int N = 23; bool v[N][N]; int mo_x[ 阅读全文

posted @ 2018-12-05 21:08 Iowa_Battleship 阅读(133) 评论(0) 推荐(0) 编辑

BZOJ1026或洛谷2657 [SCOI2009]windy数
摘要:"BZOJ原题链接" "洛谷原题链接" 简单的数位$DP$,套模板就好。 阅读全文

posted @ 2018-11-09 09:16 Iowa_Battleship 阅读(124) 评论(0) 推荐(0) 编辑

BZOJ3191或洛谷2059 [JLOI2013]卡牌游戏
摘要:"BZOJ原题链接" "洛谷原题链接" 我们可以倒着来$DP$。 设$f[i][j]$表示剩余$i$个人,从庄家数起第$j$个人的胜率,设当前枚举到第$k$张牌,该情况下这一轮淘汰的位置为$x$,则有状态转移方程: $\qquad\qquad f[i][j] = f[i][j] + \dfrac{f 阅读全文

posted @ 2018-10-29 15:32 Iowa_Battleship 阅读(124) 评论(0) 推荐(0) 编辑

洛谷1357 花园
摘要:"原题链接" 可以使用二进制来表示后$m$个花圃的状态。 设$f[i][k]$表示前$i$个花圃,后$m$个状态为$k$,设$k$可由$k ^ \prime$转移来,则有状态转移方程: $\qquad\qquad f[i][k] = \sum f[i][k ^ \prime]$ 发现这个转移方程可以 阅读全文

posted @ 2018-10-28 14:57 Iowa_Battleship 阅读(132) 评论(0) 推荐(0) 编辑

洛谷3084 [USACO13OPEN]照片Photo
摘要:"原题链接" 神仙$DP$啊。。。 题解请移步隔壁 "大佬的博客" $QAQ$ 阅读全文

posted @ 2018-10-25 20:31 Iowa_Battleship 阅读(145) 评论(0) 推荐(0) 编辑

BZOJ1925或洛谷2467 [SDOI2010]地精部落
摘要:"BZOJ原题链接" "洛谷原题链接" 先讲下关于波动数列的$3$个性质。 性质$1$:对于数列中的每一对$i$和$i + 1$,若它们不相邻,那么交换这两个数形成的依旧是一个波动数列。 性质$2$:对于任何一个由$1\sim n$组成的波动数列,将每个数$a_i$变为$n + 1 a_i$,形成的 阅读全文

posted @ 2018-10-25 16:23 Iowa_Battleship 阅读(114) 评论(0) 推荐(0) 编辑

BZOJ1084或洛谷2331 [SCOI2005]最大子矩阵
摘要:"BZOJ原题链接" "洛谷原题链接" 注意该题的子矩阵可以是空矩阵 ,即可以不选,答案的下界为$0$。 设$f[i][j][k]$表示前$i$行选择了$j$个子矩阵,选择的方式为$k$时的最大分值之和。 1. $k = 0$表示该行不选数。 2. $k = 1$表示该行只选左边的数。 3. $k 阅读全文

posted @ 2018-10-25 11:35 Iowa_Battleship 阅读(139) 评论(0) 推荐(0) 编辑

BZOJ1047或洛谷2216 [HAOI2007]理想的正方形
摘要:"BZOJ原题链接" "洛谷原题链接" 显然可以用数据结构或$ST$表或单调队列来维护最值。 这里采用单调队列来维护。 先用单调队列维护每一行的最大值和最小值,区间长为正方形长度。 再用单调队列维护 之前维护出的每行最值数组 的每一列的最大值和最小值,区间同上。 最后维护出的数组其实就是以每个点为左 阅读全文

posted @ 2018-10-24 20:51 Iowa_Battleship 阅读(146) 评论(0) 推荐(0) 编辑

BZOJ1226或洛谷2157 [SDOI2009]学校食堂
摘要:"BZOJ原题链接" "洛谷原题链接" 注意到$B[i]$很小,考虑状压$DP$。 设$f[i][j][k]$表示前$i 1$个人已经拿到菜,第$i$个人及其后面$7$个人是否拿到菜的状态为$j$,上一个拿到菜的人的编号为$i + k, 8\leqslant k \leqslant 7$时所用的最短 阅读全文

posted @ 2018-10-24 15:53 Iowa_Battleship 阅读(91) 评论(0) 推荐(0) 编辑

洛谷1415 拆分数列
摘要:"原题链接" 太菜了,又去看了题解($DP$写一道看一道$QAQ$ "题解" cpp include using namespace std; const int N = 510; int a[N], f[N], g[N], l; inline void re_l() { char c = getc 阅读全文

posted @ 2018-10-24 13:05 Iowa_Battleship 阅读(131) 评论(0) 推荐(0) 编辑

BZOJ1801或洛谷2051 [AHOI2009]中国象棋
摘要:"BZOJ原题链接" "洛谷原题链接" 这题挺难想状态的,刚看题感觉是状压,但数据$100$显然不可能。 注意到每行每列只能放$0\sim 2$个棋子,所以我们可以将这个写入状态。 设$f[i][j][k]$表示放了前$i$行,共有$j$列只放了一个棋子,共有$k$列放了两个棋子,而没有放棋子的列数 阅读全文

posted @ 2018-10-24 11:10 Iowa_Battleship 阅读(97) 评论(0) 推荐(0) 编辑

1 2 3 下一页

导航