洛谷P2679 子串 [noip2015] dp
正解:dp
解题报告:
感觉是道dp好题啊,所以就写了个题解
代码实现难度低,思维难度大,像我这种思维僵化傻逼选手只想到了爆搜+组合数学...
其实是道很妙的dp题!好趴也没有多妙主要大概是妙在想到了dp?具体实现很普通的
然后代码没什么要解释的鸭,真的不难,主要觉得题目出得还是挺好的趴,像我这种傻逼根本想不到是dp的鸭...然后实在是想放上来就放上来了
具体实现随便说点儿趴
就f[i][j][k]:A串扫到i B串扫到j 有k个空格 然后这里会发现有俩问题
1)因为f存的是个和我并不知道有多少是上一位匹配上的也就不知道上一个相等的那个位置和这一位之间有没有断电
2)ijl乘起来太大了会MLE掉
解决方法对应也是俩
1)再开个辅助数组g[i][j][k]表示是正儿八经这一位匹配上的
2)可以发现每次转移时i只和上一个i有关,滚动数组处理掉就好
over
#include<bits/stdc++.h> using namespace std; #define ll long long #define rp(i,x,y) for(register ll i=x;i<=y;++i) #define my(i,x,y) for(register ll i=x;i>=y;--i) ; ll n,m,cjk,f[][][],g[][][]; ; string a,b; inline ll read() { ;; '))ch=getchar(); ,ch=getchar(); )+(x<<)+(ch^'),ch=getchar(); return y?x:-x; } int main() { string s; n=read();m=read();cjk=read();cin>>a>>b;f[][][]=;a=' '+a;b=' '+b; rp(i,,n) { f[now][][]=; rp(j,,m) { rp(k,,cjk) { ][j-][k-]+g[now^][j-][k])%mod;//g:可以从之前的f转移来,就必有空格本来没空格也强行当有 也可以从上一位的g转移来,就中间没有空格 ; f[now][j][k]=(f[now^][j][k]+g[now][j][k])%mod; } } now^=; } printf(][m][cjk]); ; }
反正我就是觉得这题很好qwq
洛谷P2679 子串 [noip2015] dp的更多相关文章
- 洛谷 P2679 子串 解题报告
P2679 子串 题目描述 有两个仅包含小写英文字母的字符串\(A\)和\(B\). 现在要从字符串\(A\)中取出\(k\)个互不重叠的非空子串,然后把这\(k\)个子串按照其在字符串\(A\)中出 ...
- [NOIP2015] 提高组 洛谷P2679 子串
题目背景 无 题目描述 有两个仅包含小写英文字母的字符串 A 和 B.现在要从字符串 A 中取出 k 个互不重叠的非空子串,然后把这 k 个子串按照其在字符串 A 中出现的顺序依次连接起来得到一 个新 ...
- 洛谷P2679 子串——DP
题目:https://www.luogu.org/problemnew/show/P2679 DP水题: 然而被摆了一道,下面加 // 的地方都是一开始没写好的地方...还是不周密: 仔细审题啊... ...
- 题解【洛谷P2679】[NOIP2015]子串
题面 看到求方案数,还要对 \(1000000007\ (1e9+7)\) 取模,一般这样的问题都要考虑 动态规划. 我们设 \(dp_{i,j,k,0/1}\) 表示 \(A_{1\dots i}\ ...
- 2018.11.04 洛谷P2679 子串(线性dp)
传送门 为什么前几年的noipnoipnoip总是出这种送分题啊? 这个直接线性dpdpdp不就完了吗? f[i][j][k][0/1]f[i][j][k][0/1]f[i][j][k][0/1]表示 ...
- 洛谷 P2679 子串
题目背景 无 题目描述 有两个仅包含小写英文字母的字符串 A 和 B.现在要从字符串 A 中取出 k 个互不重叠的非空子串,然后把这 k 个子串按照其在字符串 A 中出现的顺序依次连接起来得到一 个新 ...
- 洛谷P2679 子串
放题解 题目传送门 放代码
- 【题解】洛谷P2679 [NOIP2015TG] 子串(DP+滚动数组)
次元传送门:洛谷P2679 思路 蒟蒻一开始并没有思路而去看了题解 我们发现对于两个字串的位置 我们只需要管他们匹配成功或者匹配失败即可 f[i][j][k] 记录当前 a[i]不论等不等于b[j] ...
- 洛谷P1108 低价购买[DP | LIS方案数]
题目描述 “低价购买”这条建议是在奶牛股票市场取得成功的一半规则.要想被认为是伟大的投资者,你必须遵循以下的问题建议:“低价购买:再低价购买”.每次你购买一支股票,你必须用低于你上次购买它的价格购买它 ...
随机推荐
- CentOS7--TigerVNC
--安装服务yum install tigervnc-server -y --配置文件,多个用户就拷贝多个cp /lib/systemd/system/vncserver@.service /etc/ ...
- 《转载》Linux服务之搭建FTP服务器&&分布式文件服务器的比较
参考帖子: Linux服务之FTP vsftpd的使用 大型网站图片服务器架构的演进 rsync同步文件的艺术 rsync命令详解 深入理解Tomcat虚拟目录 (测试已经OK)
- openlayers中利用vector实现marker的方式
项目需要一个小型的gis.openlayers,geoserver,postgres组合是比较好的选择. openlayers的marker层好像不支持拖动操作.通过研究api发现,可以利用vecto ...
- 微信内置浏览器浏览H5页面弹出的键盘遮盖文本框的解决办法(转)
最近在做微信公众号的内嵌页面,发现点击输入框时键盘盖住文本框,找到一段代码解决了这个问题. iOS和android手机都已亲测,需要的可以直接拷贝到代码中使用. js代码如下: $(function ...
- 题目1448:Legal or Not(有向无环图判断——拓扑排序问题)
题目链接:http://ac.jobdu.com/problem.php?pid=1448 详解链接:https://github.com/zpfbuaa/JobduInCPlusPlus 参考代码: ...
- openstack 中镜像状态详解 Image Statuses
Images in Glance can be in one the following statuses: queued The image identifier has been reserved ...
- ASP.NET MVC 使用Redis共享Session
储存模式 1.InProc模式 这是ASP.NET默认的Session管理模式,在应用进程内维护Session. 2.StateServer模式 这是在服务器装了.NET环境后自带的一个StateSe ...
- locate命令的使用
使用locate命令,遇到了这样的情况:当前目录下有一个文件,而使用这个命令时却查找不到这个文件,上网查了一下,找到了原因,就在下面. 1. find find是最常见和最强大的查找命令,你可以用它找 ...
- 完美解决Android SDK Manager无法更新
由于国内的各种屏蔽现在Android SDK Manager出现无法更新或更新太慢,如下方法可完美解决此问题 1. 打开..\Android\sdk\SDK Manager.exe 2.
- (转)关于如何学好游戏3D引擎编程的一些经验
此篇文章献给那些为了游戏编程不怕困难的热血青年,它的神秘要我永远不间断的去挑战自我,超越自我,这样才能攀登到游戏技术的最高峰 ——阿哲VS自己 QQ79134054多希望大家一起交流与沟通 这篇文章是 ...