摘要: http://poj.org/problem?id=1201 题目大意是:告诉你一个数列B在另一个数列A中每一个闭区间[a,b]中至少包含c个数,求B数列的最小长度。 模型转换一下,使用二进制0、1表示当前数取还是不取,此问题即成为典型的查分约束系统。 令S[i]表示0..i中1的个数,第i位状态即 S[i]-S[i-1] ,满足 0 ≤ S[i]-S[i-1] ≤ 1. 对于每一个条件(a,b,c),满足 c ≤ S[b]-S[a-1] ≤ b-a+1. 即可得到 S[i]-S[i-1]≤1 S[i-1]-S[i]≤0 S[b]-S[a-1]≤b-a+1 S[a-1]-S[b]≤ -c (. 阅读全文
posted @ 2011-07-26 19:09 Delostik 阅读(196) 评论(0) 推荐(1) 编辑
摘要: http://poj.org/problem?id=1094 这道题基本上是1A的……是过了样例之后就1A了,但是之前花了大量的时间。 题目大意是:给定一些关系,形如 x<y ,判断在第几个条件前能确定唯一的大小关系,或者无法判断他们之间的大小关系。 解法应该是拓扑排序,但是思路不清晰是很难办的…… 首先应该判断图中有没有环,有环肯定无解,这个用拓扑排序解决。 然后,使用传递闭包判断得出的解是否唯一。 #include <iostream>#include <cstdio>#include <cstring>#include <cstdlib&g 阅读全文
posted @ 2011-07-26 16:47 Delostik 阅读(180) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=3580 题目大意说给你一个数列,有区间同加一个数、区间翻转操作、区间滚动操作、删除一个数、插入一个数,查询区间最小值这些操作。 我是使用Splay乱搞的。其中revolve操作有点头疼,不过仔细观察发现,revolve l r x 其实就是交换(l,r-x)和(r-x+1,r)两个区间。 代码很长很长很长……而且跟QZ的很像很像很像…… 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <cstdlib 阅读全文
posted @ 2011-07-26 11:23 Delostik 阅读(793) 评论(0) 推荐(0) 编辑