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].注意一下方案的转移和最终结果的统计。
#include <cstdio>
#include <cstring>
#include <algorithm> using namespace std; const int maxn = 2e5+;
const int mod = 1e9+; int r,g;
int dp[maxn]; int main()
{
scanf("%d%d",&r,&g);
memset(dp,,sizeof dp); int ans = ,oans;
if(r > ) dp[]++;
if(g > ) dp[]++;
oans = dp[]+dp[];
for(int i=;i<;i++)
{
bool flag = false;
int tol = i*(i+)/;
int bgn = min(r,tol);
ans = ; for(int j=bgn;j>=;j--)
{
bool flag_g = false;
if((tol-j) <= g && dp[j])
{
dp[j] = dp[j];
dp[j] %= mod;
flag = true;
flag_g = true;
ans += dp[j];
ans %= mod;
}
if(j >= i && dp[j-i])
{
dp[j] += dp[j-i];
dp[j] %= mod;
flag = true;
flag_g = true;
ans += dp[j-i];
ans %= mod;
}
if(!flag_g)
dp[j] = ;
//printf("i:%d j:%d dp:%d\n",i,j,dp[j]);
}
if(!flag)
{
break ;
}
oans = ans;
}
printf("%d\n",oans);
}
Codeforces478D-Red-Green Towers-DP的更多相关文章
- UVA.10066 The Twin Towers (DP LCS)
UVA.10066 The Twin Towers (DP LCS) 题意分析 有2座塔,分别由不同长度的石块组成.现在要求移走一些石块,使得这2座塔的高度相同,求高度最大是多少. 问题的实质可以转化 ...
- [补题][Codeforces478D]Red-Green Towers(DP)
题目链接 http://codeforces.com/problemset/problem/478/D 题意 叠放塔:有红.绿两种色块.从第一层开始,第一层1块,第二层2块,第i层i块. 要求每一层只 ...
- Codeforces Round #273 (Div. 2)D. Red-Green Towers DP
D. Red-Green Towers There are r red and g green blocks for construction of the red-green tower. Re ...
- Codeforces 1106E. Lunar New Year and Red Envelopes(DP)
E. Lunar New Year and Red Envelopes 题意: 在长度为n的时间轴上,有k个红包,每个红包有领取时间段[s,t],价值w,以及领了个这个红包之后,在时间d到来之前无法再 ...
- Codeforces 1106 E. Lunar New Year and Red Envelopes 优先队列+dp
题意大致是Bob新年拿红包,每个红包可以在s-t时间内取,但是取了之后得在d+1时间开始才能继续取红包. 同时他女儿能在m个时间点阻止他取红包,求女儿阻止后Bob取得的w总和最小值. Bob取红包的策 ...
- CodeForces 478D Red-Green Towers (DP)
题意:给定 n 块红砖,m 块绿砖,问有多少种方式可以建造成最高的塔,每一层颜色必须一样. 析:首先要确定最高是多少层h,大约应该是用 h * (h+1) <= (m+n) * 2,然后dp[i ...
- topcoder 643 DIV2
太弱了,太弱了! A:基本的判断吧,然后就是边界问题,写了好久,结果发现时房间第二个交的.. B:真心跪了,还好想出来了,思路想的太慢太慢,结果交上去,落后太多,不过HACK时很多人挂了, 这也是DI ...
- dp --- hdu 4939 : Stupid Tower Defense
Stupid Tower Defense Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/ ...
- hdu4939 Stupid Tower Defense (DP)
2014多校7 第二水的题 4939 Stupid Tower Defense Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 131 ...
- HDU4939Stupid Tower Defense (有思想的dp)
Stupid Tower Defense Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Oth ...
随机推荐
- Django model中的class Meta详解
通过一个内嵌类 "class Meta" 给你的 model 定义元数据, 类似下面这样: class Foo(models.Model): bar = models.CharFi ...
- Linux iptables 命令
iptables 是 Linux 管理员用来设置 IPv4 数据包过滤条件和 NAT 的命令行工具.iptables 工具运行在用户态,主要是设置各种规则.而 netfilter 则运行在内核态,执行 ...
- WPF仿网易云音乐系列(一、左侧菜单栏:Expander+RadioButton)
1.简介 上一篇咱们说到,网易云音乐的左侧菜单栏可以通过Expander+RadioButton来实现,具体如何实现,咱们下面开始干: 首先来一张网易云音乐PC版原图(个人觉得PC版比UWP版左侧菜单 ...
- LeetCode 965. Univalued Binary Tree
A binary tree is univalued if every node in the tree has the same value. Return true if and only if ...
- Eclipse新建Maven工程——git篇
1.eclipse,新建一个maven工程,步骤如下图: 右键新建的工程 发布前后工程对比如下: 2.发布为本地仓库 因为项目中,不是所有的文件,都需要提交到githut上,所以需要把不需要提交的问题 ...
- BZOJ1997 平面图判定 平面图性质 2-sat
相交的两条边不能在同一侧,用2-sat即可. 平面图点数-边数关系 \(E\le 3V-6\) 写这篇文章我只是想说明,知乎一小时,题解一分钟. lb Zhihu, gos langar Qarwet ...
- Karen and Game CodeForces - 816C (暴力+构造)
On the way to school, Karen became fixated on the puzzle game on her phone! The game is played as fo ...
- 【学习总结】Git学习-参考廖雪峰老师教程七-标签管理
学习总结之Git学习-总 目录: 一.Git简介 二.安装Git 三.创建版本库 四.时光机穿梭 五.远程仓库 六.分支管理 七.标签管理 八.使用GitHub 九.使用码云 十.自定义Git 期末总 ...
- jdk下载及环境变量配置
一.下载 下载链接 二.环境变量:
- C#复习笔记(3)--C#2:解决C#1的问题(泛型)
这一章会描述在C#2中所做的主要的变化 泛型 泛型的概念中包含类型参数和类型实参,类型参数相当于类型实参的蓝图. 泛型类型分为未绑定泛型类型和已构造泛型类型.已构造泛型类型又分为开放的泛型类型和封闭的 ...