摘要:
FFT后减去重复选取的方案数。#include#include#includeusing namespace std;typedef long long ll;const int N=131072;int n,i,m,k;ll ans[N],sum[N],f1[N],f2[N];struct com... 阅读全文
摘要:
首先预处理出[1,i]的答案设nxt[i]表示i下一次出现的位置随着左端点l往右移,[l+1,nxt[l]-1]里答案都减去它的价值,[nxt[l],nxt[nxt[l]]-1]里答案都加上它的价值线段树维护#include#define N 1000010typedef long long ll;... 阅读全文
摘要:
将坐标离散化后,对于每一个坐标建立一棵动态开节点的线段树,支持查询最大值、和,以及标记下放。#include#includeusing namespace std;typedef pair P;typedef long long ll;const int N=30010,T=300010;struc... 阅读全文
摘要:
将所有炸弹按坐标排序x#include#define N 100010#define M 1700010typedef long long ll;struct P{ll x,r;int id;}a[N];inline bool cmp(P a,P b){return a.xb)a=b;}inline... 阅读全文
摘要:
旋转坐标系后转化为正方形,$x'=x+y$,$y'=x-y+1000001$,$k'=2k-1$两根扫描线从左往右扫f[i]表示y坐标下边界为i时的价值和每次加入/删除一个点等价于一段区间加减然后查询全局最大值线段树维护扫描线之间的点#include#includeconst int E=10000... 阅读全文
摘要:
f[i]表示以i为结尾的LIS长度对于所有f[i]=1的,由S向i连边对于所有f[i]=maxf的,由i向T连边对于j#includetypedef long long ll;const int N=1410,BIT=12;const ll MOD=(1LLMOD)c.ex[i-1]++,c.ex[... 阅读全文