摘要:题意:有一个无限长度的文本编辑器,刚开始没有内容,光标在第一格,接下来有n个操作,操作可能有3种: 1.光标左移一格,如果已经在第一格则不动 2.光标右移一格 3.将当前光标所在格的字符改成输入的字符 每次操作后问当前所有内容对于括号序列是否合法,若非法输出-1,否则输出括号的最大层数 n<=1e6
阅读全文
摘要:题意: 思路:考虑构造最小的单位矩形然后平铺 单位矩形中每种矩形的数量可以根据比例算出来,为c[i]/d,其中d是所有c[i]的gcd,如果能构造成功答案即为d的因子个数 考虑如果要将两种矩形放在同一行那他们的w一定相等,且对于每一行h全部出现过并且比例相当 具体实现的时候用map套vector,发
阅读全文
摘要:题意:给定n道题目,每道题目有k个选项,已知所有正确选项,选对1题得1分 问循环后移一格后总得分s2大于原先总得分s1的方案数 n<=2e5,1<=k<=1e9 思路:特判k=1 easy版本的话写了dp dp[i][j]表示前i道题循环后s2比s1高j的方案数,j=【-n,n】,n方dp即可 ha
阅读全文
摘要:题意:有一个长为n的数字字符串,要求其中插入k个加号,求所有合法表达式的和之和 0<=k<n<=1e5 思路:参考官方题解,讲的很好很清楚 字符串下标从0开始 考虑第i位d[i]的贡献,分两类讨论 1.d[i]不是最后一个串 枚举i到该串最后一个字符的距离l d[i]之前未知,从d[i]到d[i+l
阅读全文
摘要:题意:A和B玩游戏,一共n轮,A先B后,第i轮两人分别能得到a[i]和b[i]的得分,累加到当前得分和中 每一轮进行完之后A可以选择抵消得分,即两者都减去两者的min 若某个时刻某个人得分和不小于K则判负 问A最少抵消几次能赢 n<=2e5,K<=1e9 思路:因为两人得分和的差不变,考虑A最后抵消
阅读全文
摘要:题意:给定一张n个点的完全图,其中有m条边权为1其余为0,求最小生成树的权值和 n,m<=1e5 思路:答案即为边权为0的边连接的联通块个数-1 用set存图和一个未被选取的点的集合,bfs过程中如果找到边权为0且未被选取的边则加入 如果要维护联通块大小也在bfs里随便记一下就好 具体实现看代码
阅读全文
摘要:题意:给定一张n点n边无重边自环的无向图,刚开始每条边都没有被选择,每条边上有一个颜色集合,必须从中选择一种 有K个工人,每个工人有颜色a[i],需要把工人分配到与其颜色相同的边上 问是否能有一种使得n个点完全联通的方案,如果有则输出 n,K<=2000 思路:考虑n-1条边的树的弱化版,显然每条边
阅读全文
摘要:题意:给定一棵n个点的树,问删去某个点之后所有的树同构,这样分割出来的树最多能有几棵 n<=4000 思路:分割成至少两个size相等的联通块之后size必定小于n/2,与树的重心的定义相同 预处理出重心(0,1或2个)之后上无根树同构板子
阅读全文
摘要:题意:给定两个长度均为n且由小写字母组成的字符串,可以进行若干次操作,每次从两个串中分别选一个长度相等的子串进行翻转,问是否存在能使两串相等的一系列操作方案 n<=2e5 思路:首先如果每种字母的个数不相同显然NO 如果有某种字母出现超过两次显然YES,只要将两个字母移动到一起之后反复选择他便能无限
阅读全文
摘要:题意:求两个序列的LCIS n,m<=300,a[i]<=1e9 题意:O(n^2) O(n^3)的话设dp[i,j]为A终点为a【1..i】且B终点为b[j]的最大长度,分a[i]==b[j]和a[i]!=b[j]转移,枚举前一个在b中取的位置k转移 发现转移的下标集合每次只扩大最后一个,用前缀m
阅读全文
摘要:题意:给定一棵n个点的树,q次询问,每次询问以某个点为根的子树编号是多少 n,q<=3e5 思路:设sz[u]为以u为根子树的size,v为u的size最大的儿子 若sz[v]*2<sz[u]则u即为重心 否则重心在以v为根的重心到u的路径上,暴力往上走,可以证明是均摊O(n)
阅读全文
摘要:题意:有一个长为n的串,每个字符是#或者.中的一个,#不超过50个 有3种覆盖串的方式:(.),(..),(.#.),分别能获得g1,g2,g3的收益,覆盖之间不能重叠 第一种方式不能使用超过K次,问能获得的最大总收益,可以不覆盖完所有n个字符 n<=1e5,0<=g1,g2,g3<=1e3 思路:
阅读全文
摘要:题意:给定一棵n个点的树,要求将一条可以随意标号的链通过若干次操作变成这棵树 一次操作是指若v不为根且v的父亲不为根,则将v以及v的子树移到v的父亲的父亲上 要求给出标号方案,操作次数以及方案 n<=1e5 思路:考虑最小的操作次数,每一次操作可能使树的最大深度+1,事实上也存在这样的构造方案: 找
阅读全文
摘要:题意:有一个n*m的方格,每一格可能为空也可能有石头,要从(1,1)走到(n,m),每次可以往右或往下走 每次走的时候都会将自己面前的所有石头向移动方向推一格,如果碰到了边界就推不过去 问方案数模1e9+7 n,m<=2e3 思路:设dp[i][j][0/1]分别为当前走到(i,j),上一次从左/上
阅读全文
摘要:题意: 思路:因为线段树上每一段的矩阵之积只有两种,预处理一下,翻转的时候下传tag然后把另一种可能性换上来就好
阅读全文
摘要:题意: n,q<=1e5,a[i],b[i][j]<=1e9,保证能力值互不相同,询问之间保留前面的影响 思路:其实把大于a[1]的看成0,小于的看成1,设第i天小于a[1]的有b[i]个,本质上就是这样一个过程: 刚开始有b[0]个小于a[1]的,第1天先减去r[1]看是否小于0,若小于0则结束,
阅读全文
摘要:题意:有n个人,需要搞到全部n个人的票,搞到第i个人的票有两种方式:之前已经搞到mi个人的票,或者直接花费pi 问最小的搞到所有票的总代价 n<=2e5,1<=p[i]<=1e9,0<=m[i]<n 思路:考虑从大到小白嫖上限K 对于mi<=K的必定白嫖,对于mi>K的维护一个待定集合,设集合大小为
阅读全文
摘要:题意:给定一棵n个点带点权的树,要求从中选出一个点集,使得这些点两两之间距离都大于K,求最大点权和 n,K<=2e2,1<=a[i]<=1e5 思路:树形DP显然可做,极限是n方,然而贪心也是,还比dp好写 可以用寒假camp里cls差不多的想法 从深度大的向上贪心,暴力维护对答案的贡献,即如果贡献
阅读全文
摘要:题意:给定n条线段和覆盖上限k,每条线段都覆盖了区间内的整点 问最少删掉几条线段能使所有的整点都被覆盖不超过k次 k<=n<=2e5,l[i],r[i]<=2e5 思路:比赛时候不会做,当场好多div3小哥做出来,赛后观摩红名大佬的代码觉得强如闪电…… 考虑贪心,将线段存到以起点为编号的vector
阅读全文
摘要:题意:给定一个n*m的网格,其中k格有障碍 周驿东从(1,1)出发面朝右,每次行动前他可以选择顺时针旋转90度或不旋转,然后向自己朝向的位置走1格 问他能否不重复不遗漏的走过所有非障碍格 n,m,k<=1e5 思路:第一次看到E的一血比D早…… 事实上就是在模拟朝右、下、左、上这样循环走,每次遇到障
阅读全文