【非原创】codeforces - 1067A Array Without Local Maximums【dp】
学习博客:戳这里
附本人代码:
1 #include <bits/stdc++.h>
2 using namespace std;
3 typedef long long ll;
4 const int maxn = 1e5 + 10;
5 const ll mod = 998244353;
6 set<int>nu[maxn], rol[2];
7 int a[maxn];
8 ll dp[maxn][222][3];
9 int main() {
10 int n;
11 scanf("%d", &n);
12 for(int i = 1; i <= n; ++i) {
13 scanf("%lld", a+i);
14 }
15 //处理边界
16 if(a[1] == -1) {
17 for(int i = 1; i <= 200; ++i) {
18 dp[1][i][0] = 1ll;
19 }
20 } else {
21 dp[1][a[1]][0] = 1ll;
22 }
23 for(int i = 2; i <= n; ++i) {
24 ll sum = 0;
25 int len = 200;
26 if(a[i] != -1) len = a[i];
27 for(int j = 1; j <= len; ++j) { // >
28 if(a[i] == -1 || j == a[i])
29 dp[i][j][0] = (dp[i][j][0] + sum) % mod;
30 for(int k = 0; k < 3; ++k) {
31 sum = (sum + dp[i - 1][j][k]) % mod;
32 }
33 }
34 for(int j = 1; j <= len; ++j) { // ==
35 for(int k = 0; k < 3; ++k) {
36 if(a[i] == -1 || j == a[i])
37 dp[i][j][1] = (dp[i][j][1] + dp[i - 1][j][k]) % mod;
38 }
39 }
40 if(i == 2) continue;
41 len = 1;
42 if(a[i] != -1) len = a[i];
43 sum = 0;
44 for(int j = 200; j >= len; --j) { // <
45 if(a[i] == -1 || j == a[i])
46 dp[i][j][2] =(dp[i][j][2] + sum) % mod;
47 for(int k = 1; k < 3; ++k) {
48 sum = (sum + dp[i - 1][j][k]) % mod;
49 }
50 }
51 }
52 ll ans = 0;
53 for(int j = 1; j <= 200; ++j) {
54 for(int k = 1; k < 3; ++k) {
55 if(a[n] == -1 || j == a[n])
56 ans = (ans + dp[n][j][k]) % mod;
57 }
58 }
59 printf("%lld\n", ans);
60 return 0;
61 }
【非原创】codeforces - 1067A Array Without Local Maximums【dp】的更多相关文章
- codeforces 1068d Array Without Local Maximums dp
题目传送门 题目大意:给出一个长度为n的数组,这个数组有的数是给出的,有的数是固定的,且范围都在[1,200]之间,要求这个数组中,每一个数字都小于等于 前后两个数字的最大值,求方案数mod p. 思 ...
- 【计数dp】Array Without Local Maximums
参考博客:[CF1068D]Array Without Local Maximums(计数DP) [题意] n<=1e5 dp[i][j][k]表示当前第i个数字为j,第i-1个数字与第i个之间 ...
- 【CF1068D】Array Without Local Maximums(计数DP)
题意: n<=1e5 思路:卡内存 dp[i][j][k]表示当前第i个数字为j,第i-1个数字与第i个之间大小关系为k的方案数(a[i-1]<a[i],=,>) 转移时使用前缀和和 ...
- 「题解报告」CF1067A Array Without Local Maximums
大佬们的题解都太深奥了,直接把转移方程放出来让其他大佬们感性理解,蒟蒻们很难理解,所以我就写了一篇让像我一样的蒟蒻能看懂的题解 原题传送门 动态规划三部曲:确定状态,转移方程,初始状态和答案. --神 ...
- tp5.1 phpspreadsheet- 工具类 导入导出(整合优化,非原创,抄一抄,加了一些自己的东西,)
phpspreadsheet-工具类 导入导出(整合优化,非原创,抄一抄,加了一些自己的东西)1. composer require phpoffice/phpspreadsheet2. 看最下面的两 ...
- Linux下high CPU分析心得【非原创】
非原创,搬运至此以作笔记, 原地址:http://www.cnitblog.com/houcy/archive/2012/11/28/86801.html 1.用top命令查看哪个进程占用CPU高ga ...
- CSS样式命名整理(非原创)
非原创,具体出自哪里忘了,如果侵害您的利益,请联系我. CSS样式命名整理 页面结构 容器: container/wrap 整体宽度:wrapper 页头:header 内容:content 页面主体 ...
- 非原创。使用ajax加载控件
非原创.来自博客园老赵. public class ViewManager<T> where T : System.Web.UI.UserControl { private System. ...
- Java 表达式解析(非原创)
因项目需要,在网上找来一套表达式解析方法,由于原来的方法太过于零散,不利于移植,现在整理在同一文件内: 文件中包含5个内部类,源码如下: import java.util.ArrayList; imp ...
随机推荐
- 在recover database时,如何决定该从哪一个SCN开始恢复
使用备份恢复的方法搭建DG库,还原数据文件后,打开数据库时报错 SQL> ALTER DATABASE OPEN READ ONLY; ALTER DATABASE OPEN READ ONLY ...
- CS_WHERE_USED_MAT 反查BOM的成品CS15
可能很多人都用过BOM展开的函数,但是有的时候,需要通过组件去反查BOM的成品,而这时候就需要用到函数 CS_WHERE_USED_MAT来实现,而对于CS_WHERE_USED_MAT只能反查到上一 ...
- 3A的限流芯片PW1503
PW1503是超低RDS(ON)开关,具有可编程的电流限制,以保护电源于过电流和短路情况.它具有超温保护以及反向闭锁功能. PW1503采用薄型(1毫米)5针薄型SOT封装,提供可调版本. 特征 ...
- Lakehouse: 统一数据仓库和高级分析的新一代开放平台
1. 摘要 数仓架构在未来一段时间内会逐渐消亡,会被一种新的Lakehouse架构取代,该架构主要有如下特性 基于开放的数据格式,如Parquet: 机器学习和数据科学将被作为头等公民支持: 提供卓越 ...
- es_python_操作
获取es索引 https://www.itranslater.com/qa/details/2583886977221264384
- docker 运行时常见错误
docker 运行时常见错误 (1) Cannot connect to the Docker daemon at unix:///var/run/docker.sock. [root@localho ...
- JavaWeb三大框架基础架构——CRUD的基础功能搭建
@ 目录 介绍 注意 applicationContext.xml mybatis-config.xml web.xml 结束语 介绍 项目前端采用了bootstrap,后端是ssm三大框架 注意 这 ...
- 转 Fiddler4 手机抓包
Fiddler4 手机抓包 文章转自:https://www.cnblogs.com/zhengna/p/10876954.html 1.要对计算机Fiddler进行配置,允许远程计算机连接. 2. ...
- 面对key数量多和区间查询低效问题:Hash索引趴窝,LSM树申请出场
摘要:Hash索引有两个明显的限制:(1)当key的数量很多时,维护Hash索引会给内存带来很大的压力:(2)区间查询很低效.如何对这两个限制进行优化呢?这就轮到本文介绍的主角,LSM树,出场了. 我 ...
- protoc-gen-validate (PGV)
https://github.com/envoyproxy/protoc-gen-validate This project is currently in alpha. The API should ...