zoukankan      html  css  js  c++  java
  • 【非原创】codeforces

    学习博客:戳这里

    附本人代码:

     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
    ", ans);
    60     return 0;
    61 }
    View Code
  • 相关阅读:
    P2043 质因子分解
    CODE[VS] 3164 质因数分解
    借过
    CODE[VS] 1165 字符串的展开 || P1098 字符串的展开
    CODE[VS] 1144 守望者的逃离 || P1095 守望者的逃离
    CODE[VS] 2914 吹空调
    AC日记
    AC日记
    山科日记—回文
    山科日记—编写函数myFloor和myCeil(编程题)
  • 原文地址:https://www.cnblogs.com/zmin/p/9900301.html
Copyright © 2011-2022 走看看