随笔分类 - 线段树
[校内训练21_02_20]
摘要:第一题在尝试了几个错误的dp后,意识到所有合法的序列可以抽象为选出一个子序列,并将他们拓展至长度为n的序列。为了避免记重,我们强制选择第一个出现的字符。于是,f[i][j]表示已经填了i个字符,现在正停留在原序列的第j个字符上,若是朴素转移,需要借助nxt[i][26],即下一个字符的位置。而这件事
阅读全文
[校内训练20_09_29]ABC
摘要:1.问一个圆上的最多不交弧的个数。 1 #include<bits/stdc++.h> 2 using namespace std; 3 const int maxn=1E6+5; 4 int n,m,tot; 5 int totT,tmp[maxn],jump[maxn][20]; 6 struc
阅读全文
[校内训练20_09_15]ABC
摘要:1.k个横着的障碍物(均在x轴上方),n个关健点(均在x轴上方),m个询问,问在某个坐标能看到多少个关键点(均在x轴下方)。k≤50,n,m≤100000,强制在线。 我只能说障碍物的两个端点很重要,因为它是许多关键直线的交点。这样判断一个点左侧有多少直线就只和与端点的连线的倾斜角有关了。 1 #i
阅读全文
[校内训练20_06_01]ABC
摘要:1.给出8个函数f(a,b,c)=k,其中a,b,c,k均为一个bool。对于一个长度为奇数的 零 一 字符串,我们称之为好的,当且仅当存在一种操作方法,使得这个字符串能变为1: 1.选出一个奇数i。令S=str[1,i],T=str[i+1,n] 2.从右往左将末尾3个数字替换为f(a,b,c)。
阅读全文
[家里训练20_02_28]ABC
摘要:A:有字符串A和B,若A和B匹配,那么字符集存在一个单射,使得F(A)=B。现在给出长度为n的序列和长度为m的序列,问第一个序列中有多少子串与第二个序列匹配。 回想kmp的过程,事实上,只要“等于号”满足传递性就可以进行匹配。 看代码就知道了。 1 #include<bits/stdc++.h> 2
阅读全文
[HNOI2014]道路堵塞
摘要:这是一篇没有代码的博客。目的是在全是玄学复杂度的算法中留下有复杂度保证的算法。 原文摘自千年之狐_天才 : 靠谱做法应该是A+线段树。用A跑k短路,第一次跑到的一定是所给最短路,其次跑到的所有最短路将答案更新。如果只是单纯这样的话,是不行的,因为所有路径都会被更新一次。但是我们不难发现一个信息,假设
阅读全文
[CF1037H]Security
摘要:题意 https://codeforces.com/contest/1037/problem/H 思考 贪心的思路是,尽可能多地找到读入串的一段前缀,然后再添上一个字典序比较大的字符。 先对原串建立SAM,考虑到有区间限制,需线段树合并维护endpos集合。 对于一个询问,我们现在SAM上找对它的前
阅读全文
[CF1192B]动态直径
摘要:题意 给一棵固定形态的树,边有边权,每次修改一条边权,在线求出修改后树的直径。 思考 写出树的全dfs序。生成方式为:每当一个点进栈或入栈时,记录它的编号。 考虑这个dfs序上两点之间的距离。设某个节点在dfs序中第一次出现的位置为$where_i$,第i个位置的节点为$what_i$两个点分别为u
阅读全文
19_08_10[校内训练]割图
摘要:题意 给一个图,对每个点求(删去一条出边)的(到一号节点的(最大的(最短路的长度))),有边权。n,m≤1E5。 方便起见,没有重边和自环。 思考 先建出最小生成树,可以发现每次一定要删去连向父亲的边。此后,会沿着它的出边走向其他或自己的祖先,再算上原先图的最短路长度。 那么对于每个节点维护一个堆,
阅读全文
19_07_11校内训练[字串染色]
摘要:题意 定义一个字符串某个子串的价值为:将其所有出现的位置染成黑色后,黑色连续段的个数。问有多少本质不同的子串,价值恰好为K。n,K<=1E5。 思考 由本质不同的字符串,考虑SAM维护。对于SAM上的一个节点,其endpos集合代表了字符串中的一些位置。设这些位置相邻的距离的集合为dis,则对于这个
阅读全文
19_05_21校内训练[简单序列]
摘要:题意 定义一个序列的价值为其排序后所有位置(从1开始)乘以该位置元素的值的和,即∑i*ai。求一个长度为n的序列的所有连续子序列的价值和。 思考 一个序列的价值可看做所有的元素的和,加上所有无序二元组中较大的元素的值。 因此答案分为两部分:1.所有可能序列的元素和的和。考虑一个点,算出有多少区间包含
阅读全文
[CERC2017]Intrinsic Interval
摘要:题意 给出一个n排列,m次询问,每次查询长度最小的区间,使得这个区间排序后出现连续的整数(即相邻的差为1),并且包含(或等于)区间[l,r]。若长度相等,取l端点最小的。 n,m<=1E5 思考 重要的性质: 1.一个区间是连续的,当且仅当其存在r-l个无序二元组(x,y),满足|x-y|=1。 2
阅读全文
19_05_01校内训练[划分]
摘要:题意 给出长度为n的序列,只有1,0,-1。要求将其划分为若干长度在[L,R]之间的连续序列,一个序列若和大于0,造成1的贡献;若小于0,造成-1的贡献;否则没有贡献。求最大的贡献。 时间复杂度要求nlogn。 思考 线段树维护即可。以造成1的贡献为例。设当前前缀和为sumi,则需要在[max(0,
阅读全文
19_03_28校内训练[相似字符串]
摘要:题意 给出一个长度为n的序列,有m次询问,每次询问[l1,r1],[l2,r2]的区间,问排序后相同位置的不同数字个数是否小于等于1。如[1,3,2,2],[1,3,2,3]排序后为[1,2,2,3]和[1,2,3,3],不同的有2个,不符合。n,m≤1,000,000,数的大小≤50,000。 思
阅读全文
浙公网安备 33010602011771号