动态规划:NOI 2009 管道取珠
[NOI2009] 管道取珠
输入文件:ballb.in 输出文件:ballb.out 简单对比
时间限制:1 s
内存限制:512 MB




#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
const int maxn=;
const int mod=;
char A[maxn],B[maxn];
int dp[maxn][maxn][maxn];
int n,m;
int main(){
freopen("ballb.in","r",stdin);
freopen("ballb.out","w",stdout);
scanf("%d%d",&n,&m);
scanf("%s%s",A+,B+);
dp[][][]=;
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
for(int k=max(i+j-m,);k<=i+j;k++){
if(!i&&!j&&!k)continue;
int l=i+j-k;
if(A[i]==A[k]&&i&&k)dp[i][j][k]+=dp[i-][j][k-];
if(A[i]==B[l]&&i&&l)dp[i][j][k]+=dp[i-][j][k];
if(B[j]==A[k]&&j&&k)dp[i][j][k]+=dp[i][j-][k-];
if(B[j]==B[l]&&j&&l)dp[i][j][k]+=dp[i][j-][k];
dp[i][j][k]%=mod;
}
printf("%d\n",dp[n][m][n]);
return ;
}
最开始想如果不平方,求结果不同的方案个数,发现几乎无法实现。
这里有平方,就可以这样转化:把每种方案复制一遍,然后配对,只有相同才计入答案,简单地DP一下就解决了。
动态规划:NOI 2009 管道取珠的更多相关文章
- 解题:NOI 2009 管道取珠
题面 考虑这个平方的实际意义,实际是说取两次取出一样的序列 那么设$dp[i][j][k][h]$表示第一次在上面取$i$个下面取$j$个,第二次在上面取$k$个下面取$h$个的方案数 等等$n^4$ ...
- 【BZOJ1566】【NOI2009】管道取珠(动态规划)
[BZOJ1566][NOI2009]管道取珠(动态规划) 题面 BZOJ 题解 蛤?只有两档部分分.一脸不爽.jpg 第一档?爆搜,这么显然,爆搜+状压最后统计一下就好了 #include<i ...
- BZOJ 1566 【NOI2009】 管道取珠
题目链接:管道取珠 这道题思路还是很巧妙的. 一开始我看着那个平方不知所措……看了题解后发现,这种问题有一类巧妙的转化.我们可以看成两个人来玩这个游戏,那么答案就是第二个人的每个方案在第一个人的所有方 ...
- 【BZOJ 1566】 1566: [NOI2009]管道取珠 (DP)
1566: [NOI2009]管道取珠 Time Limit: 20 Sec Memory Limit: 650 MBSubmit: 1659 Solved: 971 Description In ...
- BZOJ1566 【NOI2009】管道取珠
题面 这是一道DP神题,直到我写下这句题解时也没有想明白…… 首先,这道题要我们求所有(不同输出序列的方案数)的平方和,于是我们当然就想到求所有不同输出序列的方案数……(大雾) .这道题一个巧妙的地方 ...
- Bzoj 1566: [NOI2009]管道取珠(DP)
1566: [NOI2009]管道取珠 Time Limit: 20 Sec Memory Limit: 650 MB Submit: 1558 Solved: 890 [Submit][Status ...
- NOI2009 管道取珠 神仙DP
原题链接 原题让求的是\(\sum\limits a_i^2\),这个东西直接求非常难求.我们考虑转化一下问题. 首先把\(a_i^2\)拆成\((1+1+...+1)(1+1+...+1)\),两个 ...
- BZOJ.1566.[NOI2009]管道取珠(DP 思路)
BZOJ 洛谷 考虑\(a_i^2\)有什么意义:两个人分别操作原序列,使得得到的输出序列都为\(i\)的方案数.\(\sum a_i^2\)就是两人得到的输出序列相同的方案数. \(f[i][j][ ...
- BZOJ 1566 管道取珠(DP)
求方案数的平方之和.这个看起来很难解决.如果转化为求方案数的有序对的个数.那么就相当于求A和B同时取,最后序列一样的种数. 令dp[i][j][k]表示A在上管道取了i个,下管道取了j个,B在上管道取 ...
随机推荐
- oracle添加数据时主键自动增长
CREATE TABLE STUDENT( --创建学生表 ID NUMBER(10) PRIMARY KEY, --主键ID SNAME VARCHAR2(20), ); 此时给学生表添加数 ...
- PowerDesigner15的安装和破解
一.PowerDesigner15的安装 运行安装包,出现如下安装界面
- teamview centos 配置
1.下载teamview centos版本,本人喜欢tar.gz版本,但是官网只有rpm版本,附件中即为官网下载的teamview11 官方下载地址:https://www.teamviewer.co ...
- KAFKA分布式消息系统[转]
KAFKA分布式消息系统 转自:http://blog.chinaunix.net/uid-20196318-id-2420884.html Kafka[1]是linkedin用于日志处理的分布式消 ...
- TestNG Listener
常用接口 IExecutionListener 监听TestNG运行的启动和停止. IAnnotationTransformer 注解转换器,用于TestNG测试类中的注解. ISuiteList ...
- overflow第一次觉得你有点可恶
今天用css做下拉菜单,因为不需要做手机自适应,再手机里看起来工整一点就行,可是列表中最后一个li的宽度撑开了父div,导致看起来很糟糕,所以给父元素加overflow:hidden:但是下拉列表也被 ...
- 五分钟看懂js关键字this
this是js里面很常用的关键字,而灵活的js也赋予了这个关键字无穷的生命力,相信你也有被它糊弄的时候,我总结了一个6字原则,大部分场合都能清醒分辨this到底指向who,跟大家分享一下,欢迎指正. ...
- JS判断是否为一个数组
function isArray(object){ return object && typeof object==='object' && Array == obje ...
- windows 下 pgsql 拓展开启
环境:windowxp + apache2.2+php5.2.13+postgresql8.3 操作步骤:1.修改php.ini,去掉“extension=php_pgsql.dll ”和“exten ...
- YII框架的部署 通过YII脚手架程序创建应用程序系统
1,把YII框架里面的framework复制粘贴到nginx目录下 2,创建一个商城系统: 1)修改环境变量 制定php.exe的目录 2)C:\Users\Administrator>cd C ...