题目链接

http://codeforces.com/gym/101505/attachments

题目大意

按时间顺序给你n个点, 每个点有一个时间t, 和值v。
我们要把所有点和规定时间内所有点进行比较,如果符合则ans++

  • 规定时间:题目有给定时间间隔tl, 规定时间就是当前去和其他点比较的点(简记为P)的时间-tl, 在此时间间隔内的点都加入比较列表
  • 比较方法:如果操作是max, 那么我们要把比较列表中的最大值去和P的值进行比较,min,avg则是最小值和平均值
    gt则P的值要大于列表中从以上操作得到的值,lt则是小于

思路

用单调队列去维护区间最值

代码

#include<bits/stdc++.h>
using namespace std;struct P
{int t, v;
}p[100005];
char c1[5], c2[5];
deque<P>dq;int main()
{int n;while(~scanf("%d", &n)){for(int i=0; i<n; ++i)scanf("%d %d", &p[i].t, &p[i].v);int c;scanf("%d", &c);for(int i=0; i<c; ++i){while(!dq.empty()) dq.pop_back();int tl, st, top = n-1, now = n-2, ans = 0;scanf("%s %s %d", c1, c2, &tl);if(c2[1] == 'a') {while(top != 0){while(now >= 0 && p[now].t >= p[top].t - tl){while(!dq.empty() && dq.back().v < p[now].v) dq.pop_back();dq.push_back(p[now--]);}if(!dq.empty() && c1[0] == 'g' && p[top].v > dq.front().v) ++ans;else if(!dq.empty() && c1[0] == 'l' && p[top].v < dq.front().v) ++ans;if(dq.front().t == p[top-1].t) dq.pop_front();--top;if(now == top) --now;}}else if(c2[1] == 'i'){while(top != 0){while(now >= 0 && p[now].t >= p[top].t - tl){while(!dq.empty() && dq.back().v > p[now].v) dq.pop_back();dq.push_back(p[now--]);}if(!dq.empty() && c1[0] == 'g' && p[top].v > dq.front().v) ++ans;else if(!dq.empty() && c1[0] == 'l' && p[top].v < dq.front().v) ++ans;if(dq.front().t == p[top-1].t) dq.pop_front();--top;if(now == top) --now;}}else if(c2[1] == 'v'){long long av = 0, al = 0;while(top != 0){while(now >= 0 && p[now].t >= p[top].t - tl){++al;av += p[now--].v;}if(al && c1[0] == 'g' && (long long)p[top].v*(1ll)*al > av) ++ans;else if(al && c1[0] == 'l' && (long long)p[top].v*(1ll)*al < av) ++ans;if(al){av -= p[--top].v;--al;if(now == top) --now;}else{--top;--now;}}}printf("%d\n", ans);}}return 0;
}

总结

队列中可能会没有元素,这时候没有答案
这也是单调队列常见bug

CTU Open Contest 2016 Suspicious Samples(单调队列)相关推荐

  1. hdu 3706 Second My Problem First 单调队列

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3706 Second My Problem First Time Limit: 12000/4000 M ...

  2. hdu 3401(单调队列优化dp)

    注意:这题题意是有操作的天数相隔要大于w 然后列出状态转移方程就可以发现,可以用优点队列优化啦. 构造状态dp[i][j]表示第i 天拥有 j只股票的时候,赚了多少钱 状态转移有: 1.从前一天不买不 ...

  3. 牛客练习赛79E-小G的数学难题【dp,单调队列】

    正题 题目链接:https://ac.nowcoder.com/acm/contest/11169/E 题目大意 给出nnn个三元组(ai,bi,ci)(a_i,b_i,c_i)(ai​,bi​,ci ...

  4. 【2019牛客暑期多校训练营(第三场)- F】Planting Trees(单调队列,尺取)

    题干: 链接:https://ac.nowcoder.com/acm/contest/883/F 来源:牛客网 The semester is finally over and the summer ...

  5. 【BZOJ1758】重建计划,点分治+单调队列

    Time:2016.08.21 Author:xiaoyimi 转载注明出处谢谢 传送门 思路: UPD 2017.1.18 之前的思路删掉了,因为写的太烂,纯属放屁 刚刚知道新加了一组数据,所以原先 ...

  6. 【BZOJ3831】Little Bird,单调队列优化DP

    Time:2016.08.05 Author:xiaoyimi 转载注明出处谢谢 传送门(权限题) 思路: 被Yveh莫名其妙拉过去做水题权限题 有一排n棵树,第i棵树的高度是Di. MHY要从第一棵 ...

  7. HDU 6319(单调队列)

    传送门 题面: Problem A. Ascending Rating Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 524288/ ...

  8. Codeforces Round #466 (Div. 2): E. Cashback(单调队列+DP)

    题目链接:http://codeforces.com/contest/940/problem/E 题意:给你一个长为n的序列和一个数字c,你要将这个序列切成若干段,对于每一段,这段中最小的[n/c]个 ...

  9. CF #669 (Div. 2)D. Discrete Centrifugal Jumps(线段树/单调队列优化dp)

    https://codeforces.com/contest/1407/problem/D 题意:给定n个高度,当i<ji<ji<j且满足以下条件之一时,可以从iii跳到jjj: 问 ...

最新文章

  1. 2020秋季-人工神经网络课程报告
  2. SD-WAN和MPLS有什么用途?
  3. php 如何设计索引_Mysql学习浅谈mysql的索引设计原则以及常见索引的区别
  4. 阿里巴巴Java开发手册终极版
  5. Linux 命令之 userconf -- 设置用户账号
  6. SQL SERVER2008 存储过程、表、视图、函数的权限
  7. 常见的php 字符串函数,php 常用字符串函数总结
  8. 《敏捷可执行需求说明 Scrum提炼及实现技术》—— 3.5 小结
  9. VS2012安装部署教程
  10. 大疆无人机飞控系统的原理、组成及各传感器的作用
  11. 【matplotlib】plot()kind参数表
  12. 大学计算机专业课教师听课评语,教师听课评语
  13. Prisma(一)——基础
  14. 《富兰克林自传》读后感:从这个接地气的伟人身上我们可以学到什么?
  15. Vue过滤器filter和filters的使用详解
  16. redux 常见问题
  17. Android——SVG图片转成安卓能用的vector矢量图
  18. 微卡认证系统使用手册
  19. 第十五周翻译-《Pro SQL Server Internals, 2nd edition》
  20. 编程课python和c+对中高考_编程要进入高考了。

热门文章

  1. 简述C#中IO的应用
  2. linux程序注释生成器,Doxygen—程序文档生成工具
  3. 移动App下载量SEO优化
  4. 小程序使用canvas绘画、签名。wx.canvasToTempFilePath安卓机生成图片背景色为黑色
  5. hiho 大礼堂地毯(strstr 查找函数)
  6. 手机上安装ubuntu21.04
  7. Proteus报错:External model DLL “ADC083X.DLL“ not found. GLE=0x000036B1
  8. 基于内容的图片检索CBIR简介
  9. python opencv写视频——cv2.VideoWriter()
  10. 一键备份脚本backup.sh