摘要:
先把所有点绕原点逆时针旋转(360-a)度,再把所有点横坐标除以放大倍数p,最后用随机增量法求最小圆覆盖即可。时间复杂度期望$O(n)$#include#include#includeusing namespace std;struct P{double x,y;}a[50005],o;inline... 阅读全文
摘要:
A类数据:$n,q\leq1000$修改:$O(1)$直接改查询:$O(n)$BFSB类数据:$n,q\leq100000$,保证是一条链用线段树维护区间最大前缀、后缀和修改:$O(\log n)$查询:答案为max([1,x]的最大后缀和,[x,n]的最大前缀和),$O(\log n)$C类数据:... 阅读全文
摘要:
设val[i]为i连出去的树突中输出值为0的个数如果val[x]#define N 500010int f[N*3],son[N][2],size[N],val[N],cnt1[N],cnt2[N],tag[N],a[N];inline void read(int&a){char c;while(!... 阅读全文
摘要:
这回是真·强制在线了,首先这道题就是AHOI2013连通图的加强版,那道题k最大只有4那道题的做法是:取一个生成树,对每条非树边取一个随机权值,对每条树边设为“覆盖它的所有非树边”的权值的xor,对于每次询问,只要某个子集的所有边xor值是0,那么就不连通,否则连通。通过$O(2^k)$枚举每一个子... 阅读全文
摘要:
可以发现,从头到尾有一堆点是始终连在一起的,所以把没被删掉的一开始就有的边都加上后求出每个联通块,缩完点后我们发现,边数也减少得差不多了,剩下的就直接暴力。#include#define N 5010#define M 200010#define Q 10010inline void read(in... 阅读全文
摘要:
考试的时候看少了一行,导致暴力都写错额…贾教说他出的这题水,但是我觉得并不水,那个结论还是很神的。首先M(i)就是i的最小生成树的最大边,设f[i]表示i属于哪个集合我们把边按权值从小到大排序,对于一条边(u,v),权值为w,如果w#include#define N 100010using name... 阅读全文