Codeforces Round #518 (Div. 2) D(计数DP)
#include<bits/stdc++.h>
using namespace std;
const long long mod=998244353;
int n;
int a[100007];
long long dp[100007][207][3];//第i位值为j时k是否成立,k=0,i<i-1,k=1,i==i-1,k=2,i>i-1

int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
for(int i=1;i<=200;i++){
if(a[1]!=-1&&a[1]!=i)
dp[1][i][0]=0;
else
dp[1][i][0]=1;
dp[1][i][1]=dp[1][i][2]=0;
}
long long sum=0;
for(int i=2;i<=n;i++){
sum=0;
for(int x=1;x<=200;x++){
if(a[i]!=-1&&a[i]!=x)
dp[i][x][0]=0;
else
dp[i][x][0]=sum;
sum+=(dp[i-1][x][0]+dp[i-1][x][1]+dp[i-1][x][2])%mod;
sum%=mod;
}
for(int x=1;x<=200;x++){
if(a[i]!=-1&&a[i]!=x)
dp[i][x][1]=0;
else
dp[i][x][1]=(dp[i-1][x][0]+dp[i-1][x][1]+dp[i-1][x][2])%mod;
}
sum=0;
for(int x=200;x>=1;x--){
if(a[i]!=-1&&a[i]!=x)
dp[i][x][2]=0;
else
dp[i][x][2]=sum;
sum+=(dp[i-1][x][1]+dp[i-1][x][2])%mod;
sum%=mod;
}
}
long long ans=0;
for(int i=1;i<=200;i++)
ans+=(dp[n][i][1]+dp[n][i][2])%mod,ans%=mod;
printf("%lld",ans);
return 0;
}
Codeforces Round #518 (Div. 2) D(计数DP)的更多相关文章
- Codeforces Round #518 (Div. 2) [Thanks, Mail.Ru!]
Codeforces Round #518 (Div. 2) [Thanks, Mail.Ru!] https://codeforces.com/contest/1068 A #include< ...
- Codeforces Round #131 (Div. 1) B. Numbers dp
题目链接: http://codeforces.com/problemset/problem/213/B B. Numbers time limit per test 2 secondsmemory ...
- Codeforces Round #131 (Div. 2) B. Hometask dp
题目链接: http://codeforces.com/problemset/problem/214/B Hometask time limit per test:2 secondsmemory li ...
- Codeforces Round #276 (Div. 1) D. Kindergarten dp
D. Kindergarten Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/problemset/proble ...
- Codeforces Round #260 (Div. 1) A - Boredom DP
A. Boredom Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/455/problem/A ...
- Codeforces Round #533 (Div. 2) C.思维dp D. 多源BFS
题目链接:https://codeforces.com/contest/1105 C. Ayoub and Lost Array 题目大意:一个长度为n的数组,数组的元素都在[L,R]之间,并且数组全 ...
- Codeforces Round #539 (Div. 2) 异或 + dp
https://codeforces.com/contest/1113/problem/C 题意 一个n个数字的数组a[],求有多少对l,r满足\(sum[l,mid]=sum[mid+1,r]\), ...
- Codeforces Round #374 (Div. 2) C. Journey DP
C. Journey 题目连接: http://codeforces.com/contest/721/problem/C Description Recently Irina arrived to o ...
- Codeforces Round #202 (Div. 1) D. Turtles DP
D. Turtles Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/547/problem/B ...
随机推荐
- 序列化工具类({对实体Bean进行序列化操作.},{将字节数组反序列化为实体Bean.})
package com.dsj.gdbd.utils.serialize; import java.io.ByteArrayInputStream; import java.io.ByteArrayO ...
- 分享知识-快乐自己:java代码 操作 solr
POM 文件: <!-- solr客户端 --> <dependency> <groupId>org.apache.solr</groupId> < ...
- css 一些技巧
记录一下,某些实用的css: 1.以下代码将会为普通屏幕使用 image.png,为高分屏使用 image_2x.png,如果更高的分辨率则使用 image_print.png. div { back ...
- Windows 下GitHub 安装和使用
一.官网注册和设置 1.登录官网,注册账号,其中用户名以后会用到. 2.创建仓库.使用公开仓库方式创建,公开仓库免费.(右上角->加号->new repository) 第一行:仓库名字. ...
- 【LeetCode】085. Maximal Rectangle
题目: Given a 2D binary matrix filled with 0's and 1's, find the largest rectangle containing only 1's ...
- 【LeetCode】066. Plus One
题目: Given a non-negative integer represented as a non-empty array of digits, plus one to the integer ...
- unity渲染层级关系小结
http://blog.csdn.net/meegomeego/article/details/42060389 最近连续遇到了几个绘制图像之间相互遮挡关系不正确的问题,网上查找的信息比较凌乱,所以这 ...
- Mybatis新版实践
配置文件节点顺序 MyBatis的configuration节点需要有顺序,首先是propertes然后是settings,environment... @Param注解参数 对于Mapper接口,如 ...
- 数据结构-二叉搜索树的js实现
一.树的相关概念 1.基本概念 子树 一个子树由一个节点和它的后代构成. 节点的度 节点所拥有的子树的个数. 树的度 树中各节点度的最大值 节点的深度 节点的深度等于祖先节点的数量 树的高度 树的高度 ...
- selenium webdriver frame操作,跳进跳出
如果有两个平级的frame,跳进一个以后操作完成再操作第二个,这种情况要先跳出来,再跳进另外一个frame 跳出语句:browser.switch_to_default_content() #codi ...