摘要:把一张海报剩余的部分分割成四个小矩形,然后就是简单的矩形面积并了。//#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
阅读全文
摘要:写完后才发现数据是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
阅读全文
摘要:开始学扫描线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
阅读全文
摘要:一开始还想跟一维一样用懒惰标记,死活搞不出,看到网上有人说二维的只能做到区间查询单点更新,或单点更新区间查询,用不了懒惰标记。释怀了。。。用标记永久化,也就是说一个节点的标记不用往下传,从顶到下查询节点的时候每遇到一个标记就修改答案就行了。//#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#include#include#include#include#include#include#include#include#include#include#include#includeu
阅读全文
摘要:母线段树每个节点保存一个子线段树。//#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
阅读全文
摘要:简单的单点更新//#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
阅读全文
摘要:三个标记,注意到乘法标记会影响加法标记,然后就是一般的成段更新了。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
阅读全文
摘要:每一个二进制位建一颗线段树,总共4颗。然后几个操作:AND 如果opn在某位上为0,则将这一位的树的[l,r]成段替换为0;OR 如果opn在某位为1,则将这一位的树的[l,r]成段替换为1;XOR 一般的异或标记#include #include #define lson idx > 1; ...
阅读全文
摘要:假设每秒进行一次操作,用一个数组保存每个电影上一次操作的时间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
阅读全文
摘要://#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
阅读全文
摘要:基础题目。 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
阅读全文
摘要:因为每个人只能选一次,所以枚举状态的时候从大到小。读入数据比较麻烦,可以用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
阅读全文
摘要:注意用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
阅读全文
摘要:比较综合的题。两个标记 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
阅读全文
摘要:感觉区间合并都一个样,没什么好说的。//#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
阅读全文
摘要:结点记录三个信息,区间最长的连续空房间,最长前缀和后缀//#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
阅读全文
摘要: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
阅读全文