CodeForces 478D-Red-Green Towers

国密SM4与AES-128性能实战对比:从算法原理到嵌入式选型 分组密码是保障数据机密性的核心技术,其核心原理是通过复杂的迭代运算和密钥扩展,将固定长度的明文块转换为密文。AES-128作为国际通用标准,以其成熟的生态和硬件加速指令集(如AES-NI)著称,在性能敏感场景中优势显著。而国密SM4算法在设计上更侧重于硬件友好性和自主可控,其线性变换基于高效的移位与异或操作,在纯软件实现中常展现出更优的效率。在嵌入式系统、物联网终端等资源受限且对自主可控有硬性要求的应用场景中,算法的选择需综合考量性能、安全性、合规性及平台支持。本文通过构建底层测试框架,深入对比了SM4与A 阅读详情

题目

D. Red-Green Towers
time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output

There are r red and g green blocks for construction of the red-green tower. Red-green tower can be built following next rules:

  • Red-green tower is consisting of some number of levels;

  • Let the red-green tower consist of n levels, then the first level of this tower should consist of n blocks, second level — of n - 1 blocks, the third one — of n - 2 blocks, and so on — the last level of such tower should consist of the one block. In other words, each successive level should contain one block less than the previous one;

  • Each level of the red-green tower should contain blocks of the same color.

Let h be the maximum possible number of levels of red-green tower, that can be built out of r red and g green blocks meeting the rules above. The task is to determine how many different red-green towers having h levels can be built out of the available blocks.

Two red-green towers are considered different if there exists some level, that consists of red blocks in the one tower and consists of green blocks in the other tower.

You are to write a program that will find the number of different red-green towers of height h modulo 109 + 7.

Input

The only line of input contains two integers r and g, separated by a single space — the number of available red and green blocks respectively (0 ≤ r, g ≤ 2·105, r + g ≥ 1).

Output

Output the only integer — the number of different possible red-green towers of height h modulo 109 + 7.

Examples
Input
4 6
Output
2
Input
9 7
Output
6
Input
1 1
Output
2
Note

The image in the problem statement shows all possible red-green towers for the first sample.

题义

给出r个红方块,g个绿方块,要摆出图上的那种形状,就是第i层要有i个,每层都一个颜色,而且要摆出能达到的最大高度,要求能摆出的种数。

解法

设h为最大高度,可以知道h最大是1000不到,设dp[i][j]表示从上往下,摆到第i层,红方块还剩j个的方案数,则

dp[i+1][j]=dp[i+1][j]+dp[i][j]//第i+1层不放红方块的情况

dp[i+1][j-i-1]=dp[i+1][j-i-1]+dp[i][j]//第i+1层方红方块的情况

需要滚动数组优化空间

代码

#include<cstdio>
#include<cstring>
#define mod 1000000007
int dp[2][200005],sum[1005];
int main()
{
	int r,g,i,h,j;
	scanf("%d%d",&r,&g);
	if(r==0||g==0)
	{
		printf("1\n");
		return 0;
	}
	sum[0]=0;
	for(i=1;;i++)
	{
		sum[i]=sum[i-1]+i;
		if(sum[i]>r+g)
			break;
	}
	h=i-1;
	dp[1][r]=1;
	dp[1][r-1]=1;
	for(i=1;i<h;i++)
	{
		int tmp1=i%2,tmp2=(i+1)%2;
		memset(dp[tmp2],0,sizeof(dp[tmp2]));
		for(j=0;j<=r;j++)
		{
			if(dp[tmp1][j]==0)
				continue;
			if(g-sum[i]+r-j>=i+1)
				dp[tmp2][j]=(dp[tmp2][j]+dp[tmp1][j])%mod;
			if(j>=i+1)
				dp[tmp2][j-i-1]=(dp[tmp2][j-i-1]+dp[tmp1][j])%mod;
		}
	}
	int ans=0;
	for(i=0;i<=r;i++)
		ans=(ans+dp[h%2][i])%mod;
	printf("%d\n",ans);
	return 0;
}


通过CN3口直接控制台达伺服电机A2-M(二) 既然可以通过RS485与伺服驱动器进行通讯,那么就肯定可以控制转速 首先,需要了解下 ‘控制模式及控制命令输入源设定’ 依据以上资料,速度控制模式有两种,S和SZ模式,分别对应模式选择中的02和04,对P1-01的地址0102进行写地址操作即可实现,一开始我使用了S模式,但是这个模式在寸动模式下会自动运转,不符合我控制的要求,后面改用SZ模式,就可以实现零速度。 使用串口工具发送命令:“01 06 01 02 00 04 28 35”即可以实现设置,设置完成后可以手动在伺服驱动器的按键面板上进行确 阅读详情

相关推荐

从Palantir到AI时代:Forward Deployed Engineer模式的深度解析

《从Palantir到AI时代:FDE模式的创新与挑战》摘要:Palantir开创的前置部署工程师(FDE)模式正在成为AI创业公司的标配。该模式通过现场工程师深入了解客户需求,填补产品与实际应用间的鸿沟,颠覆了传统SaaS规模化路径。核心优势在于将定制化服务转化为产品发现机制,特别适合高度异质化的AI市场。成功关键在于平衡定制与标准化,通过合同价值增长、产品杠杆效应等独特指标衡量成效。FDE人才需要兼具领域洞察力与快速原型能力。这一模式表明,在AI等新兴领域,深入客户现场可能比单纯追求技术突破更能创造商业

老孙 | Ethan Sun 的博客:AI 智能体与 AI 原生软件的工程实践 4527

D. Red-Green Towers(动态规划)

time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output There arerred andggreen blocks for construction of thered-greentower.Red...

ccsu_deer 1156

量化策略分享之首板低开

这个量化策略的核心是选择在低位、首次涨停后次日低开的股票,开盘时买入,上午有盈利就卖出,没有就拿到尾盘在卖出;策略优点在于选择的股票在低位,风险较低,并且刚启动首板,有大资金介入,第二天能快速跑路。

qq_29301281的博客 1463

Codeforces 478D Red-Green Towers (DP)

### 题目大意 用r块红色、g块绿色的方块,搭成一个h层(尽可能高)的塔,第i层有i个相同颜色的方块。 问所有可行的方案有多少。 ### 解题思路 动态规划 dp(h, r) 表示到h层,已用r块红色的方案数 绿色个数可以通过h,r确定。 dp(h, r) = dp(h-1, r-h) + dp(h-1, r) 明显可以滚动压缩,dp只与之前一次相关,r反向循环避免引用修改过的数据。 dp[r] +

wujy的专栏 1522

SBP依赖计算中的蝴蝶效应:一个Prefab修改如何触发全量重建?

本文深入探讨了Unity中SBP(Scriptable Build Pipeline)依赖计算的蝴蝶效应,解析了Prefab修改如何触发全量重建的机制。通过分析Asset与Object的层级关系、依赖计算的三种维度及CacheEntry系统,揭示了全量重建的根本原因,并提供了依赖可视化工具开发、优化策略与最佳实践,帮助开发者提升构建效率。

weixin_29015051的博客 444

eDP/DP接口简介

目前,在视频传输协议以及接口领域,外部接口主要是DP与HDMI两分天下,当然之前出现过很多接口-VGA, DVI等等,最新平台基本以这两个为主;笔记本内部接口就基本上使用eDP((Embedded Display Port))作为标准接口来驱动液晶屏了。那么问题来了,eDP和DP,是完全兼容的么?eDP,DP,HDMI,这三种接口的显示器,可以插在同一个接口上使用么?这篇文章,就会从硬件和一部分协议的角度分析一下这三大协议。

weixin_50518899的博客 2万+

Codeforcces 478D Red-Green Towers【dp】好题!

D. Red-Green Towers time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output There are r red and g green blocks for construc

mengxiang000000 579

R语言笔记十:独立性检验函数

1.独立性检验函数        独立性检验是根据频数信息判断两类因子彼此相关或相互独立的假设检验。所谓独立性就是指变量之间是独立的,没有关系。 独立性检验算法:卡方检验、Fisher检验、Cochran-Mantel-Haenszel检验 2.假设检验 假设检验(Hypothesis Testing)是数理统计学中根据一定假设条件由样本推断总体的一种方法。 原假设——没有发生 备择假设——发生了 具体做法:根据问题的需要对所研究的总体作

weixin_44384631的博客 4111

Codeforces 478D Red-Green Towers

题意:给你红色砖块和绿色分别为n和m块,让这些砖块组成每层递减1的 塔,每一层的颜色必须一样,问你迭到最高层有多少种方法 解题思路:dp[i][j] 表示第i层用了j个红色砖块。 解题代码: 1 // File Name: 478d.cpp 2 // Author: darkdream 3 // Created Time: 2015年03月13日 星期五 08时42分21秒...

weixin_30443075的博客 160

手把手教你学veriolg(二十六)-- Verilog CIC 滤波器设计

目录 Verilog CIC 滤波器设计1. CIC 滤波器的基本原理2. Verilog 实现3. 说明4. 测试激励5. 总结 CIC(Cascade-Integrator-Comb)滤波器是一种特殊的数字滤波器,常用于多速率信号处理中,尤其是用于信号的上采样(插值)和下采样(抽取)。CIC 滤波器的特点在于它具有简单的硬件实现、不需要乘法器(仅使用加法器和延迟元件)、且具有线性相位特性。然而,CIC 滤波器的缺点是它会产生较大的量化误差,因此在设计时需要特别注意字长的选择以避免溢出。1. CIC 滤波

MHD0815的博客 888

【Linux0.11代码分析】之 系列文章链接汇总(全)

【Linux0.11代码分析】00 之 系列文章链接汇总(全)

|~~~热爱生活、努力学习的小伙汁~~~| 1449

Codeforces 478D Red-Green Towers:dp

题目链接:http://codeforces.com/problemset/problem/478/D 题意:   给你r个红方块和g个绿方块,让你用这些方块堆一个塔。   最高层有1个方块,每往下一层块数+1,同时要保证每层中的方块都是同一种颜色。   如图:      问你在塔的高度最高的前提下,堆出塔的方案数。 题解:   假设塔最高能堆d层,则:     ...

a1392136的博客 299

GPFS扩展技术原理(十一)-FMDN广播与EID加解密

GFPS扩展技术原理(十一)FMDN广播及EID加解密

十多年蓝牙协议软件开发,擅长蓝牙协议分析 935

Codeforces 478D Red-Green Towers 背包

文章目录题意题解 啥dpdpdp都能变成背包就离谱. 题意 给出红绿色块的个数,用这些方块搭成金字塔形,每一层的颜色必须都相同,求能搭成不同最大金字塔的种数. 题解 设两种色块的个数分别为n,mn,mn,m,由于n,mn,mn,m复杂度同级,下全作nnn. 令dpi,jdp_{i,j}dpi,j​表示iii层金字塔用上红色块个数为jjj的方案总数,绿色块的个数可以直接计算. 则dpi,j=dpi−1,j−i(这一层用红色块)+dpi−1,j(这一层用绿色块)dp_{i,j}=dp_{i-1,j-i}(这一层

Fuko_Ibuki的博客 1万+

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

codeforces 478D Red-Green Towers dp

传送门:cf 478d         给定honglv

飞火扑蛾的专栏 742

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

codeforces 478D Red-Green Towers(dp)

题目链接

madaidao的专栏 677

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Codeforces 478D Red-Green Towers 构造+DP

题意:用r个红方块和g个绿方块构造高度为h的楼时,要满足第i层有i个方块,并且相同层的方块颜色相同.方块可以不全部用完 r,g 首先最大高度h(1+h) 所以当红色用r个时,剩下sum-x肯定小于等于g 把g按照若干组分割,得到一个合法法案. 已知高度h,剩下就考虑那些层涂红色,若红色用了x个 则要知道[1,h]个数中 选某些个数其和为x的方法数 并且剩下sum-x个要 #incl

Masamiiiiii 503

codeforces 478 D. Red-Green Towers(背包)

题目链接:http://codeforces.com/problemset/problem/478/D 题意:给出红色方块r个,绿色方块g个,问最高能叠几层等腰三角形,而且每一层的颜色必须相同。 题解:一道简单的背包问题,设dp[i]表示放了i个红方块一共有几种方案。 #include <iostream> #include <string> ...

awow80285的博客 250

Codeforces 478D Red-Green Towers

http://codeforces.com/problemset/problem/478/D 思路:dp:f[i][j]代表当前第i层,用了j个绿色方块的方案数,用滚动数组,还有,数组清零的时候一定要用memset,不然for的常数太大。。 1 #include<cstdio> 2 #include<cmath> 3 #include<algorit...

weixin_34114823的博客 104

codeforces 478D Red-Green Towers (dp)

题意: 给出r个红色方块和g个绿色方块。现在问这些方可可以搭成多少种塔。塔的高度要尽量最高。第一层一个方块第二层两个...最后以层h个。高度为h。每层只能是红色方块或者绿色方块。 题解: 之前想的状态时这个dp[i][j][k]到第i层位置用了j个红块,和k个绿块。内存明显不够。 那么优化下dp[i][j]表示到第i层位置红块的用掉的个数,那么绿块很容易可以得出。但是内存还是不够用,急促优

ACM之梦 820

codeforces 478D D. Red-Green Towers(dp)

题目链接:codeforces 478D题目大意:给出r个红砖,g个绿砖,问有多少种方法搭成最高的塔。题目分析: 定义状态dp[i][j]表示构造i层的塔需要j块绿砖的方案数。 转移方程:dp[i][j]=dp[i−1][j−i]+dp[i−1][j]dp[i][j] = dp[i-1][j-i] + dp[i-1][j] 分别代表当前这一层放绿砖还是放红砖(当然要先判断当前状态转移是否合法) AC

llin-黎辰 1917

CodeForces 478D Red-Green Towers (DP+优化状态)

很容易想到二维DP暴力吧,但是题目不允许,于是 开二维dp(i,j)表示堆到i层且r用了j个的方案数, 如果i*(i+1)/2<=g+j,dp(i,j)+=dp(i-1,j);表示这层如果不放r的话 如果j大于等于i,dp(i,j)+=dp(i-1,j-i); 那么压缩下空间应该不难,初始化dp(0)=1 #include<bits/stdc++.h> using...

满月照亮的路 271

Codeforces 478D Red-Green Towers dp

题目链接:点击打开链接 题意: 给定r个红色正方体,g个绿色正方体。 要求搭建一个高度为n的塔。 对于高度为n的塔,第一层积木个数必须为n,第二层必须为n-1,依次类推,每层比下面那层少一个。 且同一层颜色必须相同。 问: 我们设最高能搭建的塔的高度为h,问有多少种方法能搭建出高度为h的塔。 思路: 从最顶层开始构造。 设dp[i][j]表示前i层花了j个红色木块的方法

九野的博客 2229

CodeForces 478D-Red-Green Towers(滚动数组dp)

题意:给r个红格子,g个绿格子, 每层只有一种颜色,问有多少种可以达到最大层数的方法数 解析:dp[i][j]表示从上到下摆到第i层用j个红格子的方法数 所以第i层摆红格子的话 dp[i][j]+=dp[i-1][j-i]; 不摆的话 就要摆绿格子 已经摆的绿格子为i(i-1)/2-j dp[i][j]+=dp[i-1][j]; 由于空间有限,...

城南的花 234
上一篇: CodeForces 514D-R2D2 and Droid Army
下一篇: CodeForces 213C-Relay Race
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值