来自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]管道取珠相关推荐

  1. BZOJ1566 [NOI2009]管道取珠

    这是一道思维复杂度很高的DP题 看题目,为什么是取两次序列一样呢?YY一下,其实等价于两个人一起取,最后序列一样. 然后就水了: 令f[i, j, k]表示取到第i个珠子,第一个人在1号管道取了j个珠 ...

  2. 【BZOJ 1566】 1566: [NOI2009]管道取珠 (DP)

    1566: [NOI2009]管道取珠 Time Limit: 20 Sec  Memory Limit: 650 MB Submit: 1659  Solved: 971 Description I ...

  3. [NOI2009]管道取珠

    题目描述 管道取珠是小X很喜欢的一款游戏.在本题中,我们将考虑该游戏的一个简单改版.游戏画面如图1所示: (图1) 游戏初始时,左侧上下两个管道分别有一定数量的小球(有深色球和浅色球两种类型),而右侧 ...

  4. 洛谷P1758 [NOI2009]管道取珠(dp 贡献转化)

    题目 bzoj1566 两个管道的小球序列, 分别用长为n(n<=500)和长为m(m<=500)的仅由A和B构成的字符串表示 两个管道归并的时候,每次可以从上管道取一个球,也可以从下管道 ...

  5. 洛谷 - P1758 [NOI2009]管道取珠(计数dp)

    题目链接:点击查看 题目大意:给出两个长度分别为 n 和 m 的管道,每个管道中都只有两种颜色的珠子,现在可以按照规则组成序列,共可以组成 C( n+m , n ) 个序列,假设共组成了 K 种不同的 ...

  6. BZOJ1566:[NOI2009]管道取珠——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=1566 https://www.luogu.org/problemnew/show/P1758 题目 ...

  7. Bzoj 1566: [NOI2009]管道取珠(动态规划-神题)

    以下内容来自ShallWe's Blog 题目 题目链接 Description Input 第一行包含两个整数n, m,分别表示上下两个管道中球的数目. 第二行为一个AB字符串,长度为n,表示上管道 ...

  8. 牛客网 【每日一题】5月29日 管道取珠

    链接: 文章目录 题目描述 题意: 题解: 代码: 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 524288K,其他语言1048576K 64bit IO Format: %lld ...

  9. P1758-[NOI2009]管道取珠【dp】

    正题 题目链接:https://www.luogu.com.cn/problem/P1758 题目大意 给出一个大小为nnn和一个大小为mmm的栈,每次选择一个栈弹出栈顶然后记录这个字母,求所有弹出序 ...

  10. 2017.10.28 管道取珠 失败总结

    这个题有一个新套路:  ∑ai^2 要知道一般的计数题是∑ai,,所以这多乘了一个自己有什么意义呢? 于是想到,两两枚举,加起来正好是ai^2:: 所以就有一个想法,枚举两种取法, 然后就是插数dp, ...

最新文章

  1. SQL中使用WITH AS提高性能-使用公用表表达式(CTE)简化嵌套SQL
  2. Eclipse发布MicroProfile 1.4和2.0
  3. LPS25HB 寄存器读写程序解读
  4. 一个用理性设计的搞笑游戏
  5. 《剑指offer》和为s的两个数字
  6. nlp gpt论文_GPT-3:NLP镇的最新动态
  7. (二)注册服务提供者
  8. 工厂模式,简单工厂模式,抽象工厂模式三者有什么区别
  9. BZOJ 3033 太鼓达人
  10. 程序员的算法课(1)-算法概述
  11. linux yum安装python3_在Linux - Centos上安装Python3(上)
  12. 使用Vue对接网易云音乐
  13. 高分影像批处理第三回——RPC文件与几何校正
  14. 迁移学习:他山之石,可以攻玉【VALSE Webinar】Panel实录
  15. 小麦(Wheat)-玉米(Maize)-水稻(Rice) 数粒软件
  16. MES工程师新手,该怎么学习?学习哪些技术?
  17. 北京“宇宙中心”二手房挂单6天11次看房破记录
  18. saltstack实战--远程执行之返回(returner)
  19. 北大学霸隐居20年,王青松花光350万后,如今怎么样了?
  20. 猿人学第五题上---代码

热门文章

  1. python 进度条_2019年的代码都写完了吗?不如做个Python进度条看看还剩多少
  2. C语言项目大作业万历年,用C语言编写万历,详细代码.doc
  3. 苹果8黑屏无法强制开机_iphonexsmax死机黑屏,iphonexsmax无法开机
  4. 面试进阶 -- 计算机基础原理知识、面试经验、高频题目
  5. PyCharm2018 汉化激活
  6. CentOS7使用MySQL5.7.16安装
  7. 【你的数据库危机四伏 】
  8. 停掉一台服务器,Nginx响应慢(转载)
  9. 上采样卷积转置的deconvolution方法实现双线性插值,代码实现,结果不一样
  10. Ping++中的AlipaySDK和AlicloudUTDID冲突解决方案