上一页 1 ··· 12 13 14 15 16 17 18 19 20 ··· 28 下一页
摘要: 标准解法应该是线段树,这里提供另一种思路:将“断点”(即被摧毁的村庄)放入stl的容器(我用的是set)中维护,对于每次查询,只要找这个数在哪两个断点之间即可,写起来轻松愉快。 PS:hdu上的数据略坑,同一个村庄可以被摧毁多次,恢复的时候一次恢复就可以让它不再是断点,但是第一次恢复以后剩下几次也是 阅读全文
posted @ 2015-07-31 12:51 hxy_has_been_used 阅读(464) 评论(0) 推荐(0) 编辑
摘要: 和I相比有了单点更新,所以不能只记录一个前缀和,而是要在线段树上多维护一个sum,表示这个结点的区间和,然后其他的就和I一样了。 1 #include 2 #include 3 #include 4 using namespace std; 5 6 const int N = 5... 阅读全文
posted @ 2015-07-31 08:47 hxy_has_been_used 阅读(178) 评论(0) 推荐(0) 编辑
摘要: 这个题其实有O(n)的算法,不过还是用线段树做了一遍,还写了个自认为不错的pushalldown函数,哈哈。 1 #include 2 #include 3 #include 4 using namespace std; 5 6 const int N = 100001; 7 int ans... 阅读全文
posted @ 2015-07-30 23:06 hxy_has_been_used 阅读(113) 评论(0) 推荐(0) 编辑
摘要: 线段树在解决区间合并问题上还是很强力的,每个结点维护三个值:maxl, maxr, maxn,然后合并操作见pushup函数。 1 #include 2 #include 3 #include 4 using namespace std; 5 6 const int N = 50001; 7... 阅读全文
posted @ 2015-07-30 22:25 hxy_has_been_used 阅读(125) 评论(0) 推荐(0) 编辑
摘要: 等差和等比各扫一遍即可。 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 8 const int N = 1000000; 9 const double eps = 1e-8;... 阅读全文
posted @ 2015-07-30 19:52 hxy_has_been_used 阅读(127) 评论(0) 推荐(0) 编辑
摘要: 下午比赛的时候写搓了,晚上重写一次就过了,o(╯□╰)o。思路:按照字典序贪心,用线段树来维护区间最值,用set来维护求出答案的封闭区间。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7... 阅读全文
posted @ 2015-07-30 19:37 hxy_has_been_used 阅读(270) 评论(0) 推荐(0) 编辑
摘要: 其实问题可以转化为:一堆数中有若干个1,若干个2,若干个3,...,若干个n,问是否存在一种排列的方式使得相邻的两个数不同,转化完以后问题就简单了。 1 #include 2 #include 3 #include 4 using namespace std; 5 6 typedef lon... 阅读全文
posted @ 2015-07-30 10:46 hxy_has_been_used 阅读(118) 评论(0) 推荐(0) 编辑
摘要: 很容易可以想到状态转移方程: dp[i] = segma: dp[j] ( j 2 #include 3 #include 4 #include 5 using namespace std; 6 7 typedef long long ll; 8 const int N = 100001... 阅读全文
posted @ 2015-07-30 09:49 hxy_has_been_used 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 思路:既然要求的是不同的元素的和,那么我们可以想办法让每个值在区间中只出现一次,于是想到了离线的算法:将查询按照右端点排序,位置在右端点之前的元素都插入到树状数组中,对于已经出现过的值,我们要先删除(在原位置)再插入(在cur的位置),因为很显然对于同一个元素,只有在最靠右的位置出现一次才能返回正确... 阅读全文
posted @ 2015-07-29 20:22 hxy_has_been_used 阅读(230) 评论(0) 推荐(0) 编辑
摘要: 由于星星是按照y从小到大,y相同x从小到大排好序的(其实没排好也没关系,我们有sort和cmp大法),所以只要不断地求某个位置的前缀和就好了,可以用树状数组或Treap来维护。树状数组: 1 #include 2 #include 3 #include 4 using namespace st... 阅读全文
posted @ 2015-07-29 19:17 hxy_has_been_used 阅读(148) 评论(0) 推荐(0) 编辑
上一页 1 ··· 12 13 14 15 16 17 18 19 20 ··· 28 下一页