[BZOJ 1056][NOI 2009]管道取珠(DP)
来源:互联网 发布:js escape解码 编辑:程序博客网 时间:2024/04/29 22:21
题目链接
http://www.lydsy.com/JudgeOnline/problem.php?id=1566
思路
设上面的珠子序列是U,下面的是L,定义一个取珠子的操作序列的状态(i,j)表示上面的U取了i个,下面的L取了j个。那么
假如最终取出的珠子序列为
那么这个
以上图片转自https://www.byvoid.com/blog/noi-2009-ball/
最后的那个
后记:
虽然这个题并不难,但是我WA了十多次,具体有很多细节需要注意:
1、输入了
2、注意最后一个下标
代码
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <algorithm>#define MAXN 505#define MOD 1024523using namespace std;int n,m;//注:状态(i,j)表示上面的U取了i个,下面的L取了j个int f[MAXN][MAXN][MAXN]; //f[i1][j1][i2][j2]=X方法当前状态为(i1,j1),Y方法当前状态为(i2,j2),这样的有序对(X,Y)个数,j2=i1+j1-i2,因此j2状态可以略去char U[MAXN],L[MAXN];int add(int x,int y){ x+=y; if(x>MOD) x-=MOD; return x; //!!!!}int main(){ scanf("%d%d",&n,&m); scanf("%s+1",U+1); //!!!! scanf("%s+1",L+1); //!!!! reverse(U+1,U+n+1); //!!!! reverse(L+1,L+m+1); //!!!! f[0][0][0]=1; for(int i=0;i<=n;i++) for(int j=0;j<=m;j++) for(int k=0;k<=n;k++) { int tmp=f[i][j][k],l=i+j-k; //X状态为(i,j),Y状态为(k,l) if(!tmp||l<0||l>m) continue; if(U[i+1]==U[k+1]) f[i+1][j][k+1]=add(f[i+1][j][k+1],tmp); if(U[i+1]==L[l+1]) f[i+1][j][k]=add(f[i+1][j][k],tmp); if(L[j+1]==U[k+1]) f[i][j+1][k+1]=add(f[i][j+1][k+1],tmp); if(L[j+1]==L[l+1]) f[i][j+1][k]=add(f[i][j+1][k],tmp); } printf("%d\n",f[n][m][n]); return 0;}
0 0
- [BZOJ 1056][NOI 2009]管道取珠(DP)
- bzoj 1566 NOI 2009 管道取珠 DP 解题报告
- Bzoj 1566: [NOI2009]管道取珠(DP)
- 【bzoj 1566】管道取珠(DP)
- [平方的拆分 DP] BZOJ 1566 [NOI2009]管道取珠
- bzoj 1566: [NOI2009]管道取珠 (DP)
- [BZOJ 1566][NOI2009]管道取珠(DP)
- BZOJ 1566: [NOI2009]管道取珠 另类DP
- BZOJ 1566 管道取珠 (dp 模型转换)
- BZOJ 1566 管道取珠(DP好题)
- 【BZOJ 1566】: 【NOI2009】管道取珠 另类DP
- BZOJ系列《[NOI2009]管道取珠》题解
- BZOJ 1566: [NOI2009]管道取珠
- BZOJ P1566[NOI2009]管道取珠
- BZOJ 1566: [NOI2009]管道取珠
- [BZOJ 1563][NOI 2009]诗人小G(四边形优化DP)
- [BZOJ 1564][NOI 2009]二叉查找树(DP)
- bzoj1566: [NOI2009]管道取珠 dp
- 百度地图开发之实现运动轨迹 <二>
- 常用函数
- leetcode Longest Palindromic Substring
- 《短码之美》Ozy著学习笔记
- Reverse Linked List II
- [BZOJ 1056][NOI 2009]管道取珠(DP)
- UVa 11809 Floating-Point Numbers
- 解释术语:虚拟内存、缺页中断、抖动
- 对JSON Model format 3编码理解
- win7主机通过ssh链接linux虚拟机教程
- Android Studio问题收集
- PAT 1004. Counting Leaves (30)
- 浅谈C++中new以及delete使用
- java8卸载之后,别的版本不识别