摘要:
题意 一颗1e5的数,1e5的询问,两种操作: 1.给x到y的所有点染成一种颜色 2.问x到y的路径上有多少段相同的颜色 思路 先考虑序列上,12操作均可以使用线段树来处理 需要注意的是,询问时只有在线段树上往两边同时下传的时候,才需要判断是否x需要答案 1 所以写的时候分三段写比较方便 阅读全文
摘要:
题意 构造了一个数组,其中每相邻三个数(a,b,c)为一组,满足a=id){ now=i;break; } } ll x = po[now 1]+id s(now 1) 1; vectorv; ll X = x; while(X){ v.pb(X%4);X/=4; } ll y = 0; rever 阅读全文
摘要:
题意 1e3 1e3的网格,每个格子有一种颜色,共有40种颜色,每个格子可以上下左右走,相同颜色的格子可以一步传送到 1e5组询问,每次给你起点和终点st,问你最少几步走到 思路 如果不使用传送,答案就是曼哈顿距离 否则的话我们可以枚举中间传送的那种颜色i,答案就是(s到颜色i的最短路)+(y到颜色 阅读全文
摘要:
题意 5e4个可重集合,初试全空,5e4个操作: 1.在第[l,r]集合里加入一个数c 2.问[l,r]所有集合的并的第k大数 思路 发现很多题解都写得权值线段树套区间线段树啊,我觉得这题反过来套比较直白吧。。 不过写了一半陷入了奇怪的思维漩涡里。。 就跟着题解写了个权值套区间线段树,在luogu上 阅读全文
摘要:
题意 给你长度为500的串a,b,问你是否存在一种b的划分方式,使得b的两个子串是a的两个不重合的子序列 思路 先枚举分割点 记$f[i][j]$为a串处理到i,b串处理到j时,b串的两个子串个匹配成功了多少 那么我们先枚举n,再枚举m,再维护一下$b_1$串匹配了i个时$b_2$串匹配成功的最大值 阅读全文
摘要:
题意 给你一棵树,q个询问(x,y,a,b,k),每次问你如果在(x,y)加一条边,那么a到b能不能走k步,同一个点可以走多次 思路(翻译题解) 对于一条a到b的最短路径x,可以通过左右横跳的方法把他扩大成任意的$x+2i(i\geq 0)$,只要存在一个能使得它等于k的i即可。。 在这一题中,如果 阅读全文
摘要:
题意 给nv; int find(ll x){ return lower_bound(v.begin(),v.end(),x) v.begin()+1; } ll P[maxn],L[maxn],R[maxn]; vectorin[maxn],out[maxn],hv[maxn]; ll Padd, 阅读全文
摘要:
题意 2e5的数组,q个操作 1.将$a[x]$改为y 2.求下标l到r内所有的$a[i]$通过加法不能构成的最小的值 思路 通过二操作可以知道需要提取l到r内的值及其数量,而提取下标为l到r内的元素是~~一定~~要用主席树的 而用树状数组套上主席树即可实现修改操作 剩下需要解决的就是二操作: 首先 阅读全文
摘要:
题意 给你一个1e5的字符串,让你求出子串的数量,使得子串满足: 长度为$3n 2$,且$[1,2n 1]$和$[n,3n 2]$都是回文串 思路 可以看出,这两个回文串长度都是奇数 我们先用马拉车处理出每个字符$s[i]$可以左右扩展的最长长度$a[i]$ 我们找的就是找$(i,j)$的对数$(i 阅读全文
摘要:
题意 在一颗有点权的树上,选若干个点,使得这些点两两距离大于k,且点权和最大 思路 贪心的取比较大的值即可 将所有点按照深度从大到小排序,如果当前点点权$a[i]$大于0,则将距离为k以内的所有点减$a[i]$ 代表取了当前点,为答案贡献$a[i]$ 如果下面又扫到大于零的点权,说明那个点比这个大, 阅读全文