zoukankan      html  css  js  c++  java
  • BZOJ2699: 更新 dp

    令 $f[i][k][j]$ 表示考虑前 $i$ 个位置,有 $k$ 次更新,且最大值为 $j$ 的方案数.   

    转移的话是一个前缀和.    

    由于是多组询问,所以可以先预处理出来.  

    细节什么的要注意一下.  

    code: 

    #include <bits/stdc++.h>   
    #define ll long long    
    #define mod 1000000007
    #define setIO(s) freopen(s".in","r",stdin) 
    using namespace std; 
    int f[160][302][160],sum[160][302][160];   
    int main() 
    { 
        // setIO("input");             
        for(int i=1;i<=300;++i) f[1][i][0]=1,sum[1][i][0]=(sum[1][i-1][0]+f[1][i][0])%mod;     
        for(int i=2;i<=150;++i)                           
            for(int k=0;k<=i;++k) 
            {     
                for(int j=1;j<=300;++j)          
                {   
                    f[i][j][k]=(ll)f[i-1][j][k]*j%mod;   
                    if(k>0) (f[i][j][k]+=(ll)sum[i-1][j-1][k-1])%=mod;      
                }             
                for(int j=1;j<=300;++j) 
                    sum[i][j][k]=(ll)(sum[i][j-1][k]+f[i][j][k])%mod;   
            }       
        int T,n,k,p,ans;   
        scanf("%d",&T);  
        while(T--) scanf("%d%d%d",&n,&k,&p),printf("%d
    ",sum[n][k][p]);  
        return 0; 
    }
    

      

  • 相关阅读:
    枚举类型总结
    正则表达式-Java
    java中Mongo
    cookie
    xsd解析
    水平分表的实现
    c#位运算小例子笔记
    c#设计模式之观察者模式(Observer Pattern)
    c#设计模式之代理模式(Proxy Pattern)
    .Net 数据缓存浅析
  • 原文地址:https://www.cnblogs.com/guangheli/p/13029394.html
Copyright © 2011-2022 走看看