一名苦逼的OIer,想成为ACMer

Iowa_Battleship

2018年10月24日

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

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

posted @ 2018-10-24 20:51 Iowa_Battleship 阅读(144) 评论(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 阅读(88) 评论(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 阅读(129) 评论(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 阅读(95) 评论(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 阅读(94) 评论(0) 推荐(0) 编辑

导航