一、题目链接

  http://codeforces.com/gym/101505

二、题意

  这题其实主要就是题意,理解题意后,就是水题了。我想了下,主要原因就是这几点:

  1、题意太过英文化,很多句子不能和中文一对一翻译,导致理解出现偏差。

  2、题意没讲清楚。对于每个测试样例,第一个数据是不用考虑的。这点题目没说,要是说了,估计这题过的人更多。

  主要意思就是:给你N组数组,每组一个t和一个v,其实输入的t是递增的(严不严格无所谓)。再给M个询问,询问格式是:<大于或小于> <聚集函数> <时间>。比如:gt max 300,表示:对于第i(1<=i<=N)个数据,若它的时间是Ti,判断它的值Vi是否比[Ti - 300, Ti)这个区间内记录的数据的V的最大值还大。如果是,结果+1,然后输出有多少组这样的数据。对于每个询问都是如此。注意,第一组数据是不用考虑的。因为它前面没有数据。

三、思路

  理解题意后,思路就很简单了。对于每个询问,循环遍历所有数据(从第2个开始),假设询问时间为t, 第i组数据的时间为Ti,找到大于等于Ti-t的时间所在下标j(可以通过二分找到,因为数据位置不会变,所以时间和值可以分开存,而不需要结构体。如果用结构体,就要手写lower_bound函数了),计算区间[j, i - 1)内的最大值、最小值或平均值。一维区间求最值,可以用线段树。

四、源代码

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. typedef pair<int, int> PII;
  4. ;
  5. int n, m;
  6. int tim[maxn], val[maxn], sum[maxn];
  7. << , );
  8. PII data[maxn << ];
  9.  
  10. void update(int x, int v) {
  11. ;
  12. data[_t].first = data[_t].second = v;
  13. ; _t > ; _t >>= ) {
  14. data[_t].first = min(data[_t << ].first, data[_t << | ].first);
  15. data[_t].second = max(data[_t << ].second, data[_t << | ].second);
  16. }
  17. }
  18.  
  19. void init() {
  20. ;
  21. ;
  22. m = _t;
  23. ; i < m << ; ++i)data[i] = INF;
  24. ; i <= n; ++i)update(i, val[i]);
  25. }
  26.  
  27. PII query(, , int r = m) {
  28. if(y < l || x > r)return INF;
  29. else if(l >= x && r <= y)return data[root];
  30. else {
  31. ;
  32. PII left = query(x, y, root << , l, mid);
  33. PII right = query(x, y, root << | , mid + , r);
  34. return make_pair(min(left.first, right.first), max(left.second, right.second));
  35. }
  36. }
  37.  
  38. int Max(int idx, int before, int type) {
  39. , tim + n + , tim[idx] - before) - tim;
  40. ? << : ;
  41. PII ans = query(j, idx - );
  42. return ans.second;
  43. }
  44.  
  45. int Min(int idx, int before, int type) {
  46. , tim + n + , tim[idx] - before) - tim;
  47. ? << : ;
  48. PII ans = query(j, idx - );
  49. return ans.first;
  50. }
  51.  
  52. double Avg(int idx, int before) {
  53. , tim + n + , tim[idx] - before) - tim;
  54. ] - sum[j - ]) / (1.0 * (idx - j));
  55. }
  56.  
  57. int main() {
  58. ], op2[];
  59. while(~scanf("%d", &n)) {
  60. memset(sum, , sizeof(sum));
  61. memset(op1, '\0', sizeof(op1));
  62. memset(op2, '\0', sizeof(op2));
  63. ; i <= n; ++i)scanf("%d%d", &tim[i], &val[i]);
  64. ; i <= n; ++i)sum[i] = sum[i - ] + val[i];
  65. init();
  66. int q, before;
  67. scanf("%d", &q);
  68. while(q--) {
  69. scanf("%s%s%d", op1, op2, &before);
  70. ;
  71. ) {
  72. ) {
  73. ; i <= n; ++i)))++cnt;
  74. } ) {
  75. ; i <= n; ++i) if((double)val[i] > Avg(i, before))++cnt;
  76. } ) {
  77. ; i <= n; ++i)))++cnt;
  78. }
  79. } ) {
  80. ) {
  81. ; i <= n; ++i)))++cnt;
  82. } ) {
  83. ; i <= n; ++i)if((double)val[i] < Avg(i, before))++cnt;
  84. } ) {
  85. ; i <= n; ++i)))++cnt;
  86. }
  87. }
  88. printf("%d\n", cnt);
  89. }
  90. }
  91. }
  92.  
  93. /*
  94. 5
  95. 4 16
  96. 9 49
  97. 46 93
  98. 55 16
  99. 62 55
  100. 8
  101. gt max 29
  102. lt avg 15
  103. gt min 34
  104. gt max 4
  105. lt min 44
  106. lt max 29
  107. gt max 42
  108. lt avg 10
  109.  
  110. 10
  111. 60 30
  112. 120 28
  113. 180 35
  114. 240 34
  115. 300 40
  116. 360 31
  117. 420 28
  118. 480 2
  119. 540 42
  120. 600 30
  121. 2
  122. gt avg 7200
  123. lt min 300
  124.  
  125. 8
  126. 1 10
  127. 5 30
  128. 10 50
  129. 15 45
  130. 20 55
  131. 25 40
  132. 30 30
  133. 35 20
  134. 6
  135. gt max 10
  136. gt avg 10
  137. gt min 10
  138. lt max 10
  139. lt avg 10
  140. lt min 10
  141.  
  142. */

变量m是为设计线段树而定义的,因为n不会刚好是2的幂。

CFGym 101505I 题解的更多相关文章

  1. CFGym 101490J 题解

    一.题目链接 http://codeforces.com/gym/101490 二.题面 三.题意 给你n个点,代表学生所在位置,n个点,代表老师所在位置.每个学生分配一个老师.让你找出一个最小的学生 ...

  2. CFGym 101490E 题解

    一.题目链接 http://codeforces.com/gym/101490 二.题面 三.题意 给你一个图,n个点,m条边,一个x,从顶点1走到顶点n.假设从顶点1走到顶点n的最短路为d,x代表你 ...

  3. CFGym 101161I 题解

    一.题目链接 http://codeforces.com/gym/101161/problem/I 二.题意 给定一棵树,一个初始的省会城市,若干个询问,0表示修改省会城市,1表示查询去省会必须经过指 ...

  4. CFGym 100198G 题解

    一.题目链接 http://codeforces.com/gym/100198/problem/G 二.题意 看样例就能明白,写表达式解析器. 三 .思路 一看这题目,立马就会想到“后缀表达式”,考虑 ...

  5. CFGym 101194L 题解

    一.题目链接 http://codeforces.com/gym/101194/problem/L 二.题意 有4个队伍,要打6场比赛(刚好每两个队伍都能相互比一次),若A和B比赛有3种结果: A赢B ...

  6. CFGym 101194D 题解

    一.题目链接 http://codeforces.com/gym/101194/problem/D 二.题意 给定一个数字n和一个数字k,一个n个整数的序列,让你在里面找尽可能多的长度为k的符合“要求 ...

  7. CFGym 100211J 题解

    一.题目 二.题意 给定一个字母表(最多也就是英文小写字母的前10个字母),一个交换表,两个字符串,判断字符串A能否通过交换表的交换方式变成字符串B. 三.思路 1.一开始,比赛时,我半模拟半记忆化地 ...

  8. [CF-GYM]Abu Tahun Mod problem题解

    前言 这道题比较简单,但我还是想了好一会 题意简述 Abu Tahun很喜欢回文. 一个数组若是回文的,那么它从前往后读和从后往前读都是一样的,比如数组\(\left\{1\right\},\left ...

  9. 2016 华南师大ACM校赛 SCNUCPC 非官方题解

    我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...

随机推荐

  1. Tinkoff Challenge - Elimination Round B. Igor and his way to work(dfs+优化)

    http://codeforces.com/contest/793/problem/B 题意:一个地图,有起点和终点还有障碍点,求从起点出发到达终点,经过的路径上转弯次数是否能不超过2. 思路: 直接 ...

  2. a标签 在新页面打开

    <a href="https://www.baidu.com/" target="_blank">下载</a>

  3. JavaScript--语法3--数组

    JavaScript--语法3--数组 一.心得 二.代码 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "h ...

  4. bzoj1854: [Scoi2010]游戏 贪心

    lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1,10000]之间的数表示.当他使用某种装备时,他只能使用该装备的某一个属性.并且每种装备最多只能使 ...

  5. poj2411 轮廓线dp裸题

    题意:用12的骨牌覆盖nm的矩阵的方案数 题解:dp[i][j]表示枚举到了第i行,j状态的方案数,三种转移,向上的,要求不是第一行而且上面的没有覆盖过,向下的,要求不是第一列而且左边没有覆盖过,不放 ...

  6. [转]PowerDesigner 把Comment写到name中 和把name写到Comment中 pd7以后版本可用

    http://www.cnblogs.com/cxd4321/archive/2009/03/07/1405475.html 在使用PowerDesigner对数据库进行概念模型和物理模型设计时,一般 ...

  7. PHP和JAVA整合开发的三个方案(六)

    php作为前端开发,java负责后台开发,这样取长补短的方案很适合现在web开发.现在PHP和JAVA整合开发比较好的方案只有3个:1.SOAP2.php-java-bridge3.Quercus Q ...

  8. 【hive】数据仓库层次设计

    转载 https://www.jianshu.com/p/849db358ec61

  9. IIS7 部署 MVC3

    IIS7 部署 MVC3 (2013-02-28 11:06:39) 转载▼ 标签: iis7 mvc3 it 分类: ASP.NET 在IIS7下部署MVC已经简化了许多,基本按照一般的项目部署即可 ...

  10. 字典序全排列(java实现)

    import java.util.Arrays; /** *字典序全排列 *字符串的全排列 *比如单词"too" 它的全排列是"oot","oto&q ...