Solution -「SV 2020 Round I」SA】的更多相关文章

\(\mathcal{Description}\)   求出处 owo.   给定一个长度为 \(n\),仅包含小写字母的字符串 \(s\),问是否存在长度为 \(n\),仅包含小写字母的字符串 \(t\),使得 \(t<s\) 且 \(s,t\) 的后缀数组(\(\text{Suffix Array}\),sa[])相同.   \(n\le50\).(建议开到 \(n\le2\times10^5\). \(\mathcal{Solution}\) 奇怪的结论   若存在 \(t\),则存在一个…
\(\mathcal{Description}\)   link.   给定 \(n\) 个水果,每个结点可能有甜度 \(v_i\),或不甜(\(v_i=-1\)).现在把这些水果串成一棵无根树.称一个水果"真甜",当且仅当其本身和至少一个邻接水果是甜的.每个"真甜"水果对树的甜度产生 \(v_i\) 的贡献.求所有甜度不超过 \(maxv\) 的树.   \(n\le40\). \(\mathcal{Solution}\)   令无序地取恰好 \(i\) 个水果使…
\(\mathcal{Description}\)   Link.   Bessie 在一张含 \(n\) 个结点的有向图上遍历,站在某个结点上时,她必须按下自己手中 \(m\) 个按钮中处于激活状态的一个才能走向其他结点或终止遍历(不能原地等待).初始时,所有按钮都处于激活状态,按下 \(i\) 号按钮时,\(i\) 号按钮变为非激活状态,所有编号 \(<i\) 的按钮被激活.   给定 \(q\) 组形如 \((b_s,s,b_t,t)\) 的询问,求 Bessie 从 \(s\) 出发,第…
\(\mathcal{Description}\)   Link.   有 \(n\) 个牛棚,大小为 \(t_{1..n}\),\(n\) 头奶牛,大小为 \(s_{1..n}\),奶牛只能住进不小于自己的牛棚,每个牛棚最多住一头奶牛.求满足不能让更多奶牛住进牛棚的安排方案数,答案对 \((10^9+7)\) 取模.   \(n\le3\times10^3\). \(\mathcal{Solution}\)   把 \(s\) 和 \(t\) 倒一块儿升序排序,大小相同奶牛优先.那么相当于奶牛…
「LibreOJ NOI Round #2」不等关系 解题思路 令 \(F(k)\) 为恰好有 \(k\) 个大于号不满足的答案,\(G(k)\) 表示钦点了 \(k\) 个大于号不满足,剩下随便填的方案数. 枚举有多少个大于号被钦点了,\(F(0)=\sum_{i=0}^n G(i)(-1)^i\) . 对于一个只有小于号限制的序列的方案数就是每一个小于号链接的联通块里分配的数字顺序固定,块与块之间随便排,令 \(sz[i]\) 表示第 \(i\) 个联通块的大小,方案数也就是 $ \dfra…
二次联通门 : LibreOJ #507. 「LibreOJ NOI Round #1」接竹竿 /* LibreOJ #507. 「LibreOJ NOI Round #1」接竹竿 dp 记录一下前驱就好了 再随便用前缀和优化一下 O(N) */ #include <iostream> #include <cstdio> ; char Buf[BUF], *buf = Buf; inline long long max (long long a, long long b) { re…
\(\mathcal{Description}\)   Link.   给定一个长为 \(n\) 的非负整数序列 \(\lang a_n\rang\),你可以进行如下操作: 取 \([l,r]\),将其中所有 \(a\) 值 \(-1\): 取 \([l,r]\),将其中奇数下标的 \(a\) 值 \(-1\): 取 \([l,r]\),将其中偶数下标的 \(a\) 值 \(-1\).   求至少需要几次操作使得所有 \(a\) 值变为 \(0\).   \(n\le10^5\),数据组数 \(…
\(\mathcal{Decription}\)   Link.   这是一道通信题.   给定一个 \(n\) 个点 \(m\) 条边的连通无向图与两个限制 \(A,B\).   程序 Anthony 需要用 \(0\sim A-1\) 共 \(A\) 中颜色为无向图的每条边染色.   程序 Catherine 需要帮助一只猫行走:已知猫所在结点邻接每种颜色的边的数量,你需要告诉猫走哪种颜色的边(但不能让它走特定某条),并保证猫从起点 \(s\) 到 \(0\) 所走的距离不超过两点最短距离…
\(\mathcal{Description}\)   Link.   对于非空二叉树 \(T\),定义 \(\operatorname{grow}(T)\) 为所有能通过若干次"替换 \(T\) 的某个叶子为任意非空二叉树"的操作得到的二叉树集合:对于非空二叉树集合 \(\mathscr T\),定义 \(\operatorname{grow}(\mathscr T)=\bigcup_{T\in{\mathscr T}}\operatorname{grow}(T)\).多次询问,每次…
\(\mathcal{Description}\)   OurOJ.   有 \(n\) 个结点,一些结点有染有黑色或白色,其余待染色.将 \(n\) 个结点染上颜色并连接有向边,求有多少个不同(结点颜色不同或边不同)的图,满足: \(\forall \lang u,v\rang\in E,~1\le u<v\le n\): 相邻两点颜色不同的路径条数(包括单点)为奇数.   答案对 \(998244353\) 取模.   \(n\le2\times10^5\). \(\mathcal{Solu…
主要是记录思路,不要被刚开始错误方向带偏了 www 「CF1110F」Nearest Leaf 特殊性质:先序遍历即为 \(1 \to n\),可得出:叶子节点编号递增或可在不改变树形态的基础上调整为递增. 这样就可找出区间 \([l, r]\) 中的叶子节点有哪些了,预处理深度,暴力 \(O(n ^ 2)\). 考虑柿子 \(\min \{\mathrm{d} (y) - \mathrm{d} (\mathrm{f} (x))\}\),其中 \(d(x)\) 表示深度,\(f(x)\) 表示父…
Description T 城是一个旅游城市,具有 nnn 个景点和 mmm 条道路,所有景点编号为 1,2,...,n1,2,...,n1,2,...,n.每条道路连接这 nnn 个景区中的某两个景区,道路是单向通行的.每条道路都有一个长度. 为了方便旅游,每个景点都有一个加油站.第 iii 个景点的加油站的费用为 pip_ip​i​​,加油量为 cic_ic​i​​.若汽车在第 iii 个景点加油,则需要花费 pip_ip​i​​ 元钱,之后车的油量将被加至油量上限与 cic_ic​i​​…
综述 第一次 rk1 ,激动. 题目是 COCI 18/19 Round #1 的三至五题. 得分 \(100+100+20\) \(\mathrm{cipele}\) 问题描述 HZOJ1313 题解 二分答案+贪心 发现"最大值最小",自然想到二分答案. 对 \(a,b\) 排序,通过一些操作保证 \(a\) 比 \(b\) 短. 如果 \(b_j\) 不能被 \(a_i\) 选择,那么它一定不能被 \(a_k(k>i)\) 选择. 基于这个贪心配对即可. \(\mathrm…
description NOIP 复赛之前,HSD 桑进行了一项研究,发现人某条染色体上的一段 DNA 序列中连续的\(k\)个碱基组成的碱基序列与做题的 AC 率有关!于是他想研究一下这种关系. 现在给出一段 DNA 序列,请帮他求出这段 DNA 序列中所有连续 \(k\)个碱基形成的碱基序列中,出现最多的一种的出现次数. \(n\le5*10^6,k\le 10\) solution 直接找出所有连续\(k\)个碱基形成的碱基序列的哈希值即可 code #include<bits/stdc+…
description sosusosu 虐爆 OI 之后成为了一名文化课选手.一天,他做作业碰到了一堆数列问题,每道题给出的数列都是以下形式: 给定一个下标从\(0\)开始,无限长的整数列\({a_{i}}\),\(i \in N\) ,已知\(a_{0},a_{1}\) 的值,以及递推式\(a_{i+2}=ka_{i+1}+a_{i}\),\(i \in N\) ,\(k \in N^+\). sosusosu 研究了这些数列,发现它们十分优美充满人类智慧,于是决定出一道 OI 题. sos…
description 题面很长,这里给出题目链接 solution 用队列维护扔掉的红茶,同时若后扔出的红茶比先扔出的红茶编号更小,那么先扔出的红茶不可能成为答案,所以可以用单调队列维护 故每次询问的答案只可能是单调队列的队首或者没有出现过的红茶中编号最小的,后者可以\(O(b)\)暴力计算 code #include<bits/stdc++.h> using namespace std; namespace IO{ int c; unsigned int seed; unsigned in…
description 题面较长,这里给出题目链接 solution 考虑预处理出\(f[i][j]\)表示在第\(i\)个点加满油后,从第\(i\)个点出发,至多消耗\(j\)元钱走过的最大路程,那么对于每一个询问就可以二分答案\(O(logq)\)查询了 可以得出转移方程\(f[i][k]=\max(f[j][k-p[j]]+g[i][j],f[i][k])\),其中\(g[i][j]\)表示从在\(i\)点加满油后从\(i\)走到\(j\)能走过的最大路程 \(g\)可以使用倍增\(flo…
麻烦的动态DP写了2天 简化题意:给树,求比给定独立集字典序大k的独立集是哪一个 主要思路: k排名都是类似二分的按位确定过程. 字典序比较本质是LCP下一位,故枚举LCP,看多出来了多少个独立集,然后判断:枚举完LCP,再往回做过去. 外面: 假如是一串0101010表示每个点有没有在独立集里,然后比较这个01串的字典序? 枚举LCP,LCP下一位:原来是0,这次就是1:原来是1,这次必须还是1.后面的随便选择.找方案数 但是这里是一般的字典序,两个1中间的0都会省略,使得大小比较没有那么容易…
下面给出部分分做法和满分做法 有一些奇妙的方法可以拿到同样多的分数,本蒟蒻只能介绍几种常见的做法 如果您想拿18分左右,需要了解:质因数分解 如果您想拿30分左右,需要了解:一种较快的筛法 如果您想拿70分左右,需要了解:莫比乌斯反演+杜教筛+整除分块+容斥 如果您想拿100分,需要了解:线性筛+杜教筛+莫比乌斯函数+狄利克雷卷积+推式子+微积分+整除分块 这时候如果您还想做这道题的话... 18分做法 首先N=1 时,就是求不超过 M的完全平方数有多少个,直接输出\(\lfloor \sqrt…
哎一开始看错题了啊T T...最近状态一直不对...最近很多傻逼题都不会写了T T 考虑距离较大肯定不能塞进状态...钱数<=n^2能够承受, 油量再塞就不行了...显然可以预处理出点i到j走ci步的最长距离(一开始以为一条路耗油为路的长度T T), 这个是经典题, 倍增求就好了...然后就可以转移了呀T T 最后二分就好了呀T T... 我怎么这么菜啊, 还写了好久T T... 一开始还写成n^4logn TLE了半天没查到错 #include<iostream> #include&l…
被以前自己瞎YY的东西坑了T T...单调队列的确是可以维护这种操作的.... 显然这题可以转化成维护不在车上的东西的最小值, 支持插入和删去最早出现的值,然后就可以用单调队列了T T #include<iostream> #include<cstring> #include<cstdlib> #include<cstdio> #include<algorithm> #define ll long long #define uint unsign…
题目啰嗦:支持三个操作: 不可重复集合:1.加入一个数 2.删除一个数 3.恢复目前最早的一次删除的数 操作可能不合法,每次有效操作之后求集合的mex(最小没有出现过的数) 50组数据+1e6,必须O(N) 维护删除.恢复的数的操作可以队列维护. 数有没有在集合里可以全局bool数组记录 加入删除一个数,mex怎么维护? 考虑化简问题:只插入? 直接mex往上走到第一个没有出现的数即可.单增,O(N) 有删除? 如果删除小的一个数,mex要跳下来,然后再恢复这个删除的数,mex又得一步一步走上去…
[题意]给定正边权有向图,车油量上限C,每个点可以花费pi加油至min(C,ci),走一条边油-1,T次询问s点出发带钱q,旅行路程至少为d的最多剩余钱数. n<=100,m<=1000,C<=10^5,q<=n^2. [算法]动态规划 [题解]官方题解 虽然不是DAG,但是由于q很小的特点,将q加入状态就满足DP的无后效性了. 令f[i][q]表示当前在i点并在i点加油,加油前钱数为q的最大路程.(q<pi时,f[i][q]=0) 假设下一加油点为j,转移方程:f[i][q…
[题意]一开始车上有编号为0~a的红茶,过程中出现的红茶编号仅有[0,b),有三种操作: 1.买进编号未在车上出现过的红茶. 2.丢掉车上指定编号的红茶. 3.将最早丢出去的红茶捡回来. 每次操作后求编号最小的不在车上的红茶. [算法]单调队列 [题解]本题最重要的性质在于早丢早捡. 因此,当进行丢掉编号为x的红茶这一操作时,如果编号>x的红茶早丢,那么也一定早捡,所以这些红茶没有贡献. 所以用单调队列维护所有有效的红茶,那么捡回来的时候判断是否队头,每次答案就是min(队头,maxs+1),m…
[题意]LibreOJ [算法]乱搞 [题解]容易发现数列最后一定单调,最后单调递增则最大值赋为最后一个,反之最小值赋为最后一个,然后处理一些细节就可以AC,要注意以下几点: 1.数列连续三项以及数列最后一项>10^7时退出. 2.可能第一要求项就比你枚举的大,需要特判. 3.要求项的枚举不能等于最大项,不然会无法正常指向最后一个. #include<cstdio> #include<cstring> #include<cctype> #include<cm…
题目: 题解: 几何部分,先证明一下 \(KX = \sqrt{a},YL = \sqrt{b}\) 设左侧的圆心为 \(O\) ,连接 \(OK\) ,我们有 \(OK = r\). 然后有 \(r = \frac{a+1}{2},OX = r - a\) 勾股定理有 : \(KX^2 = OK^2 + OX^2\) 解得 : \(KX = \sqrt{a}\). 同理 : \(YL = \sqrt{b}\). 然后我们将 \(YL\) 向左平移直到 \(b\) 与 \(X\) 重合,设此时点…
题目: 题解: 我们考虑把每对花色相同的牌看作区间. 那么如果我们设 \(f_i\) 表示决策在 \([1,i]\) 内的最优答案. 那么有 \(f_i = max\{max\{(f_{j-1}+\sum_{k=j}^iv_k) | a_{j-1} = a_i\},f_{i-1}\}\) 我们可以记录每个点上一次出现的位置 \(la_i\). 那么每次我们更新的时候用 \(la\) 跳转即可. 然后我们发现每个数只能用和它相同的数的位置转移过来. 所以实际上这分成了若干的转移线. 然后我们发现在…
n<=100,m<=1000的图,在此图上用油箱容量C<=1e5的车来旅行,旅行时,走一条边会耗一单伟油,在点i时,若油量<ci,则可以把油以pi的价格补到ci,pi<=n*n,ci<=1e5,现T<=1e5个询问:从Ai出发,带Yi<=n*n块钱走不少于Si<=1e9的路程,问最多剩多少钱. 方法一:其实就是问从某个点出发,走路程Si,问最少花费.F(i,j,k)--从i出发,剩下j的油,走路程k最小花费,决策一下在i要不要加油即可. 方法二:走路程…
有一辆车一开始装了编号0-a的奶茶,现有m次操作,每次操作Pi在[-1,b),若Pi为一个未出现过编号的奶茶,就把他买了并装上车:若Pi为一个在车上的奶茶,则把他丢下车:否则,此次操作为捡起最早丢下去的奶茶,若没有符合要求的奶茶则忽略此次操作.对每次操作需要在线询问:操作进行后,不在车上的奶茶的最小编号.m<=1e6,b<=2m,a<=m,数据组数T<=50. 方法一:nlogn暴力,什么树状数组优先队列尽管上.. 方法二:不在车上的最小编号,其实就是还没买的最小和丢下车的最小,还…
题面 传送门 题解 感谢\(@M\_sea\)的代码我总算看懂题解了-- 这个操作的本质就是每次把\(x\)的\(k\)进制最低位乘\(2\)并进位,根据基本同余芝士如果\(k\)是奇数那么最低位永远不会变为\(0\),也就是说最低位所在的位置是不变的,并且\(1\)到\(n\)会被分成若干条链,链上我们可以用线段树之类的搞一搞 然而如果\(k\)不是奇数的话事情就会变得比较辣手了--不过我们可以发现对于所有满足\(x=a\times 2^s\)的数,如果\(k=b\times 2^t\)且\(…