一、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表示最短时间,算式中蓝色为男生时间,橘色为女生时间。

  1. 女生人数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即可。)

  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)

  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)
    .

  4. 女生人数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是分两部来求的,一部分是男生过桥时间,一部分女生过桥时间,男生过桥时间是总和其实就是一个等差数列求和的结果.
等差数列求和公式为

  1. 男生人数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)

  2. 男生人数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-团日活动相关推荐

  1. 重庆师范大学第一届ACM选拔赛

    下面的题解不会给出题目所以在开头放出比赛链接传送门 本场比赛大部分都是模板题,但是任有记录的必要性 重庆师范大学第一届ACM选拔赛 不一样的食物链 有趣的求和 统计患病人数 皮皮想拜师 爱玩游戏的To ...

  2. 北京信息科技大学第十三届程序设计竞赛暨ACM选拔赛(重现赛)题解

    题目链接: 北京信息科技大学第十三届程序设计竞赛暨ACM选拔赛(重现赛)_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ大学ACM校赛新生赛是面向ACM/ICPC/CCP ...

  3. 北京信息科技大学第十三届程序设计竞赛暨ACM选拔赛题解

    北京信息科技大学第十三届程序设计竞赛暨ACM选拔赛题解 A lzh的蹦床 B 所谓过河 C 旅行家问题1 D 旅行家问题2 E 小菲和Fib数列 F 好玩的音乐游戏 G ranko的手表 H 字母收集 ...

  4. 山大华特卧龙学校第一届ACM赛后总结

    山大华特卧龙学校第一届ACM赛后总结_题目 题目B 题目背景 水之积也不厚,则其负大舟也无力.--<逍遥游> 题目描述 为了承载起给定的 个长方体木块,水的深度至少为多少. 输入输出格式 ...

  5. 海淀区第九届单片机竞赛获奖名单_第十二届程序设计竞赛暨ACM选拔赛获奖名单...

    11月21日由北京信息科技大学ACM集训队主办,计算机学院承办,牟永敏老师指导的第十二届程序设计竞赛暨ACM选拔赛完美落幕.本次比赛的参赛队员来自北信科的各个学院的同学共同参与,共142人报名参与此次 ...

  6. 第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛 G 旋转矩阵 【模拟】

    链接:https://www.nowcoder.com/acm/contest/90/G 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536 ...

  7. 产学交流 | 重庆师范大学计算机学院、湖北省十堰市竹溪管委会各位专家到访芝诺数据...

    点击蓝字,关注我们 产 学 交 流 为更好拓展就业渠道,推进人才培养基地建设,7月6日下午,重庆师范大学计算机学院.湖北省十堰市竹溪管委会各位专家莅临我司开展交流座谈会,公司负责人甄少明.校企合作负责 ...

  8. 重庆计算机专业在职研究生,重庆师范大学在职研究生计算机专业教学方式

    计算机专业一直是近些年的热门专业,计算机技术领域经过多年的发展和建设,已经形成了智能信息处理.计算机网络及工程.信息安全技术.等稳定的富有特色的研究方向,所以在就业前景方面计算机专业具有很大的优势.重 ...

  9. 重庆师范大学计算机技术排名,2017年重庆师范大学专业排名

    2017年重庆师范大学专业排名 2015年重庆师范大学专业排名如下: 排名 名称 科类(录取批次) 平均分 平均分位次 最高分 控线 录取线差 1 数学与应用数学 理(2) 526 21851 557 ...

最新文章

  1. [论文摘录] Classification of SOA Contract Specification Languages(ICWS, 2008), 第二部分
  2. QT在windows平台安装使用MInGW编译
  3. 【学习笔记】月末操作-GR/IR重组
  4. C排序算法:(二)冒泡排序
  5. 苹果秋季新品将要发布,MacBook Pro都有哪些变化
  6. 宅在家里写数据库中函数应用
  7. 根据录入的计算公式计算_建筑行业公式大全(一)之“钢筋工程量计算”
  8. python和c混编_python与C、C++混编的四种方式(小结)
  9. netty源码解解析(4.0)-15 Channel NIO实现:写数据
  10. 华为又遭重击:谷歌暂停提供 Android 支持,新出售手机不能使用 Google 服务
  11. Vue:解决安装Vue Devtools报错Error: Cannot find module@vue-devtools/build-tools解决办法
  12. MFC中编辑框edit的用法
  13. 史上最强单片机科普,看完给跪了!
  14. LCM模组的简介与质量管理(连载四)
  15. 转:adb连接手机进行调试有两种方式
  16. matlab gui矩阵计算器,matlab-gui矩阵计算器.doc
  17. 桌面快捷方式小箭头去除与恢复方法
  18. 基于Android的高德地图的定位和运动轨迹记录的功能
  19. sql语句多表查询实例
  20. 如何系统掌握产品功能改进方案?

热门文章

  1. jQuery中的动画理论干货
  2. 浏览器兼容console对象的简要解决方案
  3. JAVA 学生信息管理系统
  4. Python_内置模块1
  5. web performance in action学习前言
  6. AngularJS学习(一)
  7. JS-内置对象内置构造函数事件-拖拽轮播图无缝滚动
  8. pytorch实现dcgan_PyTorch版本DCGAN实现的注解
  9. Shell 07 项目案例
  10. SpringBoot系列: CommandLineRunner接口的用处