洛谷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方案数]
题目描述 “低价购买”这条建议是在奶牛股票市场取得成功的一半规则.要想被认为是伟大的投资者,你必须遵循以下的问题建议:“低价购买:再低价购买”.每次你购买一支股票,你必须用低于你上次购买它的价格购买它 ...
随机推荐
- vmware 安装 Mac OS X 10.9 Mavericks
This guide shows how to install fresh OS X 10.9 Mavericks on VMware workstation with Windows 7 or Wi ...
- Ansible 安装和管理服务
ansible 使用 yum 模块来安装软件包,使用 service 模块来启动软件: [root@localhost ~]$ ansible 192.168.119.134 -m yum -a &q ...
- Linux下添加FTP账号和服务器、增加密码和用户,更改FTP目录
1. 启动VSFTP服务器 A:cenos下运行:yum install vsftpd B. 登录Linux主机后,运行命令:”service vsftpd start” C. 要让FTP每次开机 ...
- .net环境下的缓存技术-转载!
摘要: 介绍缓存的基本概念和常用的缓存技术,给出了各种技术的实现机制的简单介绍和适用范围说明,以及设计缓存方案应该考虑的问题(共17页) 1 概念 1.1 缓存能解决的问题 · 性 ...
- Android设计和开发系列第一篇:Notifications通知(Design)
Design篇 Notifications The notification system allows users to keep informed about relevant and timel ...
- Python六大开源框架对比:Web2py略胜一筹(转)
Python是一门动态.面向对象语言.其最初就是作为一门面向对象语言设计的,并且在后期又加入了一些更高级的特性.除了语言本身的设计目的之外,Python标准库也是值得大家称赞的,Python甚至还自带 ...
- hibernate annotation多对多中间表添加其他字段的第三种方法
本示例主要以学生(T_Student)和课程(T_Course)之间的多对多关系,中间表Score(分数),学生表和课程表是多对多关系,另外为他们的关系添加额外的字段---分数: T_Student类 ...
- [原]openstack-kilo--issue(二) openstack auth error
/** 系统环境:redhat7.2 repo:163 openstack version : kilo author: lihaibo 本博客已经添加"打赏"功能,"打 ...
- 使用 Gogs 搭建自己的 Git 服务器
安装过程分为这些步骤: 新建用户: 下载源码编译 / 下载预编译二进制打包: 运行安装: 配置调整: 配置 nginx 反向代理: 保持服务运行: 注意,这里默认你已经安装好了 MySQL 服务器和 ...
- Android 源码下载,国内 镜像
AOSP(Android) 镜像使用帮助 https://lug.ustc.edu.cn/wiki/mirrors/help/aosp 首先下载 repo 工具. mkdir ~/bin PATH=~ ...