摘要: 好累啊,不想写题解了,直接发别人的了。 By:smallling 这题我很二的折腾了一下午,唉,还是太弱了。这题的关键在于标记的更新与更新每个点的权值,更新标记我很快就写好了,思路很清晰,但是查找答案就头晕了,在处理下传标记、更新权值中纠结。。。。 这题我用sum来记录一段区间内1的个数,lseg记 阅读全文
posted @ 2016-03-30 19:58 羁旅 阅读(112) 评论(0) 推荐(0) 编辑
摘要: 用半平面交计算可行区域面积,除以总面积,得到概率。 假设当前站位的坐标为p(x,y),根据三角形面积最小,建立不等式关系。 1 #include <iostream> 2 #include <cstdlib> 3 #include <cstdio> 4 #include <cmath> 5 #inc 阅读全文
posted @ 2016-03-30 19:44 羁旅 阅读(182) 评论(0) 推荐(0) 编辑
摘要: 2333: [SCOI2011]棘手的操作 Description 有N个节点,标号从1到N,这N个节点一开始相互不连通。第i个节点的初始权值为a[i],接下来有如下一些操作: U x y: 加一条边,连接第x个节点和第y个节点 A1 x v: 将第x个节点的权值增加v A2 x v: 将第x个节点 阅读全文
posted @ 2016-03-30 19:32 羁旅 阅读(220) 评论(0) 推荐(0) 编辑
摘要: 维护一个字符串,支持插入,删除,翻转一段区间。 可以用Splay来做,光标位置可以用一个全局变量pos代替,移动光标操作就相应的修改pos就行了。 插入删除都是Splay基本操作,翻转区间需要打标记,下传的时候交换左右儿子就好了。 1 #include <iostream> 2 #include < 阅读全文
posted @ 2016-03-02 15:28 羁旅 阅读(120) 评论(0) 推荐(0) 编辑
摘要: 做的第一道树链剖分的题,树链剖分学习。 线段树维护重边就很简单了,单点修改,区间查询最大,区间求和,所以直接贴代码。 1 #include <iostream> 2 #include <cstdlib> 3 #include <cstdio> 4 #include <cstring> 5 #incl 阅读全文
posted @ 2016-03-02 15:20 羁旅 阅读(115) 评论(0) 推荐(0) 编辑
摘要: 首先我们枚举次大值,然后确定以这个数为次大值的最大区间。 这个区间就是左边第二个比它大的数的下标+1,右边第二个比它大的数的下标-1。 难就难在找到这个区间。 我们考虑将数排序,然后从大到小将数原来的下标插入set,此时set里的值都大于等于当前插入的数。 所以利用set找到前驱的前驱,后继的后继, 阅读全文
posted @ 2016-02-28 11:29 羁旅 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 显然可以看出这是一道DP,然后就开始定义状态。。。 f[i][j]表示已经处理完i根玉米,拔高了j次,剩下的玉米的最大值。 f[i][j] = max{f[x][y]+1}(x<i,y<=j,h[x]+y<=h[i]+j)。 于是就可以用二维树状数组维护最大值了,第一维维护拔高次数,第二维维护拔高后 阅读全文
posted @ 2016-02-28 11:04 羁旅 阅读(201) 评论(0) 推荐(0) 编辑