摘要:
栈模拟,哈希 #include<iostream> #include<cstdio> #define ri register int #define u unsigned long long namespace opt { inline u in() { u x(0),f(1); char s(ge 阅读全文
摘要:
比较巧妙的状压! 需要扩展的一半的为1,其余为0, 上下两行|一下就是横着放的格子 注意预处理与M有关! 本行:i&1 上行:i&1^1 从一行开始,则初始化0行 #include<iostream> #include<cstdio> #define ri register int #define 阅读全文
摘要:
区间dp,递归写法, #include<iostream> #include<cstdio> #define ri register int #define u long long namespace opt { inline u in() { u x(0),f(1); char s(getchar 阅读全文
摘要:
注意要遍历完整个2倍区间!!! 调了好久! #include<iostream> #include<cstdio> #define ri register int #define u int namespace opt { inline u in() { u x(0),f(1); char s(ge 阅读全文
摘要:
贪心,倍增优化n至log(n) #include<iostream> #include<cstdio> #define ri register int #define u int namespace opt { inline u in() { u x(0),f(1); char s(getchar( 阅读全文
摘要:
单调队列 zhk手写单调队列定义: 初始时 l=r=0 (l,r] 为有效元素 删除最左元素 ++l 删除最右元素 --r 队列有有效元素:l+1<=r ,即 l<r 取最左点 q[l+1] 取最右点 q[r] #include<iostream> #include<cstdio> #define 阅读全文
摘要:
写此题时并不会multiset,就写了个树状数组 先把100,000,000的数据离散化了,最多就对映到1-200,000(理由见数据范围 开权值树状数组,即1-200,000的范围 排序后贪心思路是一样的,查询第1个大于等于是什么数时就二分 初始区间为 左端点:当前奶牛花钱最小值 右端点:N+M 阅读全文
摘要:
Number2000ms 65536KB【 description】 有 N(2<=N<=15)个数 A1,A2,....,An-1,An,如果在这 N 个数中, 有且仅有一个数能整除 m, 那么整数 m 就是一个幸运数, 你的任务就是在给定A1,A2,....,An-1,An 的情况下, 求出第 阅读全文
摘要:
树上分组背包模型, 即每个子树选一种状态,状态为f[x][y]表示以x为根的子树中选y个的最大价值,怎么选并没有影响 注意y>=1则x必须选,即x必须先选了,y即其子节点才能选 同样是森林,需要建立虚点N+1连向无先行课的课 #include<iostream> #include<cstdio> # 阅读全文
摘要:
每个节点只与其子节点状态有关,所以设f[x][0/1]表示x点不选或选 建立一个虚点N+1链接到所有最高级的没有上司的上司,答案就是f[N+1][0],因为虚点不可选 #include<iostream> #include<cstdio> #define ri register int #defin 阅读全文