Bzoj 1566: [NOI2009]管道取珠(动态规划-神题)
以下内容来自ShallWe's Blog
题目
题目链接
Description
Input
Output
【大致数据规模】
约30%的数据满足 n, m ≤ 12;
约100%的数据满足n, m ≤ 500。
解题报告
现场所有人齐刷刷懵逼了,听sunshine学长爆完标算都吃起了面前的键盘。
首先,有一个残酷的事实是,我们无法在一个合适的复杂度中求出\(a[i]\) ,这一点很明确。所以下手点应该是将\(\Sigma_{i=1 \to k}{Ai^2}\bf\) 的转化。
实际上,\[\Sigma_{i=1 \to k}{Ai^2}\bf\] 有这样一个含义,想象出两个人在玩这个游戏,\(a[i]^2\bf\) 可以认为是第一个人选出\(a[i]\bf\)的方案数乘上第二个人选出\(a[i]\bf\) 的方案数,那最后需要统计的答案是什么?
两个人选择相同序列的情况数
感受一下,我们来设计dp
令\[f[i][j][k]\bf\] 表示取\(i\)个字符,两个人分别在上方取到\(j\),\(k\),相同的情况数。
转移看下代码?
代码
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int P=1024523;
const int N=510;
int f[2][N][N],n,a[N],b[N],m;
char s1[N],s2[N];
int main(){ scanf("%d%d",&n,&m);scanf("%s",s1);scanf("%s",s2);for (int i=0;i<n;i++)a[n-i]=s1[i]-'A';for (int i=0;i<m;i++)b[m-i]=s2[i]-'A';f[0][0][0]=1;for (int i=0;i<n+m;i++){int t=i%2;for (int j=0;j<=n&&j<=i;j++)for (int k=0;k<=n&&j<=i;k++)if (f[t][j][k]){if (a[j+1]==b[i-k+1]) (f[!t][j+1][k]+=f[t][j][k])%=P;if (b[i-j+1]==a[k+1]) (f[!t][j][k+1]+=f[t][j][k])%=P;if (b[i-j+1]==b[i-k+1]) (f[!t][j][k]+=f[t][j][k])%=P;if (a[j+1]==a[k+1]) (f[!t][j+1][k+1]+=f[t][j][k])%=P;f[t][j][k]=0; }}cout<<f[(n+m)%2][n][n];return 0;
}
转载于:https://www.cnblogs.com/ShallWe2000/p/5762215.html
Bzoj 1566: [NOI2009]管道取珠(动态规划-神题)相关推荐
- 【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) 游戏初始时,左侧上下两个管道分别有一定数量的小球(有深色球和浅色球两种类型),而右侧 ...
- BZOJ1566 [NOI2009]管道取珠
这是一道思维复杂度很高的DP题 看题目,为什么是取两次序列一样呢?YY一下,其实等价于两个人一起取,最后序列一样. 然后就水了: 令f[i, j, k]表示取到第i个珠子,第一个人在1号管道取了j个珠 ...
- 洛谷 - P1758 [NOI2009]管道取珠(计数dp)
题目链接:点击查看 题目大意:给出两个长度分别为 n 和 m 的管道,每个管道中都只有两种颜色的珠子,现在可以按照规则组成序列,共可以组成 C( n+m , n ) 个序列,假设共组成了 K 种不同的 ...
- 洛谷P1758 [NOI2009]管道取珠(dp 贡献转化)
题目 bzoj1566 两个管道的小球序列, 分别用长为n(n<=500)和长为m(m<=500)的仅由A和B构成的字符串表示 两个管道归并的时候,每次可以从上管道取一个球,也可以从下管道 ...
- BZOJ1566:[NOI2009]管道取珠——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=1566 https://www.luogu.org/problemnew/show/P1758 题目 ...
- 牛客网 【每日一题】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, ...
最新文章
- 【组队学习】【35期】数据可视化(Matplotlib)
- simple-android-flux,深入浅出Flux
- scanf从文件中读入,printf写入到文件
- 字节顺序:高位优先(big-endian)和低位优先(little-endian)
- 想成为嵌入式程序员应知道的0x10个基本问题
- 【2012百度之星资格赛】G:聊天就是Repeat
- 计算机安全原理与实践_《计算机图形学原理及实践》学习笔记之第三章
- java.util.Properties
- 最优隐神经元数目 算法 matlab,BP算法的改进在Matlab的实现研究
- Centos6.3安装KVM
- IntelliJ IDEA 2020 提示“Unmapped Spring configuration files found.Please configure Spring facet.”解决办法
- 计算机网络面经八股文
- 学会有礼貌的拒绝应聘者
- 关于转换JSON列表错误导致结果出错的问题
- 轻量级自动化测试框架 UFT 初学者 学习编写
- 熔断机制什么意思_[财经]熔断机制的由来介绍 熔断机制什么意思 - 南方财富网...
- 柿饼模组 -- 实现超声波模块测距显示界面
- 类图 顺序图 活动图 状态图 用法和比较
- 2509 Problem H:奇怪的分式
- HTML span 标签 的详细用法
热门文章
- Java 并发数据结构
- 【python】filter()函数
- iphone分辨率_揭示真实的手机屏幕大小和分辨率
- 【mysql基础知识】解决java连接mysql时将localhost改为本机的ip地址后失败问题
- 无连接可靠传输_FPC连接器的特点以及弹片微针模组的作用
- nrf52832芯片资料_蓝牙大举进军智能楼宇、智慧工业等新兴领域,主流BLE芯片哪家强...
- php jwt怎么保存再客户端,php – 如何将JWT添加到授权标头?
- mysql 创建和删除库_mysql入门系列:mysql创建、删除和选择数据库
- pca主成分分析_降维:主成分分析(PCA)
- java solr5.2_solr5.2.1-----环境搭建