「 LuoguT37042」 求子序列个数】的更多相关文章

Description 给定序列 A, 求出 A 中本质不同的子序列 (包含空的子序列) 个数模 10^9+ 7 的结果. 一个序列 B 是 A 的子序列需要满足 A 删掉某些元素后能够得到 B. 两个子序列中对应位置的数都相同我们就认为这两个子序列本质相同 Input 第一行包含一个整数 N , 代表序列的长度. 接下来一行 N 个整数, 第 i 个数代表 Ai. Output 输出一个整数代表答案. Sample Input 5 2 3 1 3 2 Sample Output 27 Hint…
引言 子序列和子字符串或者连续子集的不同之处在于,子序列不需要是原序列上连续的值. 对于子序列的题目,大多数需要用到DP的思想,因此,状态转移是关键. 这里摘录两个常见子序列问题及其解法. 例题1, 最长公共子序列 我们知道最长公共子串的求法,先温习一下,它的求法也是使用DP思想,对于 字符串s1 和字符串s2,令 m[i][j] 表示 s1上以s1[i]结尾的子串和s2上s2[j]结尾的子串的最长公共子串长度,因为公共子串必须是连续的,因此状态转移方程:m[i, j] = (s1[i] ==…
Loj #2719. 「NOI2018」冒泡排序 题目描述 最近,小 S 对冒泡排序产生了浓厚的兴趣.为了问题简单,小 S 只研究对 *\(1\) 到 \(n\) 的排列*的冒泡排序. 下面是对冒泡排序的算法描述. 输入:一个长度为 n 的排列 p[1...n] 输出:p 排序后的结果. for i = 1 to n do ​ for j = 1 to n - 1 do ​ if(p[j] > p[j + 1]) ​ 交换 p[j] 与 p[j + 1] 的值 冒泡排序的交换次数被定义为交换过程…
P4714 「数学」约数个数和 题意(假):每个数向自己的约数连边,给出\(n,k(\le 10^{18})\),询问\(n\)的约数形成的图中以\(n\)为起点长为\(k\)的链有多少条(注意每个点都有自环) 这样想是做不出来题的. 正常的题意是:询问\(n\)的约数的约数的....(共\(k\)次复读后)约数个数和. 考虑\(f_k(n)\)表示答案. 显然有\(f_{k}(n)=\sum_{d|n}f_{k-1}(d)\) 注意到用数论卷积的形式可以表示为 \[ \mathtt f_k=\…
「TJOI2013」最长上升子序列 传送门 这个 \(\text{DP}\) 应该都会撒: \[dp_i = \max_{j < i,a_j < a_i}\left\{dp_j\right\} + 1\] 考虑一个性质:加入的数是严格单调递增的,所以我们每次插入一个点时,它之前的所有点都可以成为决策点,并且之前的点的 \(dp\) 值不会被更新,所以我们只需要做到插入点和询问前缀最大值即可,这个用平衡树很好做. 需要注意的是,由于平衡树的每一个节点就是序列中的点,所以在 \(\text{pus…
#2051. 「HNOI2016」序列 题目描述 给定长度为 n nn 的序列:a1,a2,⋯,an a_1, a_2, \cdots , a_na​1​​,a​2​​,⋯,a​n​​,记为 a[1:n] a[1 \colon n]a[1:n].类似地,a[l:r] a[l \colon r]a[l:r](1≤l≤r≤N 1 \leq l \leq r \leq N1≤l≤r≤N)是指序列:al,al+1,⋯,ar−1,ar a_{l}, a_{l+1}, \cdots ,a_{r-1}, a_…
「NOI2018」冒泡排序 题目描述 最近,小S 对冒泡排序产生了浓厚的兴趣.为了问题简单,小 S 只研究对 1 到n 的排列的冒泡排序. 下面是对冒泡排序的算法描述. 输入:一个长度为n 的排列p[1...n] 输出:p 排序后的结果. for i = 1 to n do for j = 1 to n - 1 do if(p[j] > p[j + 1]) 交换p[j] 与p[j + 1] 的值 冒泡排序的交换次数被定义为交换过程的执行次数.可以证明交换次数的一个下 界是$\frac{1}{2}…
「NOI2018」冒泡排序 考虑冒泡排序中一个位置上的数向左移动的步数 \(Lstep\) 为左边比它大的数的个数,向右移动的步数 \(Rstep\) 为右边比它大的数的个数,如果 \(Lstep,Rstep\) 中有一个不为 \(0\) ,那么显然不会取到下界,因为产生了浪费的步数,题面给的提示在这里非常有用,如果至少有一个为 \(0\) ,那么显然没有产生浪费操作,取到下界,所以一个合法排列的充要条件就是对于所有位置 \(Lstep\times Rstep=0\) ,即该排列的最长下降子序列…
Loj #2542. 「PKUWC2018」随机游走 题目描述 给定一棵 \(n\) 个结点的树,你从点 \(x\) 出发,每次等概率随机选择一条与所在点相邻的边走过去. 有 \(Q\) 次询问,每次询问给定一个集合 \(S\),求如果从 \(x\) 出发一直随机游走,直到点集 \(S\) 中所有点都至少经过一次的话,期望游走几步. 特别地,点 \(x\)(即起点)视为一开始就被经过了一次. 答案对 $998244353 $ 取模. 输入格式 第一行三个正整数 \(n,Q,x\). 接下来 \(…
「luogu4462」[CQOI2018]异或序列 一句话题意 输入 \(n\) 个数,给定\(k\),共 \(m\) 组询问,输出第 \(i\) 组询问 \(l_i\) \(r_i\) 中有多少个连续子序列的异或和等于 \(k\).数据范围均在 \([0,1e5]\). 本题不强制在线,故莫队. 记序列 \(a\) 的前缀异或和 \(pre\),用一个桶 \(t_i\) 记录当前查询区间内前缀异或和为 \(i\) 的数量. 代码如下: #include <cstdio> #include &…
Loj #3059. 「HNOI2019」序列 给定一个长度为 \(n\) 的序列 \(A_1, \ldots , A_n\),以及 \(m\) 个操作,每个操作将一个 \(A_i\) 修改为 \(k\).第一次修改之前及每次修改之后,都要求你找到一个同样长度为 \(n\) 的单调不降序列 \(B_1, \ldots , B_n\),使得 \(\sum_{i=1}^n (A_i −B_i)^2\) 最小,并输出该最小值.需要注意的是每次操作的影响都是独立的,也即每次操作只会对当前询问造成影响.为…
Loj #3056. 「HNOI2019」多边形 小 R 与小 W 在玩游戏. 他们有一个边数为 \(n\) 的凸多边形,其顶点沿逆时针方向标号依次为 \(1,2,3, \ldots , n\).最开始凸多边形中有 \(n\) 条线段,即多边形的 \(n\) 条边.这里我们用一个有序数对 \((a, b)\)(其中 \(a < b\))来表示一条端点分别为顶点 \(a, b\) 的线段. 在游戏开始之前,小 W 会进行一些操作.每次操作时,他会选中多边形的两个互异顶点,给它们之间连一条线段,并且…
Loj 3058. 「HNOI2019」白兔之舞 题目描述 有一张顶点数为 \((L+1)\times n\) 的有向图.这张图的每个顶点由一个二元组 \((u,v)\) 表示 \((0\le u\le L,1\le v\le n)\).这张图不是简单图,对于任意两个顶点 \((u_1,v_1),(u_2,v_2)\),如果 \(u_1<u_2\),则从 \((u_1,v_1)\) 到 \((u_2,v_2)\) 一共有 \(w(v_1,v_2)\) 条不同的边,如果 \(u_1\ge u_2\…
「NOI2016」优秀的拆分 这不是个SAM题,只是个LCP题目 95分的Hash很简单,枚举每个点为开头和末尾的AA串个数,然后乘一下之类的. 考虑怎么快速求"每个点为开头和末尾的AA串个数" 考虑枚举A的长度,然后在序列中每|A|个位置放一个关键点,这样每个AA至少都经过了一个关键点. 然后求相邻两个关键点的lcs,lcp,画画图匹配一下,可以把区间内的都求出来了. 可以Hash二分或者sa或者sam Code: #include <cstdio> #include &…
题意 LOJ #2721. 「NOI2018」屠龙勇士 题解 首先假设每条龙都可以打死,每次拿到的剑攻击力为 \(ATK\) . 这个需要支持每次插入一个数,查找比一个 \(\le\) 数最大的数(或者找到 \(>\) 一个数的最小数),删除一个数. 这个东西显然是可以用 std :: multiset<long long> 来处理的(手写权值线段树或者平衡树也行). 对于每一条龙我们只能刚好一次秒杀,并且要恰好算血量最后为 \(0\)(一波带走). 然后就转化成求很多个方程: \[ \…
题目描述 对于一个 \(0/1\) 字符串,如果将这个字符串 \(0\) 和 \(1\) 取反后,再将整个串反过来和原串一样,就称作「反对称」字符串.比如 \(00001111\) 和 \(010101\) 就是反对称的,而 \(1001\) 就不是. 现在给出一个长度为 \(n\) 的 \(0/1\) 字符串,求它有多少个子串是反对称的,注意这里相同的子串出现在不同的位置会被重复计算. 输入格式 第一行一个正整数 \(n\) . 第二行一个长度为 \(n\) 的 \(0/1\) 字符串. 输出…
#2003. 「SDOI2017」新生舞会 内存限制:256 MiB时间限制:1500 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: 匿名 提交提交记录统计讨论测试数据   题目描述 学校组织了一次新生舞会,Cathy 作为经验丰富的老学姐,负责为同学们安排舞伴. 有 n nn 个男生和 n nn 个女生参加舞会,一个男生和一个女生一起跳舞,互为舞伴.Cathy 收集了这些同学之间的关系,比如两个人之前是否认识,计算得出 ai,j a_{i, j}a​i,j​​,表示第 i ii…
2042. 「CQOI2016」不同的最小割 内存限制:256 MiB时间限制:1000 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: 匿名 提交提交记录统计讨论测试数据   题目描述 学过图论的同学都知道最小割的概念:对于一个图,某个对图中结点的划分将图中所有结点分成两个部分,如果结点 s,ts, ts,t 不在同一个部分中,则称这个划分是关于 s,ts, ts,t 的割.对于带权图来说,将所有顶点处在不同部分的边的权值相加所得到的值定义为这个割的容量,而 s,ts, ts,t…
「NOI2018」你的名字 题目描述 小A 被选为了\(ION2018\) 的出题人,他精心准备了一道质量十分高的题目,且已经 把除了题目命名以外的工作都做好了. 由于\(ION\) 已经举办了很多届,所以在题目命名上也是有规定的,\(ION\) 命题手册规 定:每年由命题委员会规定一个小写字母字符串,我们称之为那一年的命名串,要求每道题的名字必须是那一年的命名串的一个非空连续子串,且不能和前一年的任何一道题目的名字相同. 由于一些特殊的原因,小A 不知道\(ION2017\) 每道题的名字,但…
「LOJ6482」LJJ爱数数 解题思路 : 打表发现两个数 \(a, b\) 合法的充要条件是(我不管,我就是打表过的): \[ a + b = \text{gcd}(a, b)^2 \] 设 \(g = \text{gcd(a, b)}\) ,那么相当于是要求: \[ \sum_{g=1}^{\sqrt{2n}}\sum_{i}[\text{gcd}(g^2-ig, ig)=g] \] 化简一波: \[ \sum_{g=1}^{\sqrt{2n}}\sum_{i}[\text{gcd}(g-…
「SCOI2014」方伯伯的商场之旅 题目描述 方伯伯有一天去参加一个商场举办的游戏.商场派了一些工作人员排成一行.每个人面前有几堆石子.说来也巧,位置在 \(i\) 的人面前的第 \(j\) 堆的石子的数量,刚好是 \(i\) 写成 \(K\) 进制后的第 \(j\) 位. 现在方伯伯要玩一个游戏,商场会给方伯伯两个整数 \(L,R\).方伯伯要把位置在 \([L, R]\) 中的每个人的石子都合并成一堆石子.每次操作,他可以选择一个人面前的两堆石子,将其中的一堆中的某些石子移动到另一堆,代价…
「LGR-049」洛谷7月月赛 D.Beautiful Pair 题目大意 : 给出长度为 \(n\) 的序列,求满足 \(i \leq j\) 且 $a_i \times a_j \leq \max(a_i..a_j) $ 的点对\((i, j)\)的数量 \(n \leq 10^5 \ 1 \leq a_i \leq 10^9\) 解题思路 : 直接枚举某一端点貌似很难维护极值,不妨对于每一个极值 \(a_k\),求 $ \max(a_i..a_j) \leq a_k$ 且 \(i \leq…
「bzoj1925」「Sdoi2010」地精部落-----------------------------------------------------------------------------------------------------------------------------------------题面 传说很久以前,大地上居住着一种神秘的生物:地精. 地精喜欢住在连绵不绝的山脉中.具体地说,一座长度为 N 的山脉 H可分 为从左到右的 N 段,每段有一个独一无二的高度 H…
「BZOJ1485」[HNOI2009] 有趣的数列   Description 我们称一个长度为2n的数列是有趣的,当且仅当该数列满足以下三个条件: (1)它是从1到2n共2n个整数的一个排列{ai}: (2)所有的奇数项满足a1<a3<…<a2n-1,所有的偶数项满足a2<a4<…<a2n: (3)任意相邻的两项a2i-1与a2i(1≤i≤n)满足奇数项小于偶数项,即:a2i-1<a2i. 现在的任务是:对于给定的n,请求出有多少个不同的长度为2n的有趣的数列…
青蛙的约会 Language:Default 青蛙的约会 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 133470 Accepted: 29610 Description 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止.可是它们出发之前忘记了一件很重要的事情,既没有问清楚对方的特征,也没有约定见面的具体位置.不过青蛙们都是很乐观的,…
t老师的做法好神…… 题目描述 桌面上有 n 个水果,分别是苹果和橘子.Bytea需要从水果中选择连续的一个区间,并从左到右或从右到左拿水果,且过程中橘子的数量必须始终不小于苹果的数量.求最长的区间大小. 输入格式 第一行一个整数 n($1 \le n \le 100000$),表示水果个数. 接下来一行共有 n 个字符$a_1, a_2, ..., a_n (a_i \in \{j,p\})$,分别表示苹果和橘子(波兰语). 输出格式 输出一行共一个数字,表示最长的区间大小. 样例输入 6 j…
Portal Description 给出一个\(n(n\leq10^5)\)个数的序列\(\{a_n\}\),对该序列进行\(n\)次操作.若在第\(i\)次操作前第\(i\)小的数在\(p_i\)位置,则翻转区间\([i,p_i]\).易知\(n\)次操作后序列会变为升序.求出每一次的\(p_i\). Solution splay. 题里的\(a_i\)是会重复的...所以先离散化一波,相同的数按位置排名.然后根据初始位置建一棵splay,每次将\(i\)旋转到根求左子树大小即可,区间翻转用…
Portal Description 给出两个十一位数\(L,R\),求\([L,R]\)内所有满足以下两个条件的数的个数. 出现至少\(3\)个相邻的相同数字: 不能同时出现\(4\)和\(8\). Solution 数位DP. 首先将问题转换成\(solve(R)-solve(L)\)的形式,这样只需要求不超过\(n\)的满足条件的数的个数. 定义\(dp[k][x][f_1][f_2][f_3][f_4]\),其中\(k\)表示位数,\(x\)表示尾数,\(f_1\)表示第\(k\)位与第…
Portal Description 给出\(n,m(n,m\leq10^9)\)和\(k(k\leq2000)\),求在\(k\)进制下,有多少个数值不同的纯循环小数可以表示成\(\dfrac{x}{y}\)的形式,其中\(x\in[1,n],y\in[1,m]\).一个数是纯循环小数当且仅当它能写成\(a.\dot{c_1} c_2 c_3 \ldots c_{p-1}\dot{c_p}\)的形式. Solution 原题相当于求有多少个数对\((x,y)\)满足\(gcd(x,y)=1\)…
#2033. 「SDOI2016」生成魔咒     题目描述 魔咒串由许多魔咒字符组成,魔咒字符可以用数字表示.例如可以将魔咒字符 1 11.2 22 拼凑起来形成一个魔咒串 [1,2] [1, 2][1,2]. 一个魔咒串 S SS 的非空子串被称为魔咒串 S SS 的生成魔咒. 例如 S=[1,2,1] S = [1, 2, 1]S=[1,2,1] 时,它的生成魔咒有 [1] [1][1].[2] [2][2].[1,2] [1, 2][1,2].[2,1] [2, 1][2,1].[1,2…