http://codevs.cn/problem/1743/
题解:思路:采用标记的方式减少操作。rev表示该节点及子树需要翻转。如果在kth()查询第k位置的卡片时走到这个节点o,就pushdown(o),把标记传到子节点,反转左右子节点。如果要反转的区间为[l, r],在rever操作中,将l-1伸展到根,再将r 1节点伸展到右节点。那么对应区间可以转化为ch[ch[o][1]][0]节点所...
分类:
其他好文 时间:
2015-02-07 13:17:35
阅读次数:
254
有n项工作,每项工作分别在Si时间开始,然后在Ti时间结束。对于每项工作,你都可以选择参与或者不参与。如果你选择了参与,那么你必须自始至终都全程参与。此外,参与的时间段不能重叠。(即使是开始的瞬间和结束的瞬间的重叠也是不允许的)
时间不限,你的目的是参与尽可能多的工作,那么最多能参与多少项工作呢?
思路:贪心算法。->在可选的工作中,每次都选取工作结束时间最早的工作。结束时间越早之后可选的工作...
分类:
其他好文 时间:
2015-02-07 13:14:12
阅读次数:
168
随便rand出一道题没想到这么可怕QAQ
之前没写过容斥的题
写这个题是第一次
Description
在中国,很多人都把6和8视为是幸运数字!lxhgww也这样认为,于是他定义自己的“幸运号码”是十进制表示中只包含数字6和8的那些号码,比如68,666,888都是“幸运号码”!但是这种“幸运号码”总是太少了,比如在[1,100]的区间内就只有6个(6,8,66,68,86,88),于...
分类:
其他好文 时间:
2015-02-07 11:48:07
阅读次数:
111
题目描述 Description在一个园形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分。试设计出1个算法,计算出将N堆石子合并成1堆的最小得分和最大得分.输入描述 Input Description数据的第1行...
分类:
其他好文 时间:
2015-02-07 10:20:03
阅读次数:
176
这题之前度娘上没有CDQ分治做法,gerwYY出来以后写了一个。不过要sort3遍,常数很大。gerw说可以类似划分树的思想优化复杂度,但是蒟蒻目前不会划分树(会了主席树就懒得去弄了)。嗯 将memset改成手动clear会快很多。还有就是第一维相同的情况,划分为两个不存在第一维相同的两个区间即可。...
分类:
其他好文 时间:
2015-02-06 20:23:02
阅读次数:
185
用Splay实现区间增减,查询区间和。要对一个区间进行操作只要先把元素在序列中的位置当做键值建树,然后对l,r操作只要把l - 1 splay到根,r+1 splay到根的右子树,那么r + 1的左子树里面就有这个区间的所有的元素了。对每个节点存一些信息,就可以很方便的处理了。不过这题用splay写...
分类:
其他好文 时间:
2015-02-06 18:27:09
阅读次数:
114
题意:给两个数A,B,求二进制表示下,区间[A,B]之前总共有多少个1。
思路:设dp[pos][ cnt ]为当前考虑pos位,之前的数中已经有cnt个1的时候,(pos+1)个数位与之前数位组成的含有1的个数。详见
代码:
/*********************************************************
file name: LA6527.cp...
分类:
其他好文 时间:
2015-02-06 16:47:05
阅读次数:
128
使用Jasper或BIRT等报表工具时,常会碰到一些非常规的统计,用报表工具本身或SQL都难以处理,比如交叉表的行组和列组都是分段区间,测度(measurem)来自其他数据库表。集算器具有结构化强计算引擎,集成简单,可以协助报表工具方便地实现此类需求。下面通过一个例子来说明双区间交叉表的实现过程。
表account_detail的主键为account_no,与表Paysoft_r...
分类:
其他好文 时间:
2015-02-06 13:19:41
阅读次数:
285
其实这里就是用Treap来实现了一个求和的过程,其实这种区间操作还是用线段树或者是Splay比较方便。将点排序之后随便搞一下就就好,要注意的就是有点重复情况,我这里是把树的每一个节点又添加了一个cnt域来维护的,自己手撸的平衡树就是这么灵活= =#include #include #include ...
分类:
其他好文 时间:
2015-02-06 13:07:20
阅读次数:
111