摘要:
| 题号 | 题目描述 | 解题思路 | | : | : | | | 3306 | 给出一棵带点权的有根树,支持单点修改,换根,询问x子树中的权值最小值. | 直接在DFS序上用线段树维护就好了. | | 3900 | 给出n个数对,求最小的交换次数,满足交换后每个数对相差不超过c | 压位,用$f 阅读全文
摘要:
题目梗概 有一张$n$个点的图,刚开始没有边,现在又两种操作,一种是加入一条边(如果这条边存在,否则删去这条边),一种是询问$x,y$是否联通。 $x,y$给出的形式是$(x+last 1)%n+1$,$(y+last 1)%n+1$,$last$为上一次询问的答案。 解题思路 对于这题的离线版本有 阅读全文
摘要:
题目大意 有$n$个集合,每次会将一个区间$[l,r]$中的所有集合加入一个数$x$。 最后询问,每个集合的最大连续段。连续段就是一个区间的元素都在一个集合中出现。 解题思路 考虑所有操作按$x$排序,所有我们只需要考虑操作的连续性即可。 对于连续性断开的区间我们区间赋$0$,否则就是区间$+1$, 阅读全文
摘要:
题目大意 给出一个$n$ $m$的空矩阵,每次可以使任意一行/列$+1/ 1$,给出$k$个位置的最终结果,询问是否存在解. $1 include using namespace std; const int maxn=2005; int tot,lnk[maxn],nxt[2 maxn],son[ 阅读全文
摘要:
A 模拟...... B 考虑保留前端的$ $,后端的$ include using namespace std; int n,T,ans; char s[105]; void work(){ scanf("%d",&n);scanf("%s",s+1);ans=n; int i=1;while(i 阅读全文
摘要:
题目梗概 定义一个序列是连续的,当且仅当这个序列的最大值 最小值不超过序列长度 1. 现在有一个长度为$n$的排列,给出以每个位置为右端点的最长连续区间的长度,求满足的排列的方案数. 解题思路 如果$a[n]!=n$且有区间相交显然无解. 那么我们可以根据区间的包含关系建出一棵以$n$为根的树,用$ 阅读全文
摘要:
题目梗概 给出两棵1为根的树,求$d[x]+d[y] d[lca(x,y)] d'[lca(x,y)]$的最大值 解题思路 套路化简之后$(d[x]+d[y]+dis(x,y) 2 d'[lca(x,y)])/2$ 第二棵树上的lca化不掉,所以考虑在第二棵上枚举lca 先说说这题的解法,边分树的合 阅读全文
摘要:
真好用... 把系数相乘看成$(a M+b) (c M+d)=a c M^2+(a d+b c) M+b d$的形式,这样FFT的精度就够用了... C++ include include include define LL long long using namespace std; define 阅读全文
摘要:
贴个模板... C++ include include define LL long long using namespace std; const int maxn=2100005,tt=998244353; int n,m,a[maxn],b[maxn],re[maxn]; int qsm(in 阅读全文
摘要:
题目梗概 给出两个$n n$的矩阵$A,B$,将$A,B$中的向量进行匹配,使得$A$的任意向量被匹配的向量替换后,$A$仍线性无关,求字典序最小解,保证初始时$A$线性无关. 解题思路 因为$A$是$n$维空间中的极大线性无关,所以$A$是$n$维空间的一组基,$B$中的任意向量可以用$A$的组合 阅读全文