- 博客(6)
- 收藏
- 关注
原创 Codeforces Round #686 (E,F)
E 一直一颗基环树,问有多少种简单路径。先找到这个环,然后环上每个点为根连接的环外的点会构成一个树,这棵树内两两构成一条路径,与每个树外节点都构成两条路径(分别走环的两端)。#include<iostream>#include<cstring>#include<cstdio> using namespace std;typedef long long ll;const int N=200010; int n,m,t;int h[N],e[N<&
2020-11-27 17:53:52 1061 5
原创 AtCoder Beginner Contest 184
C - Super Ryuma每个点可以到的区域可以分为两种情况:方式1.以起点为原点直线 y=x 和 直线 y=-x 上的点;方式2.与起点曼哈顿距离小于等于3的点,任意两点之间至多需要移动三次,过起点做斜率为1的直线,以重点做斜率为-1的直线(交换一下也可以),一定有交点,如果交点坐标都为整数,则两次就可以,否则就要三次(偏移一个单位即可移动两次)。#include<iostream>#include<cstdio>#include<cstring>
2020-11-23 21:51:40 215
原创 P3380 【模板】二逼平衡树(树套树)
排名,修改,前驱和后继通过平衡树都很好实现,查询排名为k的值不是很好实现,因为这个区间可能在线段树的多个区间内,就需要在多棵平衡树中找,合并也不太现实,换个思路:二分值,找到排名小于k的最大值,然后在对它求一个后继就好了。#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#include<cstdlib>using namespace std;
2020-11-17 19:33:08 783
原创 Tree Requests [CodeForces - 570D]
传送门dsu on tree 的经典题能组成回文串的前提是至多有一种字符是奇数个,统计同一深度下各种字符个数即可。启发式合并即可优雅的暴力统计。ps:一直wa41,也找不到错误,看了样例才发现输入中多了一个空行,我是单个字符读入的。又发现一个新的wa题方法。。。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<vector>
2020-11-11 17:32:05 180
原创 2020 ccpc长春 F Strange Memory (树上启发式合并)
直接暴力每颗子树复杂度是O(n2n^2n2)的,树上启发式算法是可以将复杂度优化到O(nlogn)的。启发式算法是基于人类的经验和直观感觉,对一些算法的优化。举个栗子:并查集的按秩合并,合并时将秩(集合的高度)小的集合合并到秩大集合上去。对于树来说也是可以的,不过合并树的话就不能看高度了,而要看树的节点数量,沿用树链剖分的轻重儿子的概念,就是将轻儿子的子树的贡献合并到重儿子的子树上去。#include<iostream>#include<cstdio>#include&.
2020-11-11 10:54:13 771
原创 区间的连续段 (倍增)
f[i][j]表示:以i为起点跳过2j2^j2j个区间后最远能跳到的点(该点不在区间)。j>0时 f[i][j]=f[f[i][j-1][j-1];j=0时就得令外找了,双指针扫一遍就好。最终要找区间[l,r]的值,从l出发一直向后跳,最后一个区间不一定最大,所以一直跳到离r最近的点即可。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#incl.
2020-11-06 10:37:14 221
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人