[bzoj1566][NOI2009]管道取珠
来自FallDream的博客,未经允许,请勿转载,谢谢。
n<=500
神题......
发现这个平方可以看作两个序列相同的对数 然后就可以表示状态了。
f[i][j][k]表示两个序列各选了i个,第1个序列在第一行选了j个,第二个序列在第二行选了k个,他们相同的方案数
转移比较简单,枚举两个序列各填哪一位即可。
复杂度n^3
#include<iostream> #include<cstdio> #include<cstring> #define MN 500 #define mod 1024523 using namespace std; inline int read() {int x = 0 , f = 1; char ch = getchar();while(ch < '0' || ch > '9'){ if(ch == '-') f = -1; ch = getchar();}while(ch >= '0' && ch <= '9'){x = x * 10 + ch - '0';ch = getchar();}return x * f; } int f[2][505][505],n,m; char A[MN+5],B[MN+5]; inline void R(int&x,int y){x+=y;x>=mod?x-=mod:0;} int main() {n=read();m=read();scanf("%s",A+1);scanf("%s",B+1);f[0][0][0]=1;for(int i=0,now=1,pre=0;i<n+m;++i){for(int j=0;j<=min(i,n);++j)for(int k=0;k<=min(i,n);++k){int J=i-j,K=i-k;if(j<n&&k<n&&A[j+1]==A[k+1]) R(f[now][j+1][k+1],f[pre][j][k]);if(j<n&&K<m&&A[j+1]==B[K+1]) R(f[now][j+1][k],f[pre][j][k]);if(J<m&&k<n&&B[J+1]==A[k+1]) R(f[now][j][k+1],f[pre][j][k]);if(J<m&&K<m&&B[J+1]==B[K+1]) R(f[now][j][k],f[pre][j][k]); } swap(now,pre);memset(f[now],0,sizeof(f[now])); }printf("%d\n",f[(n+m)&1][n][n]);return 0; }
转载于:https://www.cnblogs.com/FallDream/p/bzoj1566.html
[bzoj1566][NOI2009]管道取珠相关推荐
- BZOJ1566 [NOI2009]管道取珠
这是一道思维复杂度很高的DP题 看题目,为什么是取两次序列一样呢?YY一下,其实等价于两个人一起取,最后序列一样. 然后就水了: 令f[i, j, k]表示取到第i个珠子,第一个人在1号管道取了j个珠 ...
- 【BZOJ 1566】 1566: [NOI2009]管道取珠 (DP)
1566: [NOI2009]管道取珠 Time Limit: 20 Sec Memory Limit: 650 MB Submit: 1659 Solved: 971 Description I ...
- [NOI2009]管道取珠
题目描述 管道取珠是小X很喜欢的一款游戏.在本题中,我们将考虑该游戏的一个简单改版.游戏画面如图1所示: (图1) 游戏初始时,左侧上下两个管道分别有一定数量的小球(有深色球和浅色球两种类型),而右侧 ...
- 洛谷P1758 [NOI2009]管道取珠(dp 贡献转化)
题目 bzoj1566 两个管道的小球序列, 分别用长为n(n<=500)和长为m(m<=500)的仅由A和B构成的字符串表示 两个管道归并的时候,每次可以从上管道取一个球,也可以从下管道 ...
- 洛谷 - P1758 [NOI2009]管道取珠(计数dp)
题目链接:点击查看 题目大意:给出两个长度分别为 n 和 m 的管道,每个管道中都只有两种颜色的珠子,现在可以按照规则组成序列,共可以组成 C( n+m , n ) 个序列,假设共组成了 K 种不同的 ...
- BZOJ1566:[NOI2009]管道取珠——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=1566 https://www.luogu.org/problemnew/show/P1758 题目 ...
- Bzoj 1566: [NOI2009]管道取珠(动态规划-神题)
以下内容来自ShallWe's Blog 题目 题目链接 Description Input 第一行包含两个整数n, m,分别表示上下两个管道中球的数目. 第二行为一个AB字符串,长度为n,表示上管道 ...
- 牛客网 【每日一题】5月29日 管道取珠
链接: 文章目录 题目描述 题意: 题解: 代码: 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 524288K,其他语言1048576K 64bit IO Format: %lld ...
- P1758-[NOI2009]管道取珠【dp】
正题 题目链接:https://www.luogu.com.cn/problem/P1758 题目大意 给出一个大小为nnn和一个大小为mmm的栈,每次选择一个栈弹出栈顶然后记录这个字母,求所有弹出序 ...
- 2017.10.28 管道取珠 失败总结
这个题有一个新套路: ∑ai^2 要知道一般的计数题是∑ai,,所以这多乘了一个自己有什么意义呢? 于是想到,两两枚举,加起来正好是ai^2:: 所以就有一个想法,枚举两种取法, 然后就是插数dp, ...
最新文章
- SQL中使用WITH AS提高性能-使用公用表表达式(CTE)简化嵌套SQL
- Eclipse发布MicroProfile 1.4和2.0
- LPS25HB 寄存器读写程序解读
- 一个用理性设计的搞笑游戏
- 《剑指offer》和为s的两个数字
- nlp gpt论文_GPT-3:NLP镇的最新动态
- (二)注册服务提供者
- 工厂模式,简单工厂模式,抽象工厂模式三者有什么区别
- BZOJ 3033 太鼓达人
- 程序员的算法课(1)-算法概述
- linux yum安装python3_在Linux - Centos上安装Python3(上)
- 使用Vue对接网易云音乐
- 高分影像批处理第三回——RPC文件与几何校正
- 迁移学习:他山之石,可以攻玉【VALSE Webinar】Panel实录
- 小麦(Wheat)-玉米(Maize)-水稻(Rice) 数粒软件
- MES工程师新手,该怎么学习?学习哪些技术?
- 北京“宇宙中心”二手房挂单6天11次看房破记录
- saltstack实战--远程执行之返回(returner)
- 北大学霸隐居20年,王青松花光350万后,如今怎么样了?
- 猿人学第五题上---代码
热门文章
- python 进度条_2019年的代码都写完了吗?不如做个Python进度条看看还剩多少
- C语言项目大作业万历年,用C语言编写万历,详细代码.doc
- 苹果8黑屏无法强制开机_iphonexsmax死机黑屏,iphonexsmax无法开机
- 面试进阶 -- 计算机基础原理知识、面试经验、高频题目
- PyCharm2018 汉化激活
- CentOS7使用MySQL5.7.16安装
- 【你的数据库危机四伏 】
- 停掉一台服务器,Nginx响应慢(转载)
- 上采样卷积转置的deconvolution方法实现双线性插值,代码实现,结果不一样
- Ping++中的AlipaySDK和AlicloudUTDID冲突解决方案