摘要: 这题WA了好久,一直以为是lld和I64d的问题,后来发现是自己的pushdown函数写错了,说到底还是因为自己对线段树理解得不好。因为是懒惰标记,所以只有在区间分开的时候才会将标记往下传递。更新和查询都要pushdown。 1 #include 2 3 typedef long long LL... 阅读全文
posted @ 2015-04-26 16:30 AOQNRMGYXLMV 阅读(187) 评论(0) 推荐(0) 编辑
摘要: 有m个操作,每个操作 X Y Z是将区间[X, Y]中的所有的数全部变为Z,最后询问整个区间所有数之和是多少。区间更新有一个懒惰标记,set[o] = v,表示这个区间所有的数都是v,只有这个区间被分开的时候再往下传递。 1 #include 2 3 const int maxn = 10000... 阅读全文
posted @ 2015-04-26 15:07 AOQNRMGYXLMV 阅读(139) 评论(0) 推荐(0) 编辑
摘要: 这道题综合性挺强的,又牵扯到数论,又有线段树。线段树维护的信息就是区间中有多少个人没跳出去,然后计算出下一个人是剩下的人中第几个。我在这调程序调了好久,就是那个模来模去的弄得我头晕。不过题确实是好题,给赞。 1 #include 2 #include 3 #include 4 #include... 阅读全文
posted @ 2015-04-26 13:50 AOQNRMGYXLMV 阅读(181) 评论(0) 推荐(0) 编辑
摘要: 倒着插,倒着插,这道题是倒着插!想一下如果 Posi 里面有若干个0,那么排在最前面的一定是最后一个0.从后往前看,对于第i个数,就应该插在第Posi + 1个空位上,所以用线段树来维护区间空位的个数。说一下那个坑爹的第56行的判断:if(i > 1) printf(" ");将输出的n个数用空格隔... 阅读全文
posted @ 2015-04-26 10:22 AOQNRMGYXLMV 阅读(125) 评论(0) 推荐(0) 编辑
摘要: h*w的木板,放进一些1*L的物品,求每次放空间能容纳且最上边的位子。每次找能放纸条而且是最上面的位置,询问完以后可以同时更新,所以可以把update和query写在同一个函数里。 1 #include 2 #include 3 #include 4 using namespace std; ... 阅读全文
posted @ 2015-04-26 08:35 AOQNRMGYXLMV 阅读(111) 评论(0) 推荐(0) 编辑