线段树
TelmaZzzz
HEU ACMer
展开
-
HDU 5575 Discover Water Tank(线段树+自底向上dp+并查集)
题意 给定n个挡板和m次回答,每次回答为x号水池的H+0.5高度是否有水,问这些回答互不矛盾的最大集合。 题解 设定状态dp[i][0-1]代表第i个区间枚举到当前回答后有水的最大不矛盾集合和没水的最大不矛盾集合。1代表有水,0代表没水。 我们将回答的H从小到大排序后升序枚举,对于第i个回答,我们可以用线段树定位出其所影响的区间[l,r]在这个区间内去进行dp转移。同时我们还发现若枚举到了一定的高...原创 2019-11-01 11:28:28 · 233 阅读 · 0 评论 -
codeforces 1132 G(线段树+单调栈)
题意: 规定一个子序列为递增的且每一位上的数的下一位恰好是原序列中该数下一个大于他的数。求长度为k的连续区间中最长的子序列的长度是多少 题解: 通过维护一个单调递减的栈来获得一个数后一位数的位置,之后我们可以把得出的这层关系连边形成一个森林方向为大数->小数,并将所有入度为0的与一个须根(n+1)相连。 通过上述操作我们就可以发现,假如加上一个数的贡献,其贡献只会影响其子孙,删掉依然。于是我...原创 2019-03-11 22:58:06 · 230 阅读 · 0 评论 -
codeforces gym 101341 A Streets of Working Lanterns - 2(贪心+线段树)
题解: 大致题意为,给定n个括号组合,问能不能将这n个括号组合排序后最后变成一串合法的括号组合 括号匹配题第一反应是栈,第二反应是左括号为1,右括号为-1,前缀和。 通过第二种思想我们可以将输入的nnn个括号组合转变成为了接上该组合,前缀至少需要lll个左括号,后缀可加rrr个左括号。 之后我们将这nnn个组合以lll值,小到大排序,并以该序列建立区间rrr值最大的线段树 最后一步就是我们贪心取的...原创 2019-05-04 21:57:20 · 374 阅读 · 0 评论