传送门

真心sb题啊。

考场上最开始看成了一道写过的原题。。。

仔细想了一会发现看错了。

其实就是一个sb队列。

每次插入到队首去就行了。

代码:

#include<bits/stdc++.h>
#define N 200005
using namespace std;
inline int read(){
    int ans=0;
    char ch=getchar();
    while(!isdigit(ch))ch=getchar();
    while(isdigit(ch))ans=(ans<<3)+(ans<<1)+(ch^48),ch=getchar();
    return ans;
}
int n,m,d,q[N],ans[N],tot=0,hd,tl;
struct Node{int v,id;}a[N];
inline bool cmp(Node a,Node b){return a.v<b.v;}
int main(){
    n=read(),m=read(),d=read();
    for(int i=1;i<=n;++i)a[i].v=read(),a[i].id=i;
    sort(a+1,a+n+1,cmp);
    hd=1,tl=0;
    q[++tl]=1,ans[a[1].id]=++tot;
    for(int i=2;i<=n;++i){
        if(a[i].v-d-1>=a[q[hd]].v)ans[a[i].id]=ans[a[q[hd]].id],++hd;
        else ans[a[i].id]=++tot;
        q[++tl]=i;
    }
    cout<<tot<<'\n';
    for(int i=1;i<=n;++i)cout<<ans[i]<<' ';
    return 0;
}

2018.09.16 codeforces1041C. Coffee Break(双端队列)的更多相关文章

  1. java数据结构-09双端队列

    一.相关概念: (Deque)双端队列能够在队头.队尾进行添加.删除等操作  二.接口设计:  三.代码实现 public class Deque<E> { private List< ...

  2. 关于双端队列 deque 模板 && 滑动窗口 (自出)

    嗯... deque 即为双端队列,是c++语言中STL库中提供的一个东西,其功能比队列更强大,可以从队列的头与尾进行操作... 但是它的操作与队列十分相似,详见代码1: 1 #include < ...

  3. Fork/Join框架之双端队列

    简介 ForkJoinPool管理着ForkJoinWorkerThread线程,ForkJoinWorkerThread线程内部有一个双端队列,这个双端队列主要由一个数组queue.数组下标queu ...

  4. python 下的数据结构与算法---4:线形数据结构,栈,队列,双端队列,列表

    目录: 前言 1:栈 1.1:栈的实现 1.2:栈的应用: 1.2.1:检验数学表达式的括号匹配 1.2.2:将十进制数转化为任意进制 1.2.3:后置表达式的生成及其计算 2:队列 2.1:队列的实 ...

  5. Java 模拟队列(一般队列、双端队列、优先级队列)

    队列: 先进先出,处理类似排队的问题,先排的.先处理,后排的等前面的处理完了,再处理 对于插入和移除操作的时间复杂度都为O(1).从后面插入,从前面移除 双端队列: 即在队列两端都能够insert和r ...

  6. 自己动手实现java数据结构(四)双端队列

    1.双端队列介绍 在介绍双端队列之前,我们需要先介绍队列的概念.和栈相对应,在许多算法设计中,需要一种"先进先出(First Input First Output)"的数据结构,因 ...

  7. UVa 210 Concurrency Simulator (双端队列+模拟)

    题意:给定n个程序,每种程序有五种操作,分别为 var = constant(赋值),print var (打印), lock, unlock,end. 变量用小写字母表示,初始化为0,为程序所公有( ...

  8. STL容器:deque双端队列学习

    所谓deque,是"double-ended queue"的缩写; 它是一种动态数组形式,可以向两端发展,在尾部和头部插入元素非常迅速; 在中间插入元素比较费时,因为需要移动其它元 ...

  9. PAT 甲级 1074 Reversing Linked List (25 分)(链表部分逆置,结合使用双端队列和栈,其实使用vector更简单呐)

    1074 Reversing Linked List (25 分)   Given a constant K and a singly linked list L, you are supposed ...

随机推荐

  1. 表析LESS、Sass和Stylus的异同

    . 首页 博客园 联系我 前言:CSS预处理语言. 基本差别. 基本语法. 变量与作用域. 混合(Mixins). 嵌套实现后代选择器. 继承. 条件语句. 循环语句. 综合对比. 留言评论 返回顶部 ...

  2. redis详解(一)-- 概述

    首先,分布式缓存框架 可以 看成是nosql的一种 (1)什么是redis? redis 是一个基于内存的高性能key-value数据库. (有空再补充,有理解错误或不足欢迎指正) (2)Reids的 ...

  3. linux查看磁盘占用常用的两个命令

    1.查看总容量.已使用.未使用容量:df -hl -h:以kb以上单位显示 -l:仅显示本地文件系统 2.查看当前路径下,每个文件/夹占用空间大小:du -sh *

  4. Others-Goldengate 数据同步

    GoldenGate 是一家创建于1995年的美国公司,开发总部设在旧金山,在北美,欧洲和亚洲(包括新加坡.印度.澳大利亚)设有支持中心. 公司名称 GoldenGate 总部地点 旧金山 成立时间 ...

  5. c#之using关键字

    1.using可以引入命名空间: 2.在using语句里声明的变量,使用完后会自动调用Dispose方法(实现IDisposable接口). using 语句允许程序员指定使用资源的对象应当何时释放资 ...

  6. setTranslatesAutoresizingMaskIntoConstraints

    [viewItem setTranslatesAutoresizingMaskIntoConstraints:NO]; 在给继承UIView的类设置此属性后,UIView的某些属性可能发生变化.例如f ...

  7. MySQL修改编码设置及乱码问题

    源地址:http://blog.csdn.net/millia/article/details/5806774   昨天尝试把自己用php编写的第一个糙站发布到网上..结果出现了因为编码不统一而导致乱 ...

  8. How to Pronounce BEAUTIFUL

    How to Pronounce BEAUTIFUL Share Tweet Share Tagged With: 3-Syllable Can you say this word beautiful ...

  9. win10关闭后台应用程序进程的方法

    一)win10系统后台应用有两大特点: 1.win10系统有许多系统自带应用软件,在系统任务栏中看不到任何自带的应用程序运行 2.但通过任务管理器的进程中,可直观的看到许多非系统进程正在运行. 二)后 ...

  10. 关于时间查询的sql语句

    今天 select * from 表名 where to_days(时间字段名) = to_days(now()); 昨天 SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ...