zoukankan      html  css  js  c++  java
  • 【洛谷T89379 【qbxt】复读警告】

    题目链接

    这个题可以应用dp

    #include<bits/stdc++.h>
    using namespace std;
    const int mod=1e9+7;
    inline int read()
    {
        int a=0,b=1;
        char c=getchar();
        while(c<'0'||c>'9')
        {
            if(c=='-')
                b=-1;
            c=getchar();
        }
        while(c>='0'&&c<='9')
        {
            a=(a<<3)+(a<<1)+c-'0';
            c=getchar();
        }
        return a*b;
    }
    inline void out(int n)
    {
        if(n<0)
        {
            putchar('-');
            n=-n;
        }
        if(n>=10)
            out(n/10);
        putchar(n%10+'0');
    }
    int s[1001];
    int dp[1001][1001];
    int main()
    {
        int n=read(),k=read();
        for(int i=1;i<=n;i++)
            s[i]=read();
        dp[0][0]=1;
        for(int i=1;i<=n;i++)
        {
            for(int j=0;j<k;j++)
            {
                int t=j-s[i]%k;
                if(t<0)
                    t+=k;
                dp[i][j]=(dp[i-1][j]+dp[i-1][t])%mod;
            }
        }
        out(dp[n][0]);
        return 0;
    }

    我们用dp[i][j]表示dp到i,%key为j的方案数

    根据推导,我们发现

    可以得到这样一个dp转移方程
    dp[i][j]=(dp[i-1][j]+dp[i-1][j-s[i]%k])%mod;

    保证j-s[i]%k>0

    那么可以得到代码

  • 相关阅读:
    Tomcat December 31,2019
    XML
    Java
    mysql8.0.16安装(补) September 24,2019
    乱码中的编码和解码
    idea优化
    新版web.xml
    重定向和请求转发
    web下载文件设置的头信息
    响应状态码
  • 原文地址:https://www.cnblogs.com/gongcheng456/p/11238361.html
Copyright © 2011-2022 走看看