重庆师范大学第一届ACM选拔赛(公开赛)G-团日活动
一、G-团日活动
题目链接戳这里↓.
题目描述
华华和班里的同学共N人一起去校外进行团日活动。到了晚上回家的时候,遇到一处独木桥要过,为了安全起见,华华提议一次只让两名同学过独木桥,
已知队伍中n名女生过桥都比较快,单独过桥只需要1分钟。m名男生因为体重较重,过桥的时间比较慢,
每名男生单独沟过桥分别需要1,2,3,4……分钟的时间来过桥。
当两个人同时过桥时,他们的过桥时间为较慢的那一名同学所需要的时间。
问,所有同学都过完独木桥所需要的最短时间是多少。
输入描述:
多组输入,第一行输入数据组的数目T(T<=1000)
第二行输入团队总人数N,和男生的人数n
(N<=1e9,m<N,n<N,数据保证团队中至少有1名男生或者1名女生)
输出描述:
每一行输出所有人过桥所需要的最短总时间。
示例1
输入
4
10
5
20
16
31
15
41
20
输出
11
74
72
121
示例2
输入
1
1000000000
999999998
输出
249999999500000001
二、解题思路:
读完题后,根据蓝色字体的两句话可知道解题的大致思路:
2.1思路
男生m个人的各过桥时间是1~m依次递增的,且两个人过桥时间取长的那段,所以两人过桥时应优先选择两个过桥时间最长的男生。
女生过桥都是1分钟,所以也应两两一队过桥。
2.2考虑奇偶
此时再考虑各自人数奇偶之分,例如若男生人数是奇数,则必定剩下一个过桥时间最短的(1min),可以有两个思路:
①将1min男生移去女生队伍,当成男生-1&&女生+1
②将一个女生移入男生队伍配对,男生+1&&女生-1(推荐)
2.2.1奇偶情况举例说明
下面举四种奇偶情况作为说明:
tip:min_t表示最短时间,算式中蓝色为男生时间,橘色为女生时间。
女生人数n偶,男生人数m偶
m = 4 : :1 2 3 4
n= 2: 1 1
min_t = 4+2+ 2/2=7
(男生中两两配对,则应4、3一队,min_t+=4, 2、1一队,min_t+=2;
女生亦两两配对,直接用人数/2即可。)女生人数n奇,男生人数m奇
m = 5:1 2 3 4 5
n = 7 :1 1 1 1 1 1 1
min_t = 1+5+3+ +7/2=12
(男生:5、4一队,3、2一队,剩1,这时可假设将一个女生移入男生队列配对,一男一女过桥时间为1,男生时间算式就可为5+3+1;,
int除法向下取整,故移走一个女生后,女生时间仍为7/2=3)女生人数n偶,男生人数m奇
m = 5: 1 2 3 4 5
n =4 : 1 1 1 1
min_t = 1+5+3+ +4/2= 11
(男生情况跟第二种一样,剩一个1min男生,移入一个女生后男生时间为5+3+1;
此时女生人数变为奇数3,两两配对的话会剩一个女生,需要一个人单独走(题目并没有说这种情况),女生时间也扔可用n/2=2=1+1)
.女生人数n奇,男生人数m偶 ※
m = 4: 1 2 3 4
n = 5:1 1 1 1 1
min_t =4+2+ (5+1)/2 =9
(男生正好可配对完,时间为4+2;
女生为奇数,这时要注意,两两配对会剩一个,需(n+1)/2才可得到正确的时间,或者n/2向上取整也可。)
题目中的样例也可以用这种方法来自己试验一下。
2.2.4奇偶结论
男生人数
m=偶数时,时间求和为2+4+6+8+……+m
m=奇数时,时间求和为1+3+5+7+……+m
女生人数
只有当m为偶数,n为奇数时,求和才为(n+1)/2
其余情况皆为n/2
2.3解题公式总结
min_t是分两部来求的,一部分是男生过桥时间,一部分女生过桥时间,男生过桥时间是总和其实就是一个等差数列求和的结果.
等差数列求和公式为
男生人数m为偶:2+4+6+8+……+m,
a1=2,项数N(区分女生人数)为m/2,d为2。
Sn = m/2× 2 + (m/2)×(m/2-1)/2×2,
化简后Sn = (m/2)*(m/2+1)男生人数m为奇:1+3+5+7+……+m,
a1=1,项数N为(m+1)/2,d为2。
Sn = (m+1)/2+(m+1)/2×((m+1)/2-1)/2×2,
化简后Sn = pow(m+1,2)/4
AC代码如下:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main() {int T;cin >> T;ll N, n, m;while (T--) {cin >> N >> m;n = N-m;//女生人数ll sum = 0, sn = 0;if (m % 2 == 0)//男生人数为偶数sn = (m/2)*(m/2+1); //m/2*2+(m/2)*(m/2-1)/2*2,因a1=2else//男生人数为奇数sn = pow(m+1,2)/4; //(m+1)/2+(m+1)/2*((m+1)/2-1)/2*2sum = sum + sn + n/2;//男生时间+女生时间//m偶n奇情况女生人数要+1if (m%2==0 && n%2==1) {sum++;}cout << sum << endl;}
}
重庆师范大学第一届ACM选拔赛(公开赛)G-团日活动相关推荐
- 重庆师范大学第一届ACM选拔赛
下面的题解不会给出题目所以在开头放出比赛链接传送门 本场比赛大部分都是模板题,但是任有记录的必要性 重庆师范大学第一届ACM选拔赛 不一样的食物链 有趣的求和 统计患病人数 皮皮想拜师 爱玩游戏的To ...
- 北京信息科技大学第十三届程序设计竞赛暨ACM选拔赛(重现赛)题解
题目链接: 北京信息科技大学第十三届程序设计竞赛暨ACM选拔赛(重现赛)_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ大学ACM校赛新生赛是面向ACM/ICPC/CCP ...
- 北京信息科技大学第十三届程序设计竞赛暨ACM选拔赛题解
北京信息科技大学第十三届程序设计竞赛暨ACM选拔赛题解 A lzh的蹦床 B 所谓过河 C 旅行家问题1 D 旅行家问题2 E 小菲和Fib数列 F 好玩的音乐游戏 G ranko的手表 H 字母收集 ...
- 山大华特卧龙学校第一届ACM赛后总结
山大华特卧龙学校第一届ACM赛后总结_题目 题目B 题目背景 水之积也不厚,则其负大舟也无力.--<逍遥游> 题目描述 为了承载起给定的 个长方体木块,水的深度至少为多少. 输入输出格式 ...
- 海淀区第九届单片机竞赛获奖名单_第十二届程序设计竞赛暨ACM选拔赛获奖名单...
11月21日由北京信息科技大学ACM集训队主办,计算机学院承办,牟永敏老师指导的第十二届程序设计竞赛暨ACM选拔赛完美落幕.本次比赛的参赛队员来自北信科的各个学院的同学共同参与,共142人报名参与此次 ...
- 第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛 G 旋转矩阵 【模拟】
链接:https://www.nowcoder.com/acm/contest/90/G 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536 ...
- 产学交流 | 重庆师范大学计算机学院、湖北省十堰市竹溪管委会各位专家到访芝诺数据...
点击蓝字,关注我们 产 学 交 流 为更好拓展就业渠道,推进人才培养基地建设,7月6日下午,重庆师范大学计算机学院.湖北省十堰市竹溪管委会各位专家莅临我司开展交流座谈会,公司负责人甄少明.校企合作负责 ...
- 重庆计算机专业在职研究生,重庆师范大学在职研究生计算机专业教学方式
计算机专业一直是近些年的热门专业,计算机技术领域经过多年的发展和建设,已经形成了智能信息处理.计算机网络及工程.信息安全技术.等稳定的富有特色的研究方向,所以在就业前景方面计算机专业具有很大的优势.重 ...
- 重庆师范大学计算机技术排名,2017年重庆师范大学专业排名
2017年重庆师范大学专业排名 2015年重庆师范大学专业排名如下: 排名 名称 科类(录取批次) 平均分 平均分位次 最高分 控线 录取线差 1 数学与应用数学 理(2) 526 21851 557 ...
最新文章
- [论文摘录] Classification of SOA Contract Specification Languages(ICWS, 2008), 第二部分
- QT在windows平台安装使用MInGW编译
- 【学习笔记】月末操作-GR/IR重组
- C排序算法:(二)冒泡排序
- 苹果秋季新品将要发布,MacBook Pro都有哪些变化
- 宅在家里写数据库中函数应用
- 根据录入的计算公式计算_建筑行业公式大全(一)之“钢筋工程量计算”
- python和c混编_python与C、C++混编的四种方式(小结)
- netty源码解解析(4.0)-15 Channel NIO实现:写数据
- 华为又遭重击:谷歌暂停提供 Android 支持,新出售手机不能使用 Google 服务
- Vue:解决安装Vue Devtools报错Error: Cannot find module@vue-devtools/build-tools解决办法
- MFC中编辑框edit的用法
- 史上最强单片机科普,看完给跪了!
- LCM模组的简介与质量管理(连载四)
- 转:adb连接手机进行调试有两种方式
- matlab gui矩阵计算器,matlab-gui矩阵计算器.doc
- 桌面快捷方式小箭头去除与恢复方法
- 基于Android的高德地图的定位和运动轨迹记录的功能
- sql语句多表查询实例
- 如何系统掌握产品功能改进方案?