题目如下:

AC代码如下:

#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
#include<cmath>
#define ll long long
using namespace std;
char s1[30];
char s2[30];
int main()
{int T;scanf("%d", &T);while (T--){ll n,x,t;cin>>n>>x>>t;ll l=x-(2*n-2)*t;ll r=x-(2*n-1)*t; if(l<=0){cout<<4*n*t<<endl;}else if(l>0&&l<=t){cout<<4*n*t+l<<endl;}else if(l>0&&l>t){cout<<4*n*t+t<<endl;}else if(r-t>=0){cout<<4*n*t+t+r-t<<endl;}}
}

解析:

最优的办法是(前 2 n 次)每一次过桥先背一个人去对面休息,等到所有(2 n个)人都到了(相对于自己一开始的位置的)桥对面,然后,这时候自己应该在自己最开始的位置,而此时每个人的休息所剩时间应该是:
x x-2t x-4t … x-2*(n-1)t | x-t x-3t x-5t … x-(2n-1)t
(自己此时应该在左边,假设左边是起始位置) ( dis = x- 2 * ( n - 1 ) t )
这个时候应该判断是不是能立即背着所剩休息时间最少 ( dis ) 的人过桥
如果能立马走,那么对面所剩休息时间最少的人肯定也能立即走(因为桥对面的所剩休息时间最少的人比桥这面的人时间还要少( x - ( 2 n - 1 ) t < x - 2 * ( n - 1 ) t )),所以最后答案就是 2 * n * 2 * t
如果不能立马走,这时候应该判断,自己在桥这边等待的时间是不是 < 过桥的时间:
如果小于,那就等着桥这边的休息结束,然后在过桥,这时候桥对面肯定能立即走了,最后答案就是 2 * n * 2 * t + dis
如果大于,那就去桥对面,这时候桥对面的休息时间所剩最少的人时间应该是
x - 2nt(过桥花费 t )
同理判断能不能立即走,如果可以答案就是2 * n * 2 * t + t
如果不行,那么也不需要过桥了(因为这个人就是全场休息时间所剩最少的人,等他是最优的),直接等着他休息结束,最后答案就是 2 * n * 2 * t + t + x - 2 * n * t

特别声明:参考了A Golden Spirit (思维)-2020ccpc(威海)_Cosmic_Tree的博客-CSDN博客

Gym 102798A(思维) acm寒假集训日记21/12/31or22/1/1相关推荐

  1. CodeForces - 1485B(找规律+求和) acm寒假集训日记21/12/31or22/1/1

    题目如下: AC代码如下: #include<iostream> #include<algorithm> #include<cstring> #include< ...

  2. CodeForces 1506C(暴力求最长连续子串) acm寒假集训日记21/12/31or22/1/1

    题目如下: AC代码如下: #include<iostream> #include<algorithm> #include<cstring> #include< ...

  3. Dream City(01背包+小贪心)acm寒假集训日记21/12/30

    题目如下: AC代码如下: #include<iostream> #include<algorithm> #include<cstring> #include< ...

  4. 最少换乘(最短路+恶心的输入)acm寒假集训日记22/1/3 or 22/1/4

    题目如下: AC代码如下: #include<iostream> #include<cstring> #include<cstdio> using namespac ...

  5. 矩阵问题入门(矩阵乘法and矩阵快速幂)acm寒假集训日记22/1/15

    今天凌晨3点才睡,没想到通过看小说抑制玩游戏,反而看小说的时间更长. u1s1:那小说太刺激了,晚上看很有感觉,风吹草动我就会猛地看过去(类似茄子说柜子动了,哈哈),真TM(语气词)练胆量!!!..Q ...

  6. 扩展欧几里得exgcd算法 acm寒假集训日记22/1/12

    数学证明 ax + by = gcd(a,b) 令gcd(a,b) = d 得:ax + by = d ① 因为:gcd(a,b) = gcd(b,a%b) 所以:bx + a%b * y = d b ...

  7. 【初学线段树,看这篇文章准没错】线段树(单点修改and区间修改)acm寒假集训日记22/1/10

    线段树 线段树是算法竞赛中常用的用来维护区间信息的数据结构.是一名ACMer 需要掌握的一种基础.重要的数据结构线段树可以在O(logN)的时间复杂度内实现单点修改,区间修改,区间查询(区间求和,区间 ...

  8. 最小生成树(Kruskal算法+Prim算法)简单讲解+最小生成树例题 acm寒假集训日记22/1/8

    算法简讲部分: Kruskal算法: 基于贪心策略大致过程分为第三步:1. 我们先用结构体把每条边的端点和权值记录下来,然后对每条边按权值进行排序2. 因为 使图连通最少需要n-1 条边,所以我们依次 ...

  9. spfa(STL写法)简单讲解+最短路(spfa)例题 acm寒假集训日记22/1/7

    前言:SPFA(Shortest Path Faster Algorithm)算法是求单源最短路线的一种算法,它是Bellman-ford的队列优化,它是一种十分高效的最短路算法. spfa 其实可以 ...

最新文章

  1. JS动态改变文本中光标位置
  2. C++入门经典-例6.14-通过指针连接两个字符数组
  3. Genome Biology | 基于RNA-seq的孟德尔疾病变异分析
  4. Go基础系列:双层channel用法示例
  5. 顺天则昌,逆天则亡(2006-03-13 21:07:17)(新浪)
  6. makefile小技巧
  7. Asianux Server 3.0安装截图
  8. bzoj 2121 DP
  9. 关于Weex,你想了解的一切都在这里
  10. MS SQL Server 2000 按日期自动备份
  11. Apache MiNa 2 学习笔记
  12. CanvasRenderingContext2D.imageSmoothingEnabled
  13. 定义枚举类型时指定其使用的大小 (C++,C#)
  14. EasyUI-增删改操作
  15. Atitiit java通过Exchange协议同步note 记事本 目录 1.1.1. 使用EWS(Exchange Web Service)协议读取邮件、发送邮件 1 最新问题 1 热门问题 1
  16. 双网卡同时上内外网方法
  17. 静态VLAN及配置实例详解
  18. 【python】实现canny算子与LoG算子
  19. 一款网课学习辅助软件
  20. Deep Anomaly Detection with Deviation Networks 论文笔记

热门文章

  1. C语言,利用条件语句判断数的奇偶性。
  2. 【熊猫站群系统@苹果cmsv10/Maccmsv10 站群深度定制版 开发日志】 优雅且高效的友链模块,一键打造强大的蜘蛛池
  3. C#LeetCode刷题-并查集
  4. sphinx帮助我通过rst生成静态html
  5. 常用算法以及加密工具
  6. JavaScript ES2019的新增功能
  7. javascript_如何不再害怕JavaScript
  8. javascript指南_JavaScript还原方法指南
  9. C++ 学习笔记---零散的基础知识
  10. finalize到底是什么