【链接】 我是链接,点我呀:)

【题意】

在这里输入题意

【题解】

显然最多1000行的样子。
从上到小做dp
设f[i][j]为前i行,使用了j个红色方块的方案数。
f[1][r] = 1;如果r>0且g>0则f[1][r-1]=1;
然后如果第i+1行不用红色的话。->就只能用绿色了。。
算算绿色够不够填i+1个。。
够得话
f[i+1][j] = f[i+1][j] + f[i][j];
然后看看红色够不够填i+1个
够得话
还可以用红色填i+1行
也即
f[i+1][j-(i+1)] = f[i+1][j-(i+1)]+ f[i][j];
最后取∑f[h][0..r];

加一个滚动数组搞。。

但感觉时间很玄学啊。都2个亿的复杂度了。。

【代码】

#include <bits/stdc++.h>
#define LL long long
#define rep1(i,a,b) for (int i = a;i <= b;i++)
#define rep2(i,a,b) for (int i = a;i >= b;i--)
#define all(x) x.begin(),x.end()
#define pb push_back
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
using namespace std; const double pi = acos(-1);
const int dx[4] = {0,0,1,-1};
const int dy[4] = {1,-1,0,0};
const int MOD = 1e9+7; const int N = 2000;
const int R = 3e5; int r,g,f[2][R+10],h,cur[N+10]; int main(){
#ifdef LOCAL_DEFINE
freopen("rush_in.txt", "r", stdin);
#endif
ios::sync_with_stdio(0),cin.tie(0);
cin >> r >> g;
cur[1] = 1;
h = 1;
for (int i = 2;;i++){
cur[i] = cur[i-1] + i;
if (cur[i]>(r+g)) break;
h = i;
} f[1][r] = 1;if (r>0 && g > 0)f[1][r-1] = 1;
for (int i = 1;i <= h-1;i++){
memset(f[(i+1)&1],0,sizeof f[(i+1)&1]);
for (int j = 0;j <= r;j++){
//前i层,剩余红色砖块个数为j的方案数
if (f[i&1][j]==0) continue;
int green_available = g-(cur[i]-(r-j));
if (green_available>=(i+1)) f[(i+1)&1][j] = (f[(i+1)&1][j] + f[i&1][j])%MOD;
if (j>=(i+1)) f[(i+1)&1][j-(i+1)] = (f[(i+1)&1][j-(i+1)]+ f[i&1][j])%MOD;
}
}
int ans = 0;
for (int i = 0;i <= r;i++){
ans = (ans + f[h&1][i])%MOD;
}
cout<<ans<<endl;
return 0;
}

【【henuacm2016级暑期训练】动态规划专题 J】Red-Green Towers的更多相关文章

  1. 【henuacm2016级暑期训练-动态规划专题 C】Little Girl and Maximum XOR

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 考虑r最后的二进制形式为 1xxxxx 那么我们肯定想让第一个最高位的1保留. 因此我们选取的另外一个数字 一定是 0xxxxx的形 ...

  2. 【henuacm2016级暑期训练-动态规划专题 B】Coloring Trees

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] f[i][j][k]前i个位置,第i个位置放j这个颜色,然后形成了k个联通块的最小花费 分第i个位置有没有已经放颜色两种情况考虑. ...

  3. 【 henuacm2016级暑期训练-动态规划专题 A 】Cards

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 很显然只要维护B,R,G的数量就好了. 可以很容易想到一个dfs(int a,int b,int c) 然后如果a+b+c==1,那 ...

  4. 【【henuacm2016级暑期训练】动态规划专题 M】Little Pony and Harmony Chest

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 每一位显然只要取1..60这些数字. 然后需要保证每个这些数字里面,每个数字所用到的质因子都它所唯一拥有的.别人不能用 因为如果别人 ...

  5. 【【henuacm2016级暑期训练】动态规划专题 I】Gargari and Permutations

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 注意这k个序列每个都是排列. 如果在每个序列中都满足y出现在x之后的话. 那么我们从x连一条有向边至y (有一个序列不满足就不连 ( ...

  6. 【【henuacm2016级暑期训练】动态规划专题 H】Greenhouse Effect

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 原题意等价于:给你一个序列(实数的位置没用!)..你可以改变其中某些元素的位置(插入到某些位置中间. 然后让他变成有序的. (有序的 ...

  7. 【【henuacm2016级暑期训练】动态规划专题 E】Destroying Roads

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 首先. 这张图是无向无权图. 因此任意两点之间的最短路可以通过N^2的bfs轻易算出来. 即得到d[N+10][N+10] 考虑s[ ...

  8. 【【henuacm2016级暑期训练】动态规划专题 D】Writing Code

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 二维费用背包. f[i][j][k] 前i个人,写了j行,bug不超过k的方案数. 可以把每个人看成是一个物品. 它可以无限拿.然后 ...

  9. 【 【henuacm2016级暑期训练】动态规划专题 P】Animals

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 第i只动物如果饲养它的话. 代价是固定的就是(n-i+1)a[i] 所以相当于给你n个物品,每个物品的重量为(n-i+1)a[i], ...

随机推荐

  1. struct 模块简介

    用处 按照指定格式将Python数据转换为字符串,该字符串为字节流,如网络传输时,不能传输int,此时先将int转化为字节流,然后再发送; 按照指定格式将字节流转换为Python指定的数据类型; 处理 ...

  2. UVA10200 Prime Time

    /* UVA10200 Prime Time https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8& ...

  3. spring容器启动过程理解

    一.一切从手动启动IoC容器开始 ClassPathResource resource = new ClassPathResource("bean.xml"); DefaultLi ...

  4. [SharePoint2010开发入门经典]10、使用SPS2010构建面向服务的应用程序

    本章概要: 1.使用SPS自带的web service 2.构建自定义web service 3.使用不同的客户端解决方案部署自定义站点

  5. COCOS2DX 3.0 优化提升渲染速度 Auto-batching

    COCOS2DX 3.0 优化提升渲染速度 Auto-batching 近期在看COCOS2DX 3.0的Auto-batching合批与Auto Culling动态缩减功能以下就来细致看看吧:整合好 ...

  6. TS3

    let [first, ...rest] = [1, 2, 3, 4]; console.log(first); // outputs 1 console.log(rest); // outputs ...

  7. MYSQL中 FIND_IN_SET 函数

    每天掌握一点,你的知识财富就多一点  今天在维护项目的时候发现了个MYSQL的FIND_IN_SET函数,之前接触太浅,今天又涨点知识了.下面是做个测试 1.创建一张test表,并添加数据 2.编写s ...

  8. 洛谷P4015 运输问题(费用流)

    题目描述 WW 公司有 mm 个仓库和 nn 个零售商店.第 ii 个仓库有 a_iai​ 个单位的货物:第 jj 个零售商店需要 b_jbj​ 个单位的货物. 货物供需平衡,即\sum\limits ...

  9. PHP 导出excel 数据量大时

    public function ceshiexcel1(){ set_time_limit(0); $filename = '病毒日志'; header('Content-Type: applicat ...

  10. layer-list

    <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android=" ...