上一页 1 ··· 41 42 43 44 45 46 47 48 49 ··· 65 下一页
摘要: 这玩意写个鬼游记啊 听说普及+提高的考两张卷子€€£也是想得出来 怎么监考还能咕咕咕的啊 怎么我到快结束了才做完啊 怎么我根本不知道初赛能带啥啊 怎么dij我都能想着对的选了错的啊 怎么我根本不知道图灵奖是谁创立的啊(不过好像蒙对了 怎么看程序写结果读入n不换行的啊完全注意不到啊于是连环都不会数了 阅读全文
posted @ 2018-10-13 17:05 Gloid 阅读(398) 评论(0) 推荐(0) 编辑
摘要: 拿走一个区间的代价只与最大最小值有关,并且如果最后一次拿走包含区间右端点的子序列一定不会使答案更劣,于是设f[i][j][x][y]为使i~j区间剩余最小值为x最大值为y且若有数剩余一定包含j的最小代价,特别地f[i][j][0][0]表示取完i~j区间的最小代价。转移时考虑j最后和哪一段一起拿走, 阅读全文
posted @ 2018-10-13 12:39 Gloid 阅读(193) 评论(0) 推荐(0) 编辑
摘要: 容易想到设f[i][j][k]为i~j区间以k为根是否能构成bst。这样是O(n4)的。考虑将状态改为f[i][j][0/1]表示i~j区间以i-1/j+1为根能否构成bst。显然如果是i-1作为根的话i~j区间都在它的右子树,所以转移时枚举右子树的根并判断是否合法,j+1类似。 阅读全文
posted @ 2018-10-12 19:00 Gloid 阅读(276) 评论(0) 推荐(0) 编辑
摘要: 设f[i][j][k]为将i~j的字符最终合并成k的答案。转移时只考虑最后一个字符是由哪段后缀合成的。如果最后合成为一个字符特殊转移一下。 复杂度看起来是O(n32k),实际常数极小达到O(玄学)。 upd:突然发现根本没在bzoj上交。bzoj的数据输入中没有空格。 阅读全文
posted @ 2018-10-12 02:20 Gloid 阅读(349) 评论(2) 推荐(0) 编辑
摘要: A:签到。 #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> #include<cstring> #include<algorithm> using namespace std; int read() { in 阅读全文
posted @ 2018-10-12 01:17 Gloid 阅读(198) 评论(0) 推荐(0) 编辑
摘要: 感觉上这个题是可以直接暴力的,每次根据一段连续最小值个数的奇偶性决定是否划分区间,递归处理。然而写起来实在太麻烦了。 设f[i][j]为以i为左端点合并出j时的右端点。则有f[i][j]=f[f[i][j-1]+1][j-1]。类似于区间dp。 阅读全文
posted @ 2018-10-11 18:49 Gloid 阅读(161) 评论(0) 推荐(0) 编辑
摘要: 首先按数据值排序,那么连续一段区间的dfs序一定也是连续的。 将权值离散化,设f[i][j][k]为i到j区间内所有点的权值都>=k的最小代价,转移时枚举根考虑是否修改权值即可。 阅读全文
posted @ 2018-10-11 02:20 Gloid 阅读(131) 评论(0) 推荐(0) 编辑
摘要: 设f[i][j][0/1]表示i~j这段区间上一次选择的是最左/最右人的方案数。转移显然。 阅读全文
posted @ 2018-10-10 23:40 Gloid 阅读(151) 评论(0) 推荐(0) 编辑
摘要: 线段树合并的话这个noip最难题就是个裸题了。 注意merge最后return x,以及如果需要区间查询的话这里还需要up,无数次死于这里。 阅读全文
posted @ 2018-10-10 20:36 Gloid 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 每个节点被经过的概率即为该区间和/总区间和。那么所需要计算的东西就是每个节点的平方和了。修改对于某个节点的影响是使其增加2sum·l·x+l2x2。那么考虑对子树的影响,其中Σl2是定值,修改后Σsum·l会增加Σl2x。维护一下就好。 懒得纠结爆long long的问题了,被卡90算了。 阅读全文
posted @ 2018-10-10 02:34 Gloid 阅读(205) 评论(0) 推荐(0) 编辑
上一页 1 ··· 41 42 43 44 45 46 47 48 49 ··· 65 下一页