这题直接模拟。

可是我挂在了最后两个点上QAQ。唯一注意的是注意精度啊。。。用来double后边转成整数就忘记用longlong。。。sad

  1. #include <cstdio>
  2. #include <cstring>
  3. #include <cmath>
  4. #include <string>
  5. #include <iostream>
  6. #include <algorithm>
  7. #include <queue>
  8. #include <set>
  9. #include <map>
  10. using namespace std;
  11. typedef long long ll;
  12. #define pii pair<int, int>
  13. #define mkpii make_pair<int, int>
  14. #define pdi pair<double, int>
  15. #define mkpdi make_pair<double, int>
  16. #define pli pair<ll, int>
  17. #define mkpli make_pair<ll, int>
  18. #define rep(i, n) for(int i=0; i<(n); ++i)
  19. #define for1(i,a,n) for(int i=(a);i<=(n);++i)
  20. #define for2(i,a,n) for(int i=(a);i<(n);++i)
  21. #define for3(i,a,n) for(int i=(a);i>=(n);--i)
  22. #define for4(i,a,n) for(int i=(a);i>(n);--i)
  23. #define CC(i,a) memset(i,a,sizeof(i))
  24. #define read(a) a=getint()
  25. #define print(a) printf("%d", a)
  26. #define dbg(x) cout << (#x) << " = " << (x) << endl
  27. #define error(x) (!(x)?puts("error"):0)
  28. #define printarr2(a, b, c) for1(_, 1, b) { for1(__, 1, c) cout << a[_][__]; cout << endl; }
  29. #define printarr1(a, b) for1(_, 1, b) cout << a[_] << '\t'; cout << endl
  30. inline const int getint() { int r=0, k=1; char c=getchar(); for(; c<'0'||c>'9'; c=getchar()) if(c=='-') k=-1; for(; c>='0'&&c<='9'; c=getchar()) r=r*10+c-'0'; return k*r; }
  31. inline const int max(const int &a, const int &b) { return a>b?a:b; }
  32. inline const int min(const int &a, const int &b) { return a<b?a:b; }
  33.  
  34. const int N=200005;
  35. int a[N], b[N], n, m, bn, an;
  36. const double eps=1e-5;
  37. char s[10];
  38. int main() {
  39. read(n); read(m);
  40. for1(i, 1, n) {
  41. scanf("%s", s);
  42. int t=getint();
  43. if(s[0]=='T') b[++bn]=t;
  44. else { if(t<m) a[++an]=t; }
  45. }
  46. sort(b+1, b+1+bn);
  47. sort(a+1, a+1+an);
  48. int i=1, j=1;
  49. double pos=0, ans=0;
  50. while(i<=an && j<=bn) {
  51. double sp=(1.0/(double)(i+j-1));
  52. double at=((double)a[i]-pos)*(i+j-1)+ans;
  53. if(at<(double)(b[j])) {
  54. pos=a[i++];
  55. ans=at;
  56. }
  57. else {
  58. pos+=sp*((double)b[j]-ans);
  59. if(pos+eps>m) break;
  60. ans=(double)b[j++];
  61. }
  62. }
  63. while(i<=an && (pos+eps)<=m) { ans+=((double)a[i]-pos)*(double)(i+j-1); pos=a[i++]; }
  64. while(j<=bn && (pos+eps)<=m) { pos+=(1.0/(double)(i+j-1))*((double)b[j]-ans); ans=(double)b[j++]; }
  65. if(pos+eps<=m) ans+=(double)(m-pos)*(double)(i+j-1);
  66. printf("%lld\n", (ll)(ans+eps));
  67. return 0;
  68. }

  


背景

附中机房谁最虚?高二一班***!感觉很顺,是吧?

题目描述

今天,丧尸czy开着挖掘机去上学(……)。但是他发现他的mz满天下,所以一路上他碰到了好多他的mz。一开始他以1km/min的速度(=60km/h……)开着挖掘机前进。他发现他只会在恰好到达某一时刻或者到达某个距离遇到mz。每次遇到mz,czy都会毫不犹豫的把她们顺路捎走(^_^)。但是他实在是太虚了,以至于当有i个mz时他的速度下降到1/(i+1)。具体说,一开始czy以1km/min速度前进,有1个mz的时候速度变为1/2 km/min,有2个时变为1/3 km/min……以此类推。现在问题来了,给出每个mz在何时出现,请你算出czy到学校要多久。

格式

输入第一行2个数n,m,分别表示mz数和czy与学校的距离(km)

接下来2到n+1行由字符串与数字构成

Dist x表示在距离达到x km时出现一个mz

Time x表示在时间达到x min时出现一个mz

输出一个整数,表示到达学校的时间。如果不能整除,直接输出整数部分即可。

样例输入

2 20

Time 3

Dist 10

样例输出

47

数据范围

对于30%数据,n,m<=50

对于50%数据,n,m<=2000

对于100%数据,n,m<=200000,x<=10^9,保证输入的数字都是整数

【noip模拟题】挖掘机(模拟题+精度)的更多相关文章

  1. noip模拟23[联·赛·题]

    \(noip模拟23\;solutions\) 怎么说呢??这个考试考得是非常的惨烈,一共拿了70分,为啥呢 因为我第一题和第三题爆零了,然后第二题拿到了70分,还是贪心的分数 第一题和第二题我调了好 ...

  2. poj 1005:I Think I Need a Houseboat(水题,模拟)

    I Think I Need a Houseboat Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 85149   Acce ...

  3. Problem E: 穷游中国在统题 优先队列 + 模拟

    http://www.gdutcode.sinaapp.com/problem.php?cid=1049&pid=4 Problem E: 穷游中国在统题 Description Travel ...

  4. 2018.08.22 NOIP模拟 string(模拟)

    string [描述] 给定两个字符串 s,t,其中 s 只包含小写字母以及*,t 只包含小写字母. 你可以进行任意多次操作,每次选择 s 中的一个*,将它修改为任意多个(可以是 0 个)它的前一个字 ...

  5. 5820. 【NOIP提高A组模拟2018.8.16】 非法输入(模拟,字符串)

    5820. [NOIP提高A组模拟2018.8.16] 非法输入 (File IO): input:aplusb.in output:aplusb.out Time Limits: 1000 ms   ...

  6. JZOJ 5812. 【NOIP提高A组模拟2018.8.14】 区间

    5812. [NOIP提高A组模拟2018.8.14] 区间 (File IO): input:range.in output:range.out Time Limits: 1000 ms  Memo ...

  7. 纪中10日T1 2300. 【noip普及组第一题】模板题

    2300. [noip普及组第一题]模板题 (File IO): input:template.in output:template.out 时间限制: 1000 ms  空间限制: 262144 K ...

  8. JZOJ 5818. 【NOIP提高A组模拟2018.8.15】 做运动

    5818. [NOIP提高A组模拟2018.8.15] 做运动 (File IO): input:running.in output:running.out Time Limits: 2000 ms  ...

  9. 洛谷P1067 多项式输出 NOIP 2009 普及组 第一题

    洛谷P1067 多项式输出 NOIP 2009 普及组 第一题 题目描述 一元n次多项式可用如下的表达式表示: 输入输出格式 输入格式 输入共有 2 行 第一行 1 个整数,n,表示一元多项式的次数. ...

  10. CSP-J2019 NOIP普及组初赛真题(选择题部分)

    NOIP初赛考试提纲 时间:10月的第2/3个星期六下午14:30~16:30 分数及形式:满分100分,形式为笔试(今年可能上机) 1.单项选择题,共15题,每题2分,共30分 2.阅读程序题,共3 ...

随机推荐

  1. Hadoop-2.2.0中文文档—— 从Hadoop 1.x 迁移至 Hadoop 2.x

    简单介绍 本文档对从 Apache Hadoop 1.x 迁移他们的Apache Hadoop MapReduce 应用到 Apache Hadoop 2.x 的用户提供了一些信息. 在 Apache ...

  2. OE context 传参数

    来自:http://shine-it.net/index.php/topic,16360.0.html 有个需求想many2one字段关联显示的value在各个模块显示不同的值. 如果直接该rel_n ...

  3. SQLSERVER中的 CEILING函数和 FLOOR函数

    SQLSERVER中的 CEILING函数和 FLOOR函数 --SQLSERVER中的 CEILING函数和 FLOOR函数 --ceiling函数返回大于或等于所给数字表达式的最小整数. --fl ...

  4. WebApi2 知识点总结

    1.建议使用异步接口async Task<> public async Task<IHttpActionResult> Get() 如果返回的是IEnumerable请使用: ...

  5. Sublime Text 包管理工具及扩展大全

    Sublime Text 是程序员们公认的编码神奇,拥有漂亮的用户界面和强大的功能,例如代码缩略图,多重选择,快捷命令等.还可自定义键绑定,菜单和工具栏.Sublime Text 的主要功能包括:拼写 ...

  6. 为什么我没有拔出钥匙 ——开锁引发的程序bug解决方案的思考

    http://blog.csdn.net/wojiushiwo987/article/details/8851204为什么我没有拔出钥匙                             ——开 ...

  7. Android:EditText限制文字输入

    Android的编辑框控件EditText在平常编程时会经常用到,有时候会对编辑框增加某些限制,如限制只能输入数字,最大输入的文字个数,不能输入 一些非法字符等,这些需求有些可以使用android控件 ...

  8. springboot 整合 rabbitmq

    http://blog.720ui.com/2017/springboot_06_mq_rabbitmq/

  9. Atitit. 有限状态机 fsm 状态模式

    Atitit. 有限状态机 fsm 状态模式 1. 有限状态机 1 2. "状态表"和"状态轮换表" 1 3. 有限状态机概念(状态(State)事件(Even ...

  10. hdu 2987最大权闭合图模板类型题

    /* 最大权闭合图模板类型的题,考验对知识概念的理解. 题意:如今要辞退一部分员工.辞退每个员工能够的到一部分利益(能够是负的),而且辞退员工,必须辞退他的下属.求最大利益和辞退的最小人数. 最大权闭 ...