夏夜、

心若平似镜、何题不AC。

09 2013 档案

HDU 3265 Posters 线段树 扫描线
摘要:把一张海报剩余的部分分割成四个小矩形,然后就是简单的矩形面积并了。//#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;typedef long long ll;typedef pair pii;#define pb(a) push_back(a)#def 阅读全文

posted @ 2013-09-13 12:40 BMan、 阅读(229) 评论(0) 推荐(0)

HDU 1828 Picture 线段树 扫描线
摘要:写完后才发现数据是int不是double...//#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;typedef long long ll;typedef pair pii;#define pb(a) push_back(a)#define INF 0x 阅读全文

posted @ 2013-09-12 11:30 BMan、 阅读(202) 评论(0) 推荐(0)

HDU 1542 Atlantis 线段树 扫描线
摘要:开始学扫描线http://www.2cto.com/kf/201307/231714.html终于找到一个有图的了,智商有限没图看不懂。自己的代码:a.因为每个矩形的左右两条边是一一对应的,所以不必下放标记。b.这里线段树的一个结点并非是线段的一个端点,而是该端点和下一个端点间的线段,所以题目中r+1,r-1的地方可以自己好好的琢磨一下//#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#include#include#include#include#include#include 阅读全文

posted @ 2013-09-11 14:59 BMan、 阅读(247) 评论(0) 推荐(0)

POJ 2155 Matrix 二维线段树
摘要:一开始还想跟一维一样用懒惰标记,死活搞不出,看到网上有人说二维的只能做到区间查询单点更新,或单点更新区间查询,用不了懒惰标记。释怀了。。。用标记永久化,也就是说一个节点的标记不用往下传,从顶到下查询节点的时候每遇到一个标记就修改答案就行了。//#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#include#include#include#include#include#include#include#include#include#include#include#includeu 阅读全文

posted @ 2013-09-10 16:40 BMan、 阅读(252) 评论(0) 推荐(0)

hdu 1823 Luck and Love 二维线段树
摘要:母线段树每个节点保存一个子线段树。//#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;typedef long long ll;typedef pair pii;#define pb(a) push_back(a)#define INF 0x1f1f1f 阅读全文

posted @ 2013-09-10 16:36 BMan、 阅读(159) 评论(0) 推荐(0)

UVA 12299 RMQ with Shifts 线段树
摘要:简单的单点更新//#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;typedef long long ll;typedef pair pii;#define pb(a) push_back(a)#define INF 0x1f1f1f1f#define 阅读全文

posted @ 2013-09-09 15:42 BMan、 阅读(198) 评论(0) 推荐(0)

HDU 4578 Transformation 线段树
摘要:三个标记,注意到乘法标记会影响加法标记,然后就是一般的成段更新了。AC后搜别人的题解发现原来替换标记可以用一个乘0和加c代替,这样就不用三个标记了。//#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;typedef long long ll;typede 阅读全文

posted @ 2013-09-09 15:38 BMan、 阅读(297) 评论(0) 推荐(0)

FZU 2105 Digits Count 线段树
摘要:每一个二进制位建一颗线段树,总共4颗。然后几个操作:AND 如果opn在某位上为0,则将这一位的树的[l,r]成段替换为0;OR 如果opn在某位为1,则将这一位的树的[l,r]成段替换为1;XOR 一般的异或标记#include #include #define lson idx > 1; ... 阅读全文

posted @ 2013-09-07 16:57 BMan、 阅读(270) 评论(0) 推荐(0)

UVA 1513 Movie collection 树状数组
摘要:假设每秒进行一次操作,用一个数组保存每个电影上一次操作的时间da[i]=t。那么要知道第i部电影上面有多少只要找到“时间>da[i]”的有多少个就行了,这一步可以用树状数组实现。x[t]表示某个时间t是否在da数组中,用树状数组统计sum{x[i] ,i>da[k]}我们可以把电影的初始状态看成以n,n-1,n-2.....1的顺序全部操作了一遍。注意每次查询后要把之前的旧时间清除,且更新da数组.//#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#include#i 阅读全文

posted @ 2013-09-04 23:41 BMan、 阅读(328) 评论(0) 推荐(0)

UVA 12086 Potentiometers 树状数组
摘要://#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;typedef long long ll;typedef pair pii;#define pb(a) push_back(a)#define INF 0x1f1f1f1f#define lson id 阅读全文

posted @ 2013-09-04 18:22 BMan、 阅读(161) 评论(0) 推荐(0)

UVA 1292 Strategic game 树形DP
摘要:基础题目。 dp[i][j]表示结点为i,且父节点选取情况为j的状态(j=1表示选,0不选)//#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;typedef long long ll;typedef pair pii;#define pb(a) pus 阅读全文

posted @ 2013-09-03 21:01 BMan、 阅读(229) 评论(0) 推荐(0)

UVA 10817 Headmaster's Headache 状态DP
摘要:因为每个人只能选一次,所以枚举状态的时候从大到小。读入数据比较麻烦,可以用istringstream 或sscanf 或自己写个函数逐个字符处理。//#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;typedef long long ll;typedef 阅读全文

posted @ 2013-09-03 19:13 BMan、 阅读(260) 评论(0) 推荐(0)

UVA 10564 Paths through the Hourglass DP
摘要:注意用long long。//#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;typedef long long ll;typedef pair pii;#define pb(a) push_back(a)#define INF 0x1f1f1f1f#d 阅读全文

posted @ 2013-09-03 17:00 BMan、 阅读(266) 评论(0) 推荐(0)

HDU 3397 Sequence operation 线段树 成段更新 区间合并
摘要:比较综合的题。两个标记 setv,xorr。setv的优先级高于xorr,当一个节点获得一个setv时,他之前的xorr要清除。//#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;typedef long long ll;typedef pair pii 阅读全文

posted @ 2013-09-02 18:05 BMan、 阅读(1103) 评论(0) 推荐(0)

HDU 3308 LCIS 线段树 单点更新+区间合并
摘要:感觉区间合并都一个样,没什么好说的。//#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;typedef long long ll;typedef pair pii;#define pb(a) push_back(a)#define INF 0x1f1f1 阅读全文

posted @ 2013-09-02 00:51 BMan、 阅读(164) 评论(0) 推荐(0)

POJ 3667 Hotel 线段树 区间合并
摘要:结点记录三个信息,区间最长的连续空房间,最长前缀和后缀//#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;typedef long long ll;typedef pair pii;#define pb(a) push_back(a)#define IN 阅读全文

posted @ 2013-09-01 23:53 BMan、 阅读(221) 评论(0) 推荐(0)

UVALive 3942 Remember the Word Tire+DP
摘要:dp[i]=sum{dp[j]},s[i...j-1]为出现过的单词,每次从s[i]开始查找全部出现的前缀s[i..j],前缀在Tire中存在则转移状态。//#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;typedef long long ll;typ 阅读全文

posted @ 2013-09-01 10:51 BMan、 阅读(269) 评论(0) 推荐(0)

导航