CF1539A Contest Start[题解]
Contest Start
题目大意
有 \(n\) 个人报名参加一个比赛,从 \(0\) 时刻开始每隔 \(x\) 分钟有一个人开始比赛,每个人参赛时间相同,均为 \(t\) 。定义一个选手的不满意度为他结束比赛时已经开始但尚未结束比赛的人数,求所有选手不满意度的总和。
题外话
这场 \(CF\) 私以为 \(B\) 题才是最简单的一道题, \(A\) 题比 \(B\) 题要难一些,但其实也比较容易。
分析
我们可以先考虑分析一下样例(下展示样例 \(4\) 、 \(2\) 、 \(5\) ):
| 一号 | 二号 | 三号 | 四号 | |
|---|---|---|---|---|
| 开始时间 | 0 | 2 | 4 | 6 |
| 结束时间 | 5 | 7 | 9 | 11 |
| 不满意度 | 2 | 2 | 1 | 0 |
其实题目告诉我们每个选手的参赛时间相同且开始时间有着相同的间隔,应该不难想到肯定又一定的规律存在。
就例如这组样例,虽然比较小,但是我们也能注意到,一号和二号的不满意度没有变化,想象有更多的参赛选手,是否会有更多的选手不满意度为 \(2\) ?至于最后两个选手不满意度变化的原因,很显然其实是因为后面已经没有更多的选手了,所以会一次递减 \(1\) 。
于是很容易想到,其实答案就是前面一串相同的加上后面的等差数列,重点是如何求前面一串相同不满意度的个数。
这个其实比较容易想,就是 $\lfloor \frac{t}{x}\rfloor $ ,参赛的时间除以间隔,想一想其实就是在自己参赛的这段时间内有多少人开始了比赛。
又因为最后一个人的不满意度肯定为 \(0\) ,肯定能和前面形成一串长度未知的递减数列(如果不能,那其实就是所有人的不满意度肯定为 \(0\) 了,这种情况不影响我们的讨论)。
这个数列的长度是多少呢?他肯定会一直递增到一个人的参赛时间内最多有多少人开始比赛的数量,也及时我们的 $\lfloor \frac{t}{x}\rfloor $ ,最后我们只需要注意一个地方,就是可能人数不够,只需要在该长度和 \(n\) 之间取最小值就行了。
既然我们已经知道了这里的长度 \(l\) ,前面一连串相等值的长度就是 \(n-l\) ,加起来就完了。
CODE
#include <bits/stdc++.h>
#define int long long
using namespace std;
inline int read()
{
int s=0,w=1;
char ch=getchar();
while(ch<'0'||ch>'9') { if(ch=='-') w*=-1; ch=getchar(); }
while(ch>='0'&&ch<='9') s=s*10+ch-'0',ch=getchar();
return s*w;
}
int k,n,x,t;
signed main()
{
k=read();
while(k--){
n=read(),x=read(),t=read();
int temp=min(t/x,n-1);
int ans=(n-temp)*temp;
temp--;
ans+=(1+temp)*temp/2;
printf("%lld\n",ans);
}
return 0;
}
CF1539A Contest Start[题解]的更多相关文章
- AtCoder Beginner Contest 154 题解
人生第一场 AtCoder,纪念一下 话说年后的 AtCoder 比赛怎么这么少啊(大雾 AtCoder Beginner Contest 154 题解 A - Remaining Balls We ...
- AtCoder Beginner Contest 153 题解
目录 AtCoder Beginner Contest 153 题解 A - Serval vs Monster 题意 做法 程序 B - Common Raccoon vs Monster 题意 做 ...
- AtCoder Beginner Contest 177 题解
AtCoder Beginner Contest 177 题解 目录 AtCoder Beginner Contest 177 题解 A - Don't be late B - Substring C ...
- AtCoder Beginner Contest 184 题解
AtCoder Beginner Contest 184 题解 目录 AtCoder Beginner Contest 184 题解 A - Determinant B - Quizzes C - S ...
- M-SOLUTIONS Programming Contest 2020 题解
M-SOLUTIONS Programming Contest 2020 题解 目录 M-SOLUTIONS Programming Contest 2020 题解 A - Kyu in AtCode ...
- AtCoder Beginner Contest 173 题解
AtCoder Beginner Contest 173 题解 目录 AtCoder Beginner Contest 173 题解 A - Payment B - Judge Status Summ ...
- AtCoder Beginner Contest 172 题解
AtCoder Beginner Contest 172 题解 目录 AtCoder Beginner Contest 172 题解 A - Calc B - Minor Change C - Tsu ...
- AtCoder Beginner Contest 169 题解
AtCoder Beginner Contest 169 题解 这场比赛比较简单,证明我没有咕咕咕的时候到了! A - Multiplication 1 没什么好说的,直接读入两个数输出乘积就好了. ...
- AtCoder Beginner Contest 148 题解
目录 AtCoder Beginner Contest 148 题解 前言 A - Round One 题意 做法 程序 B - Strings with the Same Length 题意 做法 ...
随机推荐
- Mybatis3详解(十四)----Mybatis的分页
1.前言 在前面学习mybatis的时候,会经常对数据进行增删改查操作,使用最多的是对数据库进行查询操作,但是前面都是简单的案例,所以查询的数据量不是很大,自然查询时没有任何压力,但是如果在实际的项目 ...
- BeetleX之Vue ElementUI生成工具
BeetleX.WebFamily在新版本的功能中引入了一个全新的功能,通过这一功能可以大大节省UI的开发工作量.组件集成了一个图形化的UI编辑器,可以连接数据库对数据表或查询快速度生成编辑和数据查询 ...
- 【NX二次开发】镜像对象
使用uf5946获取镜像矩阵注意:uf5946镜像这个函数,只能用#define UF_plane_type=46这种类型的数据作为镜像面,不能用#define UF_datum_plane_type ...
- 【疑难杂症】高版本UG从老UI中获取汉字字符串后乱码的问题
结论:NXstring转换为char类型的时候导致了乱码 措施: 改前:string strA=Test001::test001StrName->ItemValue().GetText(); / ...
- 怎么回答面试官:你对Spring的理解?
最近看了点Spring的源码,正好来稍微扯一扯,帮一部分培训班的朋友撕开一道口子,透透气.我自己都是看的培训班视频,所以也算培训班出身吧.所以下文开口闭口"培训班",不要觉得是我在 ...
- NOIP模拟测试29「爬山·学数数·七十和十七」
爬山题解不想写了 学数数 离散化然后找到以每一个值为最大值的连续子段有多少个,然后开个桶维护 那么怎么找以每一个值为最大值的连续子段个数 方法1(我的极笨的方法) 考试时我的丑陋思路, 定义极左值为左 ...
- ORA-01157:cannot identify/lock data file 6 - see DBWR trace file ORA-01110:data file 6:'/u01/app/oracle/oradata/PRDO2/sysaux02.dbf'
- WEB安全新玩法 [3] 防护交易数据篡改
在任何涉及交易的系统中,客户与商家之间的交易数据具有核心作用,如购买商品的价格.数量.型号和优惠券等.在客户挑选商品的过程中,这些交易数据逐渐形成:待客户提交订单时,交易数据被商家接收,形成双方认可的 ...
- 我的新书《C++服务器开发精髓》终于出版啦
一.千呼万唤始出来 亲爱的各位读者,我的新书<C++ 服务器开发精髓>终于终于终于与大家见面了,图书如下: 图书的封面设计很精美,当然内容一定不负众望.因出版社老师要求提供一张照片放到封面 ...
- 39、mysql数据库(视图)
39.1.视图: 0.创建表及插入数据: 1.创建teacher表及插入数据: (1)创建表: CREATE TABLE teacher( tid int PRIMARY KEY auto_incre ...