洛谷 2679 [NOIP 2015] 子串】的更多相关文章

题目戳这里 一句话题意 给你两个字符串A,B从A中取出K个不重合子串(顺序与在A中顺序相同)组成B,问有多少种方案? Solution 话说重打还是出各种错误也是醉了 先看题目,因为答案与A串,B串和拆分次数都有关,那么我们把这些都定义进DP方程中: 定义f[i][j][k][0]代表选到A串的前i个字符中选k个子串组成B[1-j],且第i个不选. 那么f[i][j][k][1]就是代表选到A串的前i个字符中选k个子串组成B[1-j],且第i个选. 定义好状态就很好做了: 如果这个不选,那么很明…
题目:https://www.luogu.org/problemnew/show/P2678 二分答案. 代码如下: #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #define mid ((l+r)>>1) using namespace std; ; int n,m,L,d[maxn],a[maxn],ans; int ck(int x) {…
noip好难呀. 上一个感觉有点长了,重开一个. 36.Vigenère 密码 粘个Openjudge上的代码 #include<cstdio> #include<iostream> #include<cstring> #include<cmath> #include <cstdlib> #include <algorithm> #include <iomanip> using namespace std; char a[…
洛谷模拟NOIP考试反思 想法 考了这么简单的试qwq然而依然emmmmmm成绩不好 虽然本次难度应该是大于正常PJ难度的但还是很不理想,离预估分数差很多qwq 于是就有了本反思嘤嘤嘤 比赛链接 原比赛链接(已结束但仍然可提交) 题目解析反思 第一题 超简单(虽然仍然没做对) 第二题 代码扔上来qwq(虽然还是不会) 第三题 代码 第四题 毒瘤极了wodema 据说原来数据是50%那里的,但是出题人z某灵机一动加到了1000orz 于是很多人自然而然地想到了状压DP 普及组是到不了这个难度的,主…
洛谷 P4665 [BalticOI 2015]Network 你有一棵 $ n $ 个节点的树,你可以在树上加一些边,使这棵树变成一张无重边.自环的图,且删掉任意一条边它仍然联通.求最少要加多少条边,要求输出方案. $ solution: $ 居然想出来了,但是代码十分囧长,写了一个小时. (删掉任意一条边图仍然联通)说明每一条边都至少属于一个环!这样删掉这条边后,它所连的两个节点可以通过环上另一条路径相连! 然后每一个叶子节点都必定会被连一条边!因为叶子节点本身只被一条边连向它父亲,这个叶子…
洛谷 P3951 NOIP 2017 小凯的疑惑 题目描述 小凯手中有两种面值的金币,两种面值均为正整数且彼此互素.每种金币小凯都有 无数个.在不找零的情况下,仅凭这两种金币,有些物品他是无法准确支付的.现在小 凯想知道在无法准确支付的物品中,最贵的价值是多少金币?注意:输入数据保证存在 小凯无法准确支付的商品. 输入格式 两个正整数 \(a\) 和 \(b\),它们之间用一个空格隔开,表示小凯中金币的面值. 输出格式 一个正整数 \(N\),表示不找零的情况下,小凯用手中的金币不能准确支付的最…
传送门 1.铺地毯 d1t1 模拟 //Twenty #include<cstdio> #include<cstdlib> #include<iostream> #include<algorithm> #include<cmath> #include<cstring> #include<queue> #include<vector> #include<ctime> typedef long long…
树上差分加上二分答案 详细题解待填坑 #include <cstdio> #include <algorithm> #include <cstring> using namespace std; ; ; ; ]; int lcav[MAXM],cf[MAXN],fw[MAXN],lent[MAXN]; int uline[MAXM],vline[MAXM],wline[MAXM]; ,u[MAXN*],v[MAXN*],w[MAXN*],first[MAXN*],nex…
传送门 Solution DP+滚动数组. DP状态 \(dp[i][j][k]\): \(A\)的第\(i\)个字符和\(B\)的第\(j\)个字符匹配且该字符在第\(k\)个子串中的方案数. 转移方程 \(dp[0][0][0]=1\) \(dp[i][j][k] = dp[i-1][j-1][k] + \sum\limits _{0\le i' <i} dp[i'][j-1][k-1]\) 用数组\(sum[j][k]\)维护转移时用到的那个和\(\sum\limits _{0\le i'…
题目:https://www.luogu.org/problemnew/show/P3960 NOIP 题,不用很复杂的数据结构...但又参考了许多: 要求支持维护删除第 k 个和在末尾插入的数据结构,线段树就很好: 所以每行一个线段树维护前 m-1 个元素,最后一列一个线段树即可: 但 n+1 个线段树显然空间太大,考虑利用一开始是按顺序排列的特点: 也就是不用实际开出来所有线段树的点,只要它是满的就可以直接算出来: 对于新加入线段树的点,如果真的加入线段树里,又不会算空间了... 但是新加入…
 P3395 路障 题目背景 此题约为NOIP提高组Day1T1难度. 题目描述 B君站在一个n*n的棋盘上.最开始,B君站在(1,1)这个点,他要走到(n,n)这个点. B君每秒可以向上下左右的某个方向移动一格,但是很不妙,C君打算阻止B君的计划. 每秒结束的时刻,C君会在(x,y)上摆一个路障.B君不能走在路障上. B君拿到了C君准备在哪些点放置路障.所以现在你需要判断,B君能否成功走到(n,n). 保证不会走到某处,然后被一个路障砸死. 输入输出格式 输入格式: 首先是一个正整数T,表示数…
P1006 传纸条 题目描述 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题.一次素质拓展活动中,班上同学安排做成一个m行n 列的矩阵,而小渊和小轩被安排在矩阵对角线的两端,因此,他们就无法直接交谈了.幸运的是,他们可以通过传纸条来进行交流.纸条要经由许多同学传到对方手 里,小渊坐在矩阵的左上角,坐标(1,1),小轩坐在矩阵的右下角,坐标(m,n).从小渊传到小轩的纸条只可以向下或者向右传递,从小轩传给小渊的纸条 只可以向上或者向左传递. 在活动进行中,小渊希望给小轩传递一张纸条,同…
题面 看到求方案数,还要对 \(1000000007\ (1e9+7)\) 取模,一般这样的问题都要考虑 动态规划. 我们设 \(dp_{i,j,k,0/1}\) 表示 \(A_{1\dots i}\) 中选取 \(k\) 个子串,与 \(B_{1\dots j}\) 匹配,且 \(A_{i}\) 选 / 不选的方案数. 分情况讨论转移: 若 \(A_i = B_j\), \(dp_{i,j,k,0} = dp_{i-1,j,k,0}+dp_{i-1,j,k,1}\). 不选 \(A_i\) 就…
淦!这题我做了三个月啊 题目描述 有两个仅包含小写英文字母的字符串 \(A\) 和 \(B\). 现在要从字符串 \(A\) 中取出 \(k\) 个互不重叠的非空子串,然后把这 \(k\) 个子串按照其在字符串 \(A\) 中出现的顺序依次连接起来得到一个新的字符串.请问有多少种方案可以使得这个新串与字符串 \(B\) 相等? 注意:子串取出的位置不同也认为是不同的方案. 输入格式 第一行是三个正整数 \(n,m,k\),分别表示字符串 \(A\) 的长度,字符串 \(B\) 的长度,以及问题描…
A T2-power of 2 题目描述 是一个十分特殊的式子. 例如: n=0时 =2 然而,太大了 所以,我们让对10007 取模 输入输出格式 输入格式: n 输出格式:  % 10007 输入输出样例 输入样例#1: 2 输出样例#1: 16 说明 n<=1000000 2^(2^n) 快速幂的方式log幂....就是n次平方 #include <iostream> #include <cstdio> #include <algorithm> #inclu…
借鉴大神思路... #include<cstdio> #include<cstring> #include<cstdlib> #include<iostream> #include<queue> #include<stack> #include<cmath> #include<algorithm> #include<malloc.h> using namespace std; #define clc…
感想 真的,感觉这道题目好坑爹,我这个蒟蒻调了好几个世纪才调出来. 重构代码千万遍,依旧只有-1输出. 正解 非常明显的一道搜索题目. 每一次记录上一级的状态,这样实现比较不容易出错. 然后考虑剪枝:如果相同就不交换. 以下这个代码开了O2才过掉. 代码 #include <bits/stdc++.h> #define ms(a, b) memset(a, b, sizeof(a)) #define ll long long #define ull unsigned long long #de…
队列模拟 详细题解待填坑 #include <cstdio> #include <algorithm> #include <queue> #include <cmath> using namespace std; ; ][]; ]={,,,},ta[]={}; ]={},inq=; ]; double p; ]; bool cmp(int a,int b){ if(a>b) return true; return false; } int main()…
U41571 Agent2 题目背景 炎炎夏日还没有过去,Agent们没有一个想出去外面搞事情的.每当ENLIGHTENED总部组织活动时,人人都说有空,结果到了活动日,却一个接着一个咕咕咕了.只有不咕鸟Lyn_king一个人冒着太阳等了半个多小时,然后居然看到连ENLIGHTENED行动参谋都咕咕咕了,果然咕咕咕是人类的本性啊. 题目描述 作为一个ENLIGHTENED行动指挥,自然不想看到这一点,于是他偷取到了那些经常咕咕咕的Agent的在下来N天的活动安排表,并且叫上了你来整理.在整理过程…
U41568 Agent1 题目背景 2018年11月17日,中国香港将会迎来一场XM大战,是世界各地的ENLIGHTENED与RESISTANCE开战的地点,某地 的ENLIGHTENED总部也想派Agent去参加这次的XM大战,与世界其他地方的ENLIGHTENED并肩作战. 题目描述 某地的ENLIGHTENED总部总部有N个Agent,每个Agent的能力值互不相同,现在ENLIGHTENED行动指挥想要派出A,B两队Agent去参加XM大战.但是参加大战的两个队伍要满足两个要求: A队…
Day1 第一题 水题 第二题 题意:一个n*m的字符矩阵从左上到右下,经过字符形成回文串的路径数.n≤500 回文串,考虑两段往中间DP. f[k][x][y]表示走了k步,左上点横坐标为x,右下点横坐标为y的路径数. 两端2*2四种情况转移,k步这维滚动. 第三题 题意:区间加数,区间覆盖,询问区间x次幂和.n≤10^5. 主要难点在区间加数时维护x次幂和……实际上就是简单的二项式展开. Σ(a+b)^n=Σ[ΣC(n,r)*a^(n-r)*b^r]=Σ[C(n,r)*Σa^(n-r)*b^…
题目:https://www.luogu.org/problemnew/show/P1979 真是一道好题... 首先考虑暴力做法,应该是设 f[i][j][x][y] 记录指定棋子和空格的位置,然后 bfs 转移: 然后发现,这些状态中有很多无用的,换句话说,就是仅当空格在指定棋子旁边时才有用,能带来棋子的移动: 所以不妨只记录 f[i][j][k] ,k 表示空格在指定棋子 (i,j) 的哪个方向: 两种转移:1.指定棋子不动,空格从它的一边移动到另一边: 2.指定棋子和空格交换位置: 所以…
题目:https://www.luogu.org/problemnew/show/P2822 阶乘太大,算不了: 但 k 只有 8 个质因子嘛,暴力60分: #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; ; ]={,,,,,,,},num[],tp[],pk[],tp2[],tt[]; void gt(int x,i…
题目:https://www.luogu.org/problemnew/show/P1083 当初不会线段树的时候做这道题...对差分什么不太熟练,一直没A,放在那儿不管... 现在去看,线段树就直接秒了: 不过要注意一下基本的细节囧... 但本题 n 的范围比较微妙,正常线段树会 T 一个点(不过运气好也能过): #include<iostream> #include<cstdio> #include<cstring> #include<algorithm>…
题目:https://www.luogu.org/problemnew/show/P1312 还是不擅长这种题,所以参考了一下TJ: 其实也很好搜,按字典序,先搜右移,再搜左移: 不交换相同颜色的两个格子,因为浪费: 左移就不交换了,避免重复,只有左边为空时左移: 写个处理下落的 fall 函数,再写个处理消格子的 refresh 函数(其中用到了 fall ),就可以方便地搜索了! 我存的是行和列,所以和坐标正好相反,一定要注意字典序的处理! 优美. 代码如下: #include<iostre…
题目:https://www.luogu.org/problemnew/show/P1032 字符串好复杂...先写了个 dfs ,RE一个点TLE一个点,不知该怎么改了... #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; ],b[],c[][],d[][]; ,inf=; bool ck(char x[],int…
题目:https://www.luogu.org/problemnew/show/P3953 主要是看题解...还是觉得好难想啊... dfs DP,剩余容量的损耗是边权减去两点最短路差值...表示对于最短路来说多走了这么多... 还要注意该点能否到达 n 号点,不能就不走了(剪枝): %p 那个地方会爆 int 吗?反正 %=p RE了一个点...(然而改成 ll 还是RE) 代码如下: #include<iostream> #include<cstdio> #include&l…
题目链接 裸体就是身体. 建出\(SAM\),\(DAG\)上跑\(DP\),\(f[u]=1+\sum_{(u,v)\in DAG}f[v]\) 答案为\(f[1]-1\)(因为根节点没有字符) #include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int MAXN = 1000010; struct SAM{ int ch[26]; int len,…
题目 树剖裸题,这个题更可以深刻的理解树剖中把树上的节点转换为区间的思想. 要注意在区间上连续的节点,一定是在一棵子树中. #include <bits/stdc++.h> #define int long long #define ls left, mid, root << 1 #define rs mid + 1, right, root << 1 | 1 #define N 600100 using namespace std; int n, m, rot, mo…
题目背景 IOI2000第一题 题目描述 回文词是一种对称的字符串.任意给定一个字符串,通过插入若干字符,都可以变成回文词.此题的任务是,求出将给定字符串变成回文词所需要插入的最少字符数. 比如 “Ab3bd”插入2个字符后可以变成回文词“dAb3bAd”或“Adb3bdA”,但是插入少于2个的字符无法变成回文词. 注:此问题区分大小写 输入格式 一个字符串(0<strlen<=1000) 输出格式 有且只有一个整数,即最少插入字符数 输入输出样例 输入: 输出: Ab3bd 下面是这道题的题…