摘要: gss5Can you answer these queries V给出数列a1...an,询问时给出:Query(x1,y1,x2,y2) = Max { A[i]+A[i+1]+...+A[j] ; x1 =x2: 考虑x1与x2的关系: 如果x1==x2,最大值可能出现在区间[x1,y1]的最大子段和,[x1,y1]的右区间连续最大和加上[y1+1,y2]的左区间连续最大和。 否则,考虑三个区间[x1,x2-1],[x2,y1],[y1+1,y2],这时考虑方式跟上面差不多,就不写出来了,具体可以看代码。#include #include #include #incl... 阅读全文
posted @ 2013-08-27 21:44 yejinru 阅读(333) 评论(0) 推荐(0) 编辑
摘要: gss2调了一下午,至今还在wa。。。我的做法是:对于询问按右区间排序,利用splay记录最右的位置。对于重复出现的,在splay中删掉之前出现的位置所在的节点,然后在splay中插入新的节点。对于没有出现过的,直接插入。询问时直接统计区间的最大子段和。gss2没能调出bug,所以看了一下以下的gss3,发现跟gss1基本一样。直接上代码以上的做法是错的,对于这种数据就过不了。姿势不对,囧44 -2 3 -211 4GSSCan you answer these queries III题目:给出一个数列,有两种操作:0.把第x项变为y1.询问区间[l,r]的最大子段和分析:线段树简单区间操作。 阅读全文
posted @ 2013-08-27 20:03 yejinru 阅读(246) 评论(0) 推荐(0) 编辑
摘要: 今天下午不知道要做什么,那就把gss系列的线段树刷一下吧。Can you answer these queries I题目:给出一个数列,询问区间[l,r]的最大子段和分析: 线段树简单区间操作。 线段树中记录lx,rx,mx,分别表示:最大前驱连续和,最大后继连续和,区间最大子段和。 在合并时时只需要合并两个区间即可,具体可以看代码的Union。 从队友jingo那里学到了这种合并的写法,发现比网上大部分代码简单很多。#include #include #include #include #include #include #include #include #include #includ 阅读全文
posted @ 2013-08-27 15:07 yejinru 阅读(307) 评论(3) 推荐(0) 编辑
摘要: 开了个小号做,C题一开始看错范围,D题看了半小时才看懂,居然也升到了div1,囧。C - Xenia and Weights给出一串字符串,第i位如果是1的话,表示有重量为i的砝码,如果有该种砝码的话,数量有无限多个。现在往天平的两侧放入,每次放入的要求:1.每次放入时和上次放入的砝码的重量不能一样。2.放入的那端天平必须必另一端重。问能否放入n次,能的话,求放入方式。分析: 比赛时看到很多人写的是贪心,但是想不到有什么好的数据叉掉他们,囧。 我写的是直接dfs爆搜。代码略吧。D - Xenia and Bit Operations这题挺有意思的。只不过比赛时纠结了半个小时的题意,看懂了之.. 阅读全文
posted @ 2013-08-27 02:03 yejinru 阅读(330) 评论(0) 推荐(0) 编辑