zoukankan      html  css  js  c++  java
  • CF1227F1 Wrong Answer on test 233 (Easy Version)(dp)

    设计二维dp状态为f[][],处理到i,比原来方案多j的答案是多少

    这样可以根据h[i]和h[i+1]来作比较得到

    这里因为多j个可能是负的,也就是当前答案不一定是正的,因此我们考虑坐标平移2001个位置,把2001这个点当作原点,这样不会产生边界情况

    #include<bits/stdc++.h>
    #define getsz(p) (p?p->sz:0)
    using namespace std;
    typedef long long ll;
    typedef pair<ll,int> pll;
    const int N=4e5+10;
    const ll mod=998244353;
    ll f[2010][4020];
    int h[N];
    int main(){
        ios::sync_with_stdio(false);
        int n;
        ll k;
        cin>>n>>k;
        int i;
        for(i=1;i<=n;i++)
            cin>>h[i];
        if(k==1){
            cout<<0<<endl;
            return 0;
        }
        memset(f,0,sizeof f);
        f[0][2001]=1;
        for(i=1;i<=n;i++){
            for(int j=1;j<=4001;j++){
                if(h[i]==h[i%n+1]){
                    f[i][j]=f[i-1][j]*k%mod;
                }
                else{
                    f[i][j]=(f[i-1][j-1]+f[i-1][j+1]+f[i-1][j]*(k-2))%mod;
                }
            }
        }
        ll ans=0;
        for(i=2002;i<=2001+n;i++){
            ans=(ans+f[n][i])%mod;
        }
        cout<<ans<<endl;
        return 0;
    }
    View Code
  • 相关阅读:
    racktable安装过程
    racktables
    EM上的按钮是方框的问题
    install oracle
    记一次ORACLE无法启动登陆事故
    安装rlwrap-0.37.tar.gz
    centos7 安装oracle 11g数据库
    centos 7 安装mariadb
    centos7 lamp
    Linux安全之SSH 密钥创建及密钥登录
  • 原文地址:https://www.cnblogs.com/ctyakwf/p/13487981.html
Copyright © 2011-2022 走看看