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 题意 做法 ...
随机推荐
- IP子网如何划分?so easy!
IP地址与子网掩码 1. IP地址划分 1.1 IP地址 1.2 由两部分组成 1.3 IP地址的分类 1.4 IP地址的规划原则 2.子网掩码划分 2.1 32个二进制位 2.2IP地址和子网掩码作 ...
- typora的一些使用
1.介绍typora 支持markdown语法的一款写作app 真的足够简洁高效 2. typora和其他工具配合实现功能 如插入图片 截图 gif等等图库 smms图库的使用 需要使用PicGo和s ...
- [leetcode] 75. 分类颜色(常数空间且只扫描一次算法)
75. 分类颜色 我们直接按难度最高的要求做:你能想出一个仅使用常数空间的一趟扫描算法吗? 常数空间 只能扫描一趟.注意,是一趟,而不是O(n) 题中只会出现3个数字:0,1,2.换句话说,0肯定在最 ...
- Docker环境下运行python+selenium+chrome
Docker环境下运行python+selenium+chrome docker运行时占用的资源非常少,而且能将环境进行有效的隔离,可以快速的进行部署,因此可以将docker与selenium结合实现 ...
- Go语言流程控制03--goto跳转到任意标签位置
package main import ( "fmt" "time" ) func main() { STUDYHARD: fmt.Println(" ...
- kindeditor富文本框使用方法
这周我一共使用了两个文本框编辑器!我的上一篇文档讲的是wangeditor这个编辑器,现在就来讲讲kindeditor这个编辑器! 首先还是去它的官网去下载脚本! http://kindeditor. ...
- 使用ubuntu charmed kubernetes 部署一套生产环境的集群
官方文档: https://ubuntu.com/kubernetes/docs 搭建一个基本的集群 集群ip规划 hostname ip ubuntu-1 10.0.0.10 juju-contro ...
- 前端工具 | JS编译器 Brace 使用教程
前言 开发人员一般是在电脑上面安装了IDE完成日常的开发任务,因为项目业务需求,用户想要在线写JS脚本,纯粹的字符串,很"费用户".那就需要一个在线JS编译器,需要轻量级,好用,语 ...
- Spring Cloud07: Feign 声明式接口调用
一.什么是Feign Feign也是去实现负载均衡,但是它的使用要比Ribbon更加简化,它实际上是基于Ribbon进行了封装,让我们可以通过调用接口的方式实现负载均衡.Feign和Ribbon都是由 ...
- 「10.12」木板(数学)·打扫卫生(神仙DP)
A. 木板 一个很简单的数学题,简单推一下就好,路丽姐姐教你学数学. 将式子化出我们发现只需求出$i\times i/n$的个数 那么我们将$n$质因数分解,可知因子个数 为了整除$n$,令$i==\ ...