首页 > 其他分享 >[CSP-J 2021] 分糖果

[CSP-J 2021] 分糖果

时间:2024-12-15 08:59:47浏览次数:4  
标签:10 le 样例 2021 篮子 小朋友 糖果 CSP

题面

题目背景

红太阳幼儿园的小朋友们开始分糖果啦!

题目描述

红太阳幼儿园有 $n$ 个小朋友,你是其中之一。保证 $n \ge 2$。

有一天你在幼儿园的后花园里发现无穷多颗糖果,你打算拿一些糖果回去分给幼儿园的小朋友们。

由于你只是个平平无奇的幼儿园小朋友,所以你的体力有限,至多只能拿 $R$ 块糖回去。

但是拿的太少不够分的,所以你至少要拿 $L$ 块糖回去。保证 $n \le L \le R$。

也就是说,如果你拿了 $k$ 块糖,那么你需要保证 $L \le k \le R$。

如果你拿了 $k$ 块糖,你将把这 $k$ 块糖放到篮子里,并要求大家按照如下方案分糖果:只要篮子里有不少于 $n$ 块糖果,幼儿园的所有 $n$ 个小朋友(包括你自己)都从篮子中拿走恰好一块糖,直到篮子里的糖数量少于 $n$ 块。此时篮子里剩余的糖果均归你所有——这些糖果是作为你搬糖果的奖励

作为幼儿园高质量小朋友,你希望让作为你搬糖果的奖励的糖果数量(而不是你最后获得的总糖果数量!)尽可能多;因此你需要写一个程序,依次输入 $n, L, R$,并输出你最多能获得多少作为你搬糖果的奖励的糖果数量。

输入格式

输入一行,包含三个正整数 $n, L, R$,分别表示小朋友的个数、糖果数量的下界和上界。

输出格式

输出一行一个整数,表示你最多能获得的作为你搬糖果的奖励的糖果数量。

样例 #1

样例输入 #1

7 16 23

样例输出 #1

6

样例 #2

样例输入 #2

10 14 18

样例输出 #2

8

提示

【样例解释 #1】

拿 $k = 20$ 块糖放入篮子里。

篮子里现在糖果数 $20 \ge n = 7$,因此所有小朋友获得一块糖;

篮子里现在糖果数变成 $13 \ge n = 7$,因此所有小朋友获得一块糖;

篮子里现在糖果数变成 $6 < n = 7$,因此这 $6$ 块糖是作为你搬糖果的奖励

容易发现,你获得的作为你搬糖果的奖励的糖果数量不可能超过 $6$ 块(不然,篮子里的糖果数量最后仍然不少于 $n$,需要继续每个小朋友拿一块),因此答案是 $6$。

【样例解释 #2】

容易发现,当你拿的糖数量 $k$ 满足 $14 = L \le k \le R = 18$ 时,所有小朋友获得一块糖后,剩下的 $k - 10$ 块糖总是作为你搬糖果的奖励的糖果数量,因此拿 $k = 18$ 块是最优解,答案是 $8$。

【数据范围】

测试点 $n \le$ $R \le$ $R - L \le$
$1$ $2$ $5$ $5$
$2$ $5$ $10$ $10$
$3$ ${10}^3$ ${10}^3$ ${10}^3$
$4$ ${10}^5$ ${10}^5$ ${10}^5$
$5$ ${10}^3$ ${10}^9$ $0$
$6$ ${10}^3$ ${10}^9$ ${10}^3$
$7$ ${10}^5$ ${10}^9$ ${10}^5$
$8$ ${10}^9$ ${10}^9$ ${10}^9$
$9$ ${10}^9$ ${10}^9$ ${10}^9$
$10$ ${10}^9$ ${10}^9$ ${10}^9$

对于所有数据,保证 $2 \le n \le L \le R \le {10}^9$。

思路

一、暴力枚举

从 $l$ 到 $r$ 枚举,求出最大值。

预期分数: $70 pts$ ,可以通过前七个测试点。

最坏时间复杂度: $O(n)$

问题:虽然分数不低,但是要注意这是入门组第一题,必须拿满分。

二、数学思维

既然暴力不行,我们考虑数学的方法。

很容易想到的一个答案:既然要取最大值,那不就是 $n-1$ 吗?

好,但是有一个问题,比如样例二是为什么呢?你看, $r-l$ 此时等于 $4$ ,小于 $n-1$ ,所以这个区间出不了 $n-1$ 的答案。

那这个答案是多少呢?既然最多的满足不了了,那我们干脆都拿走,不就是最多了的吗?

所以我们得到答案就是: $max(r - r \div n \times n,n-1)$ 。注意,当取不到 $n-1$ 的时候,不能取大,只能取 $r - r \div n \times n$ 。

程序

#include<bits/stdc++.h>
using namespace std;
using ll = long long;
ll n,l,r;

int main()
{
    //freopen("candy.in","r",stdin);
    //freopen("candy.out","w",stdout);
	scanf("%lld%lld%lld",&n,&l,&r);
	ll m=r-r/n*n;
	if(r-m-1>=l && n-1>m) printf("%lld\n",n-1);
	else printf("%lld\n",m);
	return 0;
}

标签:10,le,样例,2021,篮子,小朋友,糖果,CSP
From: https://www.cnblogs.com/422lfggy347/p/18607537

相关文章

  • [SWPUCTF 2021 新生赛]crypto9
    [MoeCTF2021]Web安全入门指北—GET意思是GET传参,moe=flag就可以得到falg输入?moe=flagflag为:NSSCTF{ff26110b-8793-403c-990e-15c7f1820596}[SWPUCTF2021新生赛]crypto9#gpt写的代码fromitertoolsimportproductletter_list='ABCDEFGHIJKLMNOPQRSTUVWXYZ'......
  • Linux csplit命令图文教程:将一个大文件拆分为多个较小的文件/部分(附详细参数讲解及附
    Linuxcsplit命令csplit是一个Linux命令,可用于根据用户的要求将一个大文件拆分为多个较小的文件/部分。这些部分由上下文线确定。默认情况下,csplit将文件拆分为每个文件1000行,并为用户提供根据需要更改拆分行数的选项。输出分割文件的名称如“xx00”和“xx01”。csplit......
  • 2024 csp-j 小木棍
    #include<iostream>usingnamespacestd;intmain(){intn;cin>>n;intx[n+5];for(inti=1;i<=n;i++){cin>>x[i];}for(inti=1;i<=n;i++){if(x[i]==1){cout<<-1;......
  • 20222428 2021-2022-2 《网络与系统攻防技术》实验八实验报告
    1.实验内容实验内容及要求(1)Web前端HTML能正常安装、启停Apache。理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML。(2)Web前端javascipt理解JavaScript的基本功能,理解DOM。在(1)的基础上,编写JavaScript验证用户名、密码的规则。用户点击登陆按钮后回显“欢迎+......
  • 20222308 2021-2022-7 《网络与系统攻防技术》实验七实验报告
    1.实验内容本实践的目标理解常用网络欺诈背后的原理,以提高防范意识,并提出具体防范方法。具体实践有(1)简单应用SET工具建立冒名网站SET工具:是一个用于社会工程学攻击的工具集,它可以帮助攻击者模拟各种网络攻击场景,包括钓鱼网站攻击、口令截取攻击等。在实验中,通过使用SET工具,可......
  • 20222413 2021-2022-1 《网络与系统攻防技术》实验八实验报告
    1.实验内容1.1本周学习内容:本周学习内容为简单登录网页的前后端编写,以及如何对网页进行sql注入攻击、xss攻击、CSRF攻击。1.2实验内容(1)Web前端HTML能正常安装、启停Apache。理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML。(2)Web前端javascipt理解JavaScript......
  • 20222412 2021-2022-2 《网络与系统攻防技术》实验八实验报告
    202224122021-2022-2《网络与系统攻防技术》实验八实验报告1.实验内容(1)Web前端HTML能正常安装、启停Apache。理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML。(2)Web前端javascipt理解JavaScript的基本功能,理解DOM。在(1)的基础上,编写JavaScript验证用户名、密......
  • 20222409 2021-2022-2 《网络与系统攻防技术》实验八实验报告
    1.实验内容1.1本周学习内容复习前后端区别:了解了前端主要负责页面展示和交互,使用技术如HTML、CSS、JS;后端则负责数据处理和业务逻辑,使用Java、Python等语言。掌握SQL注入原理:学习了如何通过SQL注入绕过登录验证,例如利用'OR1=1--注入绕过登录。了解了普通注入与盲注入的区......
  • CSP2024游记
    2024-09-21今天开始了初赛。9:30开始J组,今年一点也不紧张,昨天还在睡觉时哼了哼歌,考试开始前自我疯狂播放Nevergonnagiveyouup(无语……)。考场没有钟(可恶),所以也不知道过了多久,我写完了。检查了5遍左右,开始摆烂。睡了一会儿,就做一些莫比乌斯反演的题。。。写了一整张......
  • CSP2024 游记
    前情提要:一切都是最好的安排Day-?初赛在本地。普及组有点太简单了,提高组随便做做,看缘分了。Day-??过了,国庆节打模拟赛,有\(30\)分也有\(320\)分。比较慌,看今年能不能一等。Day-1真正临考不知道干啥了,对着去年的一元二次方程发呆。会赢吗?Day0放学就坐动车去绵阳......