摘要:
裸线段树区间合并,题目本身不难,就是细节处理比较麻烦。因为涉及到异或运算,所以连续0和连续1的个数都要记录一下。操作的懒惰标记我只用了一个flag,注意flag更新时的细节,我分了三种情况:flag == -1 或者 当前操作为0或1:更新时直接赋值。因为0, 1操作都可以直接覆盖前面的操作。flag == 0或1,当前操作为2(xor):flag ^= 1。前面标记过0或1,当前操作为异或,那么改变flag标记flag == 2,当前操作为2(xor): flag = -1。前面只出现过异或运算,没出现过0,1运算。因为异或两次相当于没异或,所以清除标记即可。 1 #include < 阅读全文
posted @ 2013-05-20 21:03
冰鸮
阅读(268)
评论(0)
推荐(0)
摘要:
一开始直接用递归求后一个分数式的值,每求一步约分一次,过了小数据,大数据没过……后来发现是因为中间两个long long相乘溢出了……看了别人的代码才明白,只要思维稍微转化一下,这题就能变得很简单…… 1 #include <cstring> 2 #include <cstdlib> 3 #include <cstdio> 4 #include <algorithm> 5 6 using namespace std; 7 8 #define LL long long int 9 10 const int MAXN = 100;11 12 int 阅读全文
posted @ 2013-05-20 08:47
冰鸮
阅读(576)
评论(0)
推荐(0)

浙公网安备 33010602011771号