题目链接

Hint: ICPC 2017 Japan Tsukuba

题意:

  • 有n个同学排成一队,要去体检1,2,3,4,……等等几个体检项目,同学的编号也是1,2,3,…… n
  • 要求:必须要个遵守同学的编号进行项目体检。允许多个项目同时进行。
  • 问当时间到达t的时候,各个同学都在体检或等待体检那个体检项目,输出这些体检项目的编号。

做法:

  • 这个题,要动脑筋稍微想一下……而我的脑筋却想成了模拟操作系统的先来先服务算法_(:з」∠)_
  • 当轮到第i的同学的时候,他能不能进行取决的前面是否有在进行体检的人。
  • 很明显能够发现就是,每个人体检第一个项目的时候(除了第一个人),都需要等待前面的人体检完第一个项目、
  • 所以找这个状态!
  • sum = (h1+h2+h3+……hi)  表示当i个人已经体检完第一个项目后已经过了的时间,剩下的时间就是t - sum
  • 那么剩下的时间由谁来决定呢?
  • 应该由当前体检时间最长的人来决定。当前时间最长的人可以和第i个人合并,因为最长的人一定会囊括这个人。
  • 所以ans = (t-sum)/max(h)+2 。为什么加2呢,其中一个1,是因为正在进行或等待,一定是区间的右端点,即[1,2] 一定是 2
  • 另一个1是前面已经完成了第一个项目。

参考:https://blog.csdn.net/NPU_SXY/article/details/79837303

​​​​​​​AC代码:

#include<bits/stdc++.h>
#define IO ios_base::sync_with_stdio(0),cin.tie(0),cout.tie(0)
#define rep(i,s,t) for(int i = (int)(s); i <= (int)(t); i++)
#define rev(i,t,s) for(int i = (int)(t); i >= (int)(s); i--)
#define pb(x) push_back(x)
#define all(x) x.begin(),x.end()
#define sz(x) (int)(x).size()
using namespace std;
typedef long long ll;
const int mod = 1e9+7;
const double PI = 4*atan(1.0);
const int maxm = 2e5+5;
const int maxn = 1e4+5;
const int INF = 0x3f3f3f3f;
int a[maxn];
inline int read()
{char x;while((x = getchar())<'0' || x>'9');int u = x-'0';while((x = getchar())>='0' && x<='9') u = (u<<3)+(u<<1)+x-'0';return u;
}
int main()
{#ifdef LOCAL_FILEfreopen("in.txt","r",stdin);#endif // LOCAL_FILE;int n,t;n = read(); t =read();for(int i=1;i<=n;i++) a[i] = read();ll ans = 0;int mx = -1;ll res;for(int i=1;i<=n;i++){mx = max(mx,a[i]);ans+=a[i];if(t>=ans) res = (t-ans)/mx+2;else res = 1;printf("%lld\n",res);}return 0;
}

[UPC](8840)Medical Checkup ---- 思维相关推荐

  1. 8840: Medical Checkup

    8840: Medical Checkup http://exam.upc.edu.cn/problem.php?id=8840 时间限制: 2 Sec  内存限制: 128 MB 提交: 184   ...

  2. 【Asia-Tsukuba 2017 】problem C - Medical Checkup

    题目链接:http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=1380 题目: Students of the university ha ...

  3. Medical Checkup ---ACM

    思路 结论题: 先不考虑题目给的t是多少. 对于第i个人 (1)把第一个项目做完所需要的时间为sum(h1+h2+-+ hi ); (2)把第j ( j > 1) 个项目做完所需要的时间均为ma ...

  4. 【upc】山路 (ghat) | 思维、最短路

    问题 H: 山路 (ghat) 时间限制: 1 Sec  内存限制: 128 MB 提交 状态 题目描述 会和神奈子一起改变地形,开凿地下洞穴等.虽说是一起,不过看起来改变土地是诹访子的工作.与其说她 ...

  5. codeforces 101986 C Medical Checkup

    http://codeforces.com/gym/101986/problem/C 题目大意:体面太长懒得放,大概说一下题意.有 n n n个人排队依次进行体检,第 i i i个人进行一次体检所花费 ...

  6. C - Medical Checkup Aizu - 1380

    题目https://vjudge.net/problem/Aizu-1380 想的太复杂了,真的,写都不好写,写完了也写wa了: 把我心态都搞崩了. 思路: 如果画一个区间图,仔细分析的话,就会发现, ...

  7. Medical Checkup Gym - 101986C

    https://cn.vjudge.net/problem/Gym-101986C 思路:等多久取决于要等最久的: 9  7   2   10   12 ----------------------- ...

  8. 计组之中央处理器:5、微程序控制器(组成、原理、概念对比)

    5.微程序控制器 思维导图 微程序控制器的设计思路 微程序控制器的基本结构 微程序控制器的工作原理 概念对比 程序与微程序 指令与微指令 主存储器与控制器存储器 IR和uIR(MDR和CMDR) PC ...

  9. 刘彬20000词汇03

    掌握词根-van,-ven,-vent的含义 掌握前缀anc-,ant-的功能 词根"-van,-ven,-vent" =come.go,全部都表示"来,走来" ...

最新文章

  1. web标准,我们去向何方?一些想法...
  2. gitlab的安装和使用
  3. java和C操作数组的一个小区别
  4. 实例对象的属性和原型对象中的属性重名问题 神奇的原型链 继承 继承案例
  5. python 时间日期处理
  6. 重学TCP协议(4) 三次握手
  7. Java StringBuilder codePointBefore()方法与示例
  8. Nhibernate代码自动生成工具[转]
  9. 机器学习(五)PCA数据降维
  10. @程序员,物联网软件开发不得不克服的七大挑战
  11. 简单的php商城,简单的php商城
  12. 易筋SpringBoot 2.1 | 第三十篇:SpringBoot Reactor响应式编程介绍
  13. 番茄助手在VS2017中的设置
  14. RFID电力设备智能巡检管理解决方案
  15. GPS设备获取的坐标转换成百度或者高德坐标
  16. 数学原理-高等数学复习笔记 ——1.2 泰勒公式 罗尔中值定理与拉格朗日中值定理(附加多个实战题目)
  17. Oracle——武汉空间数据库系统设计
  18. 第一次面试----华为实习生招聘
  19. 2017年最火的19个行业,你做哪行!
  20. 安全多方计算之BGW算法

热门文章

  1. Fiddler工具inspectors
  2. 吸引用户要素丨线上会议直播间如何布置?
  3. python 读取excel太慢_使用xlrd读取django批量excel文件太慢
  4. envoy源码分析(二):处理客户端请求
  5. 基于 Zotfile 的 Zotero 同步到 OneDrive ——利用 iPad 高效笔记阅读材料
  6. linuxsvn服务器导入项目,linux svn 导入项目
  7. 线性回归c语言简易代码
  8. 字号、pt、px、em换算对照表
  9. 关闭aslr oracle,ASLR的关闭方法
  10. java schema校验_Json Schema 校验json,java代码示例