2017-2018 ACM-ICPC, NEERC, Moscow Subregional Contest B - Byteland Trip dp
题目大意:给你一个由'<' 和 '>'组成的串, 如果在'<' 只能前往编号比它小的任意点, 反之只能前往比它大的任意点,问你能遍历所有点
并且每个点只走一次终点在各个位置的方案数。
思路:感觉这种右能从左边跑到右边又跑回来的dp很难搞,如果我们确定一个终点, 如果知道它左边点一共出来几次,右边的点一共出来几次
那么方案数就很好求了, 所以我们定义dp1[ i ][ j ] 表示前 i 个点,遍历所有点并且向右出去 j 次的的方案数, dp2[ i ][ j ]就是反过来的。
对于每个点,我们枚举左边出来几次就好啦。
#include<bits/stdc++.h>
#define LL long long
#define fi first
#define se second
#define mk make_pair
#define PII pair<int, int>
#define PLI pair<LL, int>
#define ull unsigned long long
using namespace std; const int N = ;
const int inf = 0x3f3f3f3f;
const LL INF = 0x3f3f3f3f3f3f3f3f;
const int mod = 1e9 + ;
const double eps = 1e-; int n, m;
LL dp1[N][N], dp2[N][N], f[N], ans[N];
char s[N]; void add(LL &a, LL b) {
a += b; if(a >= mod) a -= mod;
} int main() {
for(int i=f[]=; i < N; i++) f[i] = f[i-]*i%mod;
scanf("%s", s + );
m = strlen(s + );
for(int i = ; i <= m; i++)
if(s[i] == '<' || s[i] == '>') s[++n] = s[i];
if(n == ) {
puts("");
return ;
}
dp1[][] = ;
for(int i = ; i <= n; i++) {
for(int j = ; j <= i; j++) {
if(s[i] == '<') {
add(dp1[i][j], dp1[i-][j]*j%mod);
add(dp1[i][j], dp1[i-][j+]*(j+)%mod*j%mod);
} else {
if(j) add(dp1[i][j], dp1[i-][j-]);
add(dp1[i][j], dp1[i-][j]*j%mod);
}
}
}
dp2[n+][] = ;
for(int i = n; i >= ; i--) {
for(int j = ; j <= n-i+; j++) {
if(s[i] == '<') {
if(j) add(dp2[i][j], dp2[i+][j-]);
add(dp2[i][j], dp2[i+][j]*j%mod);
} else {
add(dp2[i][j], dp2[i+][j]*j%mod);
add(dp2[i][j], dp2[i+][j+]*(j+)%mod*j%mod);
}
}
}
ans[] = dp2[][];
ans[n] = dp1[n-][];
for(int i = ; i < n; i++) {
for(int j = ; j < i; j++) {
add(ans[i], dp1[i-][j]*dp2[i+][j]%mod*f[j]%mod*f[j]%mod*%mod);
add(ans[i], dp1[i-][j]*dp2[i+][j+]%mod*f[j]%mod*f[j+]%mod);
if(j > ) add(ans[i], dp1[i-][j]*dp2[i+][j-]%mod*f[j]%mod*f[j-]%mod);
}
}
for(int i = ; i <= n; i++) printf("%lld ", ans[i]);
return ;
} /*
*/
2017-2018 ACM-ICPC, NEERC, Moscow Subregional Contest B - Byteland Trip dp的更多相关文章
- 2018-2019 ICPC, NEERC, Southern Subregional Contest
目录 2018-2019 ICPC, NEERC, Southern Subregional Contest (Codeforces 1070) A.Find a Number(BFS) C.Clou ...
- Codeforces 2018-2019 ICPC, NEERC, Southern Subregional Contest
2018-2019 ICPC, NEERC, Southern Subregional Contest 闲谈: 被操哥和男神带飞的一场ACM,第一把做了这么多题,荣幸成为7题队,虽然比赛的时候频频出锅 ...
- ACM ICPC 2015 Moscow Subregional Russia, Moscow, Dolgoprudny, October, 18, 2015 G. Garden Gathering
Problem G. Garden Gathering Input file: standard input Output file: standard output Time limit: 3 se ...
- ACM ICPC 2015 Moscow Subregional Russia, Moscow, Dolgoprudny, October, 18, 2015 D. Delay Time
Problem D. Delay Time Input file: standard input Output file: standard output Time limit: 1 second M ...
- 2016 NEERC, Moscow Subregional Contest K. Knights of the Old Republic(Kruskal思想)
2016 NEERC, Moscow Subregional Contest K. Knights of the Old Republic 题意:有一张图,第i个点被占领需要ai个兵,而每个兵传送至该 ...
- 2018.10.20 2018-2019 ICPC,NEERC,Southern Subregional Contest(Online Mirror, ACM-ICPC Rules)
i207M的“怕不是一个小时就要弃疗的flag”并没有生效,这次居然写到了最后,好评=.= 然而可能是退役前和i207M的最后一场比赛了TAT 不过打得真的好爽啊QAQ 最终结果: 看见那几个罚时没, ...
- 2018-2019 ICPC, NEERC, Southern Subregional Contest (Online Mirror) Solution
从这里开始 题目列表 瞎扯 Problem A Find a Number Problem B Berkomnadzor Problem C Cloud Computing Problem D Gar ...
- 2010-2011 ACM-ICPC, NEERC, Moscow Subregional Contest Problem D. Distance 迪杰斯特拉
Problem D. Distance 题目连接: http://codeforces.com/gym/100714 Description In a large city a cellular ne ...
- 2010-2011 ACM-ICPC, NEERC, Moscow Subregional Contest Problem C. Contest 水题
Problem C. Contest 题目连接: http://codeforces.com/gym/100714 Description The second round of the annual ...
随机推荐
- Mac下Clang编译libcurl
使用终端进入curl的根目录下,执行 ./configre CC=clang make make install 之后前往/usr/local/lib下生成了libcurl.a和相应的动态库,头文件在 ...
- Ubuntu 14.04安装和3556sdk环境配置
1.配置为固定ip: vi /etc/network/interfaces 最后添加 iface eth0 inet staticaddress 192.168.1.100netmask 255.25 ...
- [NOI1999] 棋盘分割
COGS 100. [NOI1999] 棋盘分割 http://www.cogs.pro/cogs/problem/problem.php?pid=100 ★★ 输入文件:division.in ...
- 微信网页动画---swiper.animate.css
项目需要,自己写了个demo <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> ...
- python json 访问与字符串截取
# req = requests.Request(url=url, headers=headers, data=data) # html = requests.get(req) # print(htm ...
- 用一张图片解释清楚jQuery中10个强大的遍历函数
为什么我们要进一步提炼一系列元素,难道是jQuery选择语法不够强大?让我们从示例开始.在下面提到的网页中,当一个star被点击时,我们需要给它以及左边的每个star添加class"on&q ...
- 20155226 2016-2017-2 《Java程序设计》第5周学习总结
20155226 2016-2017-2 <Java程序设计>第5周学习总结 教材学习内容总结 语法与继承构架 我们之前接触到的C通常都是将程序流程和错误处理混在一起,在编写程序的时候必须 ...
- sklearn_k邻近分类_KNeighborsClassifier
# coding:utf-8 import numpy as np import matplotlib.pyplot as plt from sklearn.neighbors import KNei ...
- PHP简单爬虫 基于QueryList采集库 和 ezsql数据库操作类
QueryList是一个基于phpQuery的PHP通用列表采集类,得益于phpQuery,让使用QueryList几乎没有任何学习成本,只要会CSS3选择器就可以轻松使用QueryList了,它让P ...
- mysql中使用日期加减时无法识别年-月格式数据的问题,%Y-%m"这种格式数据
最新做报表统计的时候处理按月统计部分时发现,虽然使用 DATE_FORMAT( time, '%Y-%m' ) 函数可以将日期格式转成年-月,但是如果是参数是年-月格式,即"2018-10& ...