2021年-分糖果

[CSP-J 2021] 分糖果 - 洛谷


解题思路:

1.首先,看到数据规模,109次方,利用for循环暴力求解的话肯定会超时,不会拿满分,那么就要分析如何来简化结构

2.分析情况,要求他剩下的糖果最多,那么最多的时候不会超过n-1,因为一旦超过n-1,则又可以发一轮了,所以最大值为n-1

3.再来分析最小值,最小值就当拿L块糖果的时候,得到的糖果为L%n,上下限都确定,现在就来分析,最大范围的R

4.如果L-R中的数k%n一直是单调递增的,那么R就是应该取的糖果,输出R%n,如果第一个递增已经结束了,k%n=n-1,但是k<R,那么也就没有必要往后遍历了,最大值已经出现,输出n-1即可


#include<bits/stdc++.h>
using namespace std;
int main()
{
	int n,l,r;
	cin>>n>>l>>r;
	if(r>=l+n-l%n-1)
	cout<<n-1;//如果r超过了到达第一个余数为n-1的值,输出n-1 
	else
	cout<<r%n;//否则没有到达顶点,r就是最优解 
	return 0;
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值