一名苦逼的OIer,想成为ACMer

Iowa_Battleship

2018年10月26日

洛谷1199 三国游戏

摘要: "原题链接" 因为电脑始终会把你选择的武将的同行默契最大的配对武将选走,所以你肯定不能配对出同行默契最大的武将。 所以我们可以考虑退(da)而(li)求(cai)其(jie)次(lun),配对出每行次大中最大的那一对。 然后不管电脑选择的武将是全部最大还是仅同行最大,你都可以破坏电脑的匹配。 因为你 阅读全文

posted @ 2018-10-26 11:34 Iowa_Battleship 阅读(191) 评论(0) 推荐(0) 编辑

洛谷2971 [USACO10HOL]牛的政治Cow Politics

摘要: "原题链接" 假设只有一个政党,那么这题就退化成求树的直径的问题了,所以我们可以从此联想至$k$个政党的情况。 先处理出每个政党的最大深度,然后枚举每个政党的其它点,通过$LCA$计算长度取$\max$即可。 因为枚举只是枚举该政党的所有点,所以总的枚举复杂度依旧是$O(n)$,总复杂度$O(nlo 阅读全文

posted @ 2018-10-26 10:38 Iowa_Battleship 阅读(143) 评论(0) 推荐(0) 编辑

洛谷1549 棋盘问题(2)

摘要: "原题链接" 爆搜题。 先用线性筛预处理出素数,并直接暴力循环预处理出那些数和哪些数之间能拼成素数,当然可以再疯狂点,直接预处理出每两个数可以和哪些数拼成素数(反正$n$小,随你预处理)。 然后爆搜的时候注意搜索顺序,先搜第一行第一列,以保证第一行第一列之和最小。 然而普通的搜索顺序搜除去第一行第一 阅读全文

posted @ 2018-10-26 09:13 Iowa_Battleship 阅读(141) 评论(0) 推荐(0) 编辑

2018年10月25日

洛谷3084 [USACO13OPEN]照片Photo

摘要: "原题链接" 神仙$DP$啊。。。 题解请移步隔壁 "大佬的博客" $QAQ$ 阅读全文

posted @ 2018-10-25 20:31 Iowa_Battleship 阅读(144) 评论(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 阅读(113) 评论(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 阅读(138) 评论(0) 推荐(0) 编辑

洛谷4147 玉蟾宫

摘要: "原题链接" 和 "ZJOI2007]棋盘制作([题解" )基本一样。 这里是用单调栈来做的,悬线法可参考我在棋盘制作所用的。 初始化出矩阵中每一列连续的$F$的最大长度。 于是,我们就可以对每一行都跑一遍单调栈,对答案不断取$\max$即可。 简单说下单调栈,这里要维护的是一个递增的单调栈。 1. 阅读全文

posted @ 2018-10-25 08:17 Iowa_Battleship 阅读(104) 评论(0) 推荐(0) 编辑

2018年10月24日

BZOJ1047或洛谷2216 [HAOI2007]理想的正方形

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

posted @ 2018-10-24 20:51 Iowa_Battleship 阅读(145) 评论(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 阅读(90) 评论(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 阅读(130) 评论(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 阅读(96) 评论(0) 推荐(0) 编辑

洛谷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 阅读(95) 评论(0) 推荐(0) 编辑

2018年10月23日

BZOJ1899或洛谷2577 [ZJOI2005]午餐

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

posted @ 2018-10-23 21:22 Iowa_Battleship 阅读(97) 评论(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 阅读(107) 评论(0) 推荐(0) 编辑

洛谷1273 有线电视网

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

posted @ 2018-10-23 18:09 Iowa_Battleship 阅读(127) 评论(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 阅读(95) 评论(0) 推荐(0) 编辑

2018年10月22日

BZOJ1217或洛谷2279 [HNOI2003]消防局的设立

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

posted @ 2018-10-22 21:21 Iowa_Battleship 阅读(104) 评论(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 阅读(97) 评论(0) 推荐(0) 编辑

洛谷3917 异或序列

摘要: "原题链接" 按每个数的二进制下一位一位计算贡献。 对于第$k$位,计算前缀异或和$S[1\to n]\ (S[0] = 0)$,则求这一位所能产生贡献的次数即是求有多少区间满足异或值为$1$,即求有多少$[i,j]\ (1\leqslant i\leqslant j \leqslant n)$满足 阅读全文

posted @ 2018-10-22 12:52 Iowa_Battleship 阅读(194) 评论(0) 推荐(0) 编辑

2018年10月21日

洛谷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 阅读(124) 评论(0) 推荐(0) 编辑

导航