上一页 1 ··· 12 13 14 15 16 17 18 19 20 ··· 26 下一页
摘要: ~~~题面~~~ 题解: 观察数据范围,这应该是一个复杂度O(n)的题。以最大值为例,考虑单调队列,维护一个单调递减的队列。从前向后扫,每次答案取队首,如果后面进入的比前面大,那么就弹出前面的数,因为是从前向后扫,所以后面进入的如果比前面的大,那么一定更优,因为要淘汰肯定先淘汰前面的。如果队首已经不 阅读全文
posted @ 2018-10-12 20:05 ww3113306 阅读(186) 评论(0) 推荐(0) 编辑
摘要: ~~~题面~~~ 题解: 首先我们需要发现一个性质,在括号序列不变的情况下,括号匹配是不会变的,因此不论子串怎么取,括号匹配的关系是不会变化的。这是一个很容易发现的性质,然而我太弱,没发现。 于是可以据此进行DP,我们记录下每个右括号与哪个左括号进行匹配,记为pos[i], 设f[i]表示DP到i位 阅读全文
posted @ 2018-10-12 16:09 ww3113306 阅读(184) 评论(0) 推荐(0) 编辑
摘要: ~~~题面~~~ 题解: 首先观察到题目要求的是合法回文串的个数,而回文串要求从前往后和从后往前是一样的,因此我们假设有两只猪,分别从左上和右下开始走,走相同的步数最后相遇,那么它们走的路能拼在一起构成一个回文串,当且仅当它们走字符串是完全相同的。 那么我们可以根据这个性质进行DP,设f[i][j] 阅读全文
posted @ 2018-10-12 15:30 ww3113306 阅读(205) 评论(0) 推荐(0) 编辑
摘要: ~~~题面~~~ 题解: 感到此题非常的神奇。。。看了大佬的题解才懂的。 首先建模: 先把所有队伍的出去回来时间都放在一个数组里,然后排序,从左到右扫一边,给每个队伍都建一个带权点,进行如下操作: (s表示出发,t表示回家, len表示两个点之间的时间差) 1,对于s > t的情况,如果两者属于一个 阅读全文
posted @ 2018-10-12 14:54 ww3113306 阅读(186) 评论(0) 推荐(0) 编辑
摘要: ~~~题面~~~ 题解: 可以发现这是一道单调栈的题目,首先来考虑数字没有重复时如何统计贡献。 因为这是一个环,而如果我们从最高的点把环断开,并把最高点放在链的最后面(顺时针移动),那么因为在最高点两侧的点无法互相看见,相当于就把环转化为链的问题了。 因此维护递减的单调栈,如果进来的点比栈顶高就弹出 阅读全文
posted @ 2018-10-11 14:25 ww3113306 阅读(218) 评论(0) 推荐(0) 编辑
摘要: ~~~题面~~~ 题解: 之前写的splay,,,然而一直没调出来,我感觉是某个细节想错了,,然而已经重构4次代码不想再写splay了。于是今天尝试了线段树的解法。 首先因为每次出列之后的变化都是将当前行左移,然后将最后一列上移,所以最后一列不适合和其他的行放在一起处理。 因此对于每行的前m - 1 阅读全文
posted @ 2018-10-09 15:33 ww3113306 阅读(349) 评论(0) 推荐(0) 编辑
摘要: ~~~题面~~~ 题解: 首先观察数据范围,n <= 18,很明显是状压DP。所以设f[i]表示状态为i时的最小代价。然后考虑转移。 注意到出发点(0, 0)已经被固定,因此只需要2点就可以确定一条抛物线,所以每次转移时枚举是哪两只猪确定了这条抛物线,然后由于一条抛物线可能会恰好打中别的猪,所以再枚 阅读全文
posted @ 2018-10-09 15:19 ww3113306 阅读(208) 评论(0) 推荐(0) 编辑
摘要: ~~~题面~~~ 题解: ,,,考场上看到这题,没想到竟然是省选原题QAQ,考场上把它当数学题想了好久,因为不知道怎么处理有些数没有逆元的问题。。。。知道这是线段树后恍然大悟。 首先可以一开始就建出一个长度为n的操作序列,初始值都是1,表示一开始默认是1乘上n个1,因为乘1也就相当于没乘。 对于操作 阅读全文
posted @ 2018-10-08 09:24 ww3113306 阅读(135) 评论(0) 推荐(0) 编辑
摘要: ~~~题面~~~ 题解: 首先,有一个不太直观的状态,f[i][j][k][l]表示DP到i位,三种颜色最后出现的位置分别是j, k, l的方案数。因为知道了三种颜色最后出现的位置,因此也可以得知以当前点为右端点的区间内有几种颜色了,因为左端点不断向左扩张的时候,颜色数不会减少。 然后考虑优化这个状 阅读全文
posted @ 2018-10-07 21:50 ww3113306 阅读(213) 评论(0) 推荐(0) 编辑
摘要: kruskal重构树是一个比较冷门的数据结构。 其实可以看做一种最小生成树的表现形式。 在普通的kruskal中,如果一条边连接了在2个不同集合中的点的话,我们将合并这2个点所在集合。 而在kruskal重构树中,如果一条边连接了在2个不同集合中的点,我们将新建一个节点出来,并用这个新节点作为一个中 阅读全文
posted @ 2018-10-06 01:39 ww3113306 阅读(1893) 评论(0) 推荐(0) 编辑
上一页 1 ··· 12 13 14 15 16 17 18 19 20 ··· 26 下一页
知识共享许可协议
本作品采用知识共享署名-非商业性使用-禁止演绎 3.0 未本地化版本许可协议进行许可。