[NOI2009]管道区珠
时间:2019-09-22
本文章向大家介绍[NOI2009]管道区珠,主要包括[NOI2009]管道区珠使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
[NOI2009]管道取珠
对于\(\sum a[i]^2\)
我们不如把它理解成
一个取珠游戏A和一个取珠游戏B同时举行,当A中的任意一个结果和B中的任意一个结果相同时,我们把它加进方案
f[i][j]表示A游戏中上管道取了i个球,B游戏中上管道取了j个球(一个循环枚举k,所以A游戏中下管道取了k-i个球,B游戏中下管道取了k-j个球)
于是便非常的简单了
代码
#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
#define MAXN 610
#define MOD 1024523
int n, m;
int a[MAXN], b[MAXN], f[MAXN][MAXN], c[MAXN][MAXN];
inline int read() {
int s = 0, w = 1;
char c = getchar();
for (; !isdigit(c); c = getchar()) if (c == '-') w = -1;
for (; isdigit(c); c = getchar()) s = (s << 1) + (s << 3) + (c ^ 48);
return s * w;
}
int main() {
n = read(), m = read();
for (register int i = 1; i <= n; i++)
a[n + 1 - i] = getchar() - 'A';
getchar();
for (register int i = 1; i <= m; i++)
b[m + 1 - i] = getchar() - 'A';
f[0][0] = 1;
for (register int k = 1; k <= n + m; k++) {
for (register int i = max(0, k - m); i <= min(k, n); i++)
for (register int j = max(0, k - m); j <= min(k, n); j++) {
c[i][j] = 0;
if (a[i] == a[j] && i && j)
(c[i][j] += f[i - 1][j - 1]) %= MOD;
if (a[i] == b[k - j] && i)
(c[i][j] += f[i - 1][j]) %= MOD;
if (b[k - i] == a[j] && j)
(c[i][j] += f[i][j - 1]) %= MOD;
if (b[k - i] == b[k - j])
(c[i][j] += f[i][j]) %= MOD;
}
for (register int i = 0; i <= min(k, n); i++)
for (register int j = 0; j <= min(k, n); j++)
f[i][j] = c[i][j];
}
printf("%d", f[n][n]);
return 0;
}
原文地址:https://www.cnblogs.com/Agakiss/p/11568927.html
- java.util.zip.ZipException: invalid LOC header (bad signature)
- 递归就这么简单
- Activiti就是这么简单
- WebService就是这么简单
- eclipse中hadoop2.3.0环境部署及在eclipse中直接提交mapreduce任务
- spark on yarn提交任务时一直显示ACCEPTED
- 如何恢复hadoop中被删除的文件
- 多个字段中如何按其中两个进行排序(二次排序)
- Hadoop2.3.0上部署Mahout0.10,并测试单机版与分布式版个性化推荐程序
- 总结5种比较高效常用的排序算法
- 曾经做过的40道程序设计课后习题总结(二)
- 曾经做过的40道程序设计课后习题总结(三)
- 曾经做过的40道程序设计课后习题总结(四)
- 二叉树非递归版的后序遍历算法
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 跨站请求伪造——CSRF
- 13-6 编辑多个文件和保存
- 汇编基础
- php 使用AMQP扩展调用RabbitMq
- 聊聊RedisTokenVisitor
- R语言几行代码拼接pdf文件
- 一次 Redis 分布式锁事故,整个项目组被扣绩效了。。。
- 小程序访问https显示网络错误,微信打开https空白、浏览器访问正常 解决方案
- Python GUI项目实战(七)学生信息的修改、删除和保存
- Python | 使用argparse解析命令行参数
- LeetCode 98 | 判断二叉搜索树是否合法
- LeetCode 96,n个数构建BST的方法有多少种?
- Go语言 | goroutine不只有基础的用法,还有这些你不知道的操作
- 每日一题 | 二进制操作问题
- Pandas | Dataframe的merge操作,像数据库一样尽情join