Problem I. Wiki with Special Poker Cards
Input file: standard input Time limit: 1 second
Output file: standard output Memory limit: 256 megabytes
"耶,我赢了! "教室里传来一阵阵快乐的笑声。这是在干什么呢?原来他们在举行"扑克牌游戏"呢。而
作为本次游戏的组织者, Wiki也同时制定了游戏的规则,规则如下:
游戏现场一共有n张扑克牌,但是有别于传统的扑克牌,本次游戏所采用的扑克牌,其牌面大小都在整数
区间[1; 106]之内。把这n张扑克牌按照从左往右的顺序平放在桌子上,牌面大小依次为a1; a2; :::; an。
现在请游戏参与者从这n张扑克牌中挑出连续的m张扑克,满足这m张扑克中牌面最大的那张ai与最小的
那张aj(1 <= i; j <= n)的差值小于等于r,且这m张扑克的牌面加起来的和大于等于s。
游戏期间,同学们依次上场,每人游戏结束以后, Wiki会记录每位同学拿到的牌数m,且每位游戏参与
者拿到的这m张牌必须符合上述游戏规则,不符合规则则记录为0!
为了保证游戏的公平性,每人游戏结束以后, Wiki会把这n张牌重新摆放到初始位置,保证每位参与游
戏的同学都能在相同的条件下进行游戏。最后,谁拿到的牌数最多(也就是m),谁就赢得游戏胜利。
Input
第一行输入三个正整数n; r; s(1 <= n <= 105; 0 <= r; s <= 106)
接下来输入n个正整数ai(1 <= i <= n),两数之间用空格隔开,表示n张牌牌面的大小(0 <= ai <= 106)
Output
在满足游戏规则的前提下,输出m的最大值
Samples

standard input standard output
5 0 5
1 1 1 1 1
5
5 3 10
1 2 3 4 5
4

思路:

利用两个单调队列,一个维护以i为终止节点的单调不减队列记录区间最小值,另一个维护以i为终止节点的单调不增队列记录区间最大值

用一个指针记录满足最大值最小值的最小下标,如果该区间满足前缀和要求,则用该区间去更新答案,否则不更新

 #include <iostream>
#include <cstring>
#include <algorithm>
#include <deque> using namespace std ; const int N = ;
deque<int> miv,mav ; int a[N],sum[N] ;
int n,r,s ; int main(){
cin >> n >> r >> s ; for(int i=;i<=n;i++){
cin >> a[i] ;
sum[i] = sum[i-] + a[i] ;
} int last = , ans = ;
for(int i=;i<=n;i++){
while(!mav.empty() && a[mav.back()] < a[i]) mav.pop_back() ;
while(!miv.empty() && a[miv.back()] > a[i]) miv.pop_back() ;
mav.push_back(i) ;
miv.push_back(i) ;
while(!miv.empty() && !mav.empty() && a[mav.front()] - a[miv.front()] > r){
if(mav.front()<miv.front()){
last = mav.front() ;
mav.pop_front() ;
}else if(mav.front()>miv.front()){
last = miv.front() ;
miv.pop_front() ;
}else{
last = mav.front() ;
mav.pop_back() ;
miv.pop_back() ;
}
}
if(!mav.empty() && !miv.empty() && sum[i]-sum[last]>=s){
ans = max(ans,i-last) ;
}
}
cout << ans << endl ; return ;
}

...

Problem I. Wiki with Special Poker Cards的更多相关文章

  1. Problem F. Wiki with String

    Problem F. Wiki with StringInput file: standard input Time limit: 1 secondOutput file: standard outp ...

  2. uva131 The Psychic Poker Player

    The Psychic Poker Player Time Limit: 3000MS     64bit IO Format: %lld & %llu Description In 5-ca ...

  3. UVa12298 Super Poker II(母函数 + FFT)

    题目 Source http://acm.hust.edu.cn/vjudge/problem/23590 Description I have a set of super poker cards, ...

  4. Subset sum problem

    https://en.wikipedia.org/wiki/Subset_sum_problem In computer science, the subset sum problem is an i ...

  5. bzoj2487: Super Poker II

    Description I have a set of super poker cards, consisting of an infinite number of cards. For each p ...

  6. Super Poker II UVA - 12298 FFT_生成函数

    Code: #include<bits/stdc++.h> #define maxn 1000000 #define ll long long #define double long do ...

  7. Codeforces Gym 100418K Cards 暴力打表

    CardsTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/view.action? ...

  8. Problem C

    Problem Description Here is a famous story in Chinese history. "That was about 2300 years ago. ...

  9. Codeforces Gym 100418K Cards 组合数学

    CardsTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/view.action? ...

随机推荐

  1. C语言环境搭建

    UNIX/Linux 上的安装 如果您使用的是 Linux 或 UNIX,请在命令行使用下面的命令来检查您的系统上是否安装了 GCC: $ gcc -v 如果您的计算机上已经安装了 GNU 编译器,则 ...

  2. Harbor 开机自启遇到的问题

    Harbor 是一个企业级的 Docker 私有仓库项目,它本身由多个 Docker Containers 组成,通过 docker-compose 管理 containers 之间的依赖关系. 安装 ...

  3. Jenkins 远程启动nodejs失败,使用pm2守护Nodejs

    一.概述 使用Jenkins 远程ssh到linux,使用命令: ssh root@192.168.10.1 'cd /data/test;nohup npm start &' 发现linux ...

  4. Flannel 原理简析及安装

    flannel是CoreOS提供用于解决Dokcer集群跨主机通讯的覆盖网络工具.它的主要思路是:预先留出一个网段,每个主机使用其中一部分,然后每个容器被分配不同的ip:让所有的容器认为大家在同一个直 ...

  5. 《JAVA高并发编程详解》-Thread start方法的源码

    Thread start方法的源码:

  6. C# vb .net实现缩放特效滤镜

    在.net中,如何简单快捷地实现Photoshop滤镜组中的缩放特效呢?答案是调用SharpImage!专业图像特效滤镜和合成类库.下面开始演示关键代码,您也可以在文末下载全部源码: 设置授权 第一步 ...

  7. flask 与 flask_migrate的使用

    flask 与 flask_migrate的使用 一.安装 pip install Flask-Migrate 二.简单使用 # 文件:manage.py from flask_migrate imp ...

  8. Implicit super constructor Array() is undefined for default constructor. Must define an explicit constructor

    因为你的父类已经创建了一个带参的构造函数并且父类中没有无参的构造函数,此时编译器不会为你调用默认的构造函数, 所以子类在继承父类的时候需要在自己的构造函数中显式的调用父类的构造函数,这样才能确保子类在 ...

  9. MPSoc之Hello World学习笔记

    XILINX 新一代 SOC,Zynq UltraScale+ MPSOC 系列性能强悍无比,号称相比ZYNQ 7000系列每瓦性能提升5倍,一直想体验.近期因项目需要,入手了一套米尔的MPSoc开发 ...

  10. 学习笔记之大数据(Big Data)

    300 秒带你吃透大数据! https://mp.weixin.qq.com/s/VWaqRig6_JBNYC1NX7NQ-Q 手把手教你入门Hadoop(附代码&资源) https://mp ...