摘要: 传送门:https://www.luogu.com.cn/problem/P3469 我们分析题意:首先,对于完整的原图,任意两点连通,有总共的方案数:n*(n-1) 我们来分析要“阻断”的点,设这个点为i (1)如果i不是割点,那么删去他以后,原图的n-1个点仍然存在连通性,应该减少了2*(n-1 阅读全文
posted @ 2020-03-04 18:06 会飞的字符串 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 1.并查集:(只加上了路径压缩优化) int fa[N];int find(int x){ if(fa[x]==x) return x; else { fa[x]=find(fa[x]); return fa[x]; }}void merge(int x,int y){ fa[find(x)]=fi 阅读全文
posted @ 2020-03-03 18:01 会飞的字符串 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 树状数组:实质上维护一个O(nlogn)的前缀和序列。 模板: (1)支持单点修改,区间和查询。将区间按lowbit划分,提高效率。 单点更新:对于坐标x加上k:update(x,k) 区间查询:[l,r] Query(r)-Query(l-1); AC code: /* Tree Array*/# 阅读全文
posted @ 2020-03-02 22:28 会飞的字符串 阅读(120) 评论(0) 推荐(0) 编辑
摘要: 1.前缀和S=∑(i=1 to n) ai 2.二维前缀和S[i][j]=S[i-1][j]+s[i][j-1]-S[i-1][j-1]+A[i][j]; 求矩形(L,R)内的数之和,设右上角坐标为(x,y) Sum=S[x][y]-S[x-L][y]-S[x][y-R]+S[x-L][y-R]; 阅读全文
posted @ 2020-03-01 18:52 会飞的字符串 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 传送门:http://poj.org/problem?id=1958 汉诺塔:https://www.cnblogs.com/antineutrino/p/3334540.html 问题引入:这个在标准的三塔问题上又加了一维,我们先考虑三个塔是怎么计算的?可以具体地分成三个步骤: 1.假设A塔上有n 阅读全文
posted @ 2020-03-01 11:22 会飞的字符串 阅读(116) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=2288 1.常见的二进制表示: 将n位二进制数取出第k位:(n>>k)&1 将n为二进制数取出第0~k-1位:n&((1<<k)-1) 将n的第k位取反:n Xor (1<<k) 将n的第k位赋成1:n | (1<<k) 将n的第k位改成0:n& 阅读全文
posted @ 2020-02-29 18:14 会飞的字符串 阅读(120) 评论(0) 推荐(0) 编辑
摘要: 1.位运算:https://www.cnblogs.com/yrjns/p/11246163.html 符号描述运算规则 & 与 两个位都为1时,结果才为1 | 或 两个位都为0时,结果才为0 ^ 异或 两个位相同为0,相异为1 ~ 取反 0变1,1变0 << 左移 各二进位全部左移若干位,高位丢弃 阅读全文
posted @ 2020-02-10 07:21 会飞的字符串 阅读(204) 评论(0) 推荐(0) 编辑
摘要: 1.(a^b)mod p POJ 1995 快速幂板子题 (附带板子) typedef long long ll; ll mod; ll qp(ll a,ll b) { ll ret=1,base=a; while(b) { if(b&1) ret=(ret*base)%mod; base=(bas 阅读全文
posted @ 2020-02-09 22:23 会飞的字符串 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 题意:先给出一棵无根树,然后下面再给出m条边,把这m条边连上,然后每次你能毁掉两条边,规定一条是树边,一条是新边,问有多少种方案能使树断裂。 STEP ONE: 我们考虑所有的新边: 对于新边(u,v),必然会和树边构成一个环:u-->lca(u,v)-->v >u 如果只有一个环,显然,我们只需要 阅读全文
posted @ 2019-11-15 15:03 会飞的字符串 阅读(163) 评论(0) 推荐(0) 编辑
摘要: /* 宝藏 1.20%数据为一颗树,而且边权相等 设x为根,那么代价显然是: ∑d[x]*v; d[x]表示x节点到根节点的距离 树的重心问题! 我们考虑树形DP 先求出了所有节点的大小size[x] 其实我们只需要找到最大子树大小最小的节点即可! dfs(int u,int fa) { size[ 阅读全文
posted @ 2019-11-14 21:37 会飞的字符串 阅读(127) 评论(0) 推荐(0) 编辑