zoukankan      html  css  js  c++  java
  • Codeforces478D-Red-Green Towers-DP

     不是特别难的一道dp题。

    给r个红块,g个绿块,计算这些块能磊出的最高塔的方案数。

    塔的每一层都比上一层多一块,每一层只能有一种颜色。

    dp[i][j]表示第i层,j个红块的方案数。

    则dp[i][j] = dp[i-1][j] + dp[i-1][j-i].注意一下方案的转移和最终结果的统计。

     1 #include <cstdio>
     2 #include <cstring>
     3 #include <algorithm>
     4 
     5 using namespace std;
     6 
     7 const int maxn = 2e5+10;
     8 const int mod = 1e9+7;
     9 
    10 int r,g;
    11 int dp[maxn];
    12 
    13 int main()
    14 {
    15     scanf("%d%d",&r,&g);
    16     memset(dp,0,sizeof dp);
    17 
    18     int ans = 0,oans;
    19     if(r > 0) dp[1]++;
    20     if(g > 0) dp[0]++;
    21     oans = dp[0]+dp[1];
    22     for(int i=2;i<1000;i++)
    23     {
    24         bool flag = false;
    25         int tol = i*(i+1)/2;
    26         int bgn = min(r,tol);
    27         ans = 0;
    28 
    29         for(int j=bgn;j>=0;j--)
    30         {
    31             bool flag_g = false;
    32             if((tol-j) <= g && dp[j])
    33             {
    34                 dp[j] = dp[j];
    35                 dp[j] %= mod;
    36                 flag = true;
    37                 flag_g = true;
    38                 ans += dp[j];
    39                 ans %= mod;
    40             }
    41             if(j >= i && dp[j-i])
    42             {
    43                 dp[j] += dp[j-i];
    44                 dp[j] %= mod;
    45                 flag = true;
    46                 flag_g = true;
    47                 ans += dp[j-i];
    48                 ans %= mod;
    49             }
    50             if(!flag_g)
    51                 dp[j] = 0;
    52             //printf("i:%d j:%d dp:%d
    ",i,j,dp[j]);
    53         }
    54         if(!flag)
    55         {
    56             break ;
    57         }
    58         oans = ans;
    59     }
    60     printf("%d
    ",oans);
    61 }
  • 相关阅读:
    1.2 进位运算 & 数据类型 & 变量
    phpcms 下载数统计
    mysql 手动安装
    php 位运算权限问题
    php foreach详解
    文字溢出问题
    webstrom 基本设置
    DEDE利用Ajax实现调用当前登录会员的信息简要说明
    windows服务器
    DedeCms密码解密
  • 原文地址:https://www.cnblogs.com/helica/p/5537991.html
Copyright © 2011-2022 走看看