//题意:一个的工作时间是m分钟。
// 在特定的时间和咖啡 n a1,a2....an,, ai代表的是每个咖啡要在一天中对应的时间点喝掉
// 每一次喝咖啡的时间为1分钟
// 必须在一天中的ai时刻喝掉对应的咖啡
// 在两次喝咖啡中间要有d分钟休息时间,天与天之间时间大于d
// 尽可能少的天数内将所有咖啡喝完,不只有一种解法
// input 输入 n(n杯咖啡), m(一天有m分钟工作时间), d(间隔时间)
// a1,a2...an(第n杯咖啡要在一天中的第an时间点喝掉) //ouput 输出 最少的天数
// 每杯咖啡在第几天喝掉 //1.set<pair<int,int> >的用法
//
//set默认的比较规则先按照first比较,
//如果first相同,再按照second 比较。
//注意:定义的时候右边的两个>>要空一格。 //upper_bound(begin,end,i)用法是查找排好序的从begin开始到end结束大于i的数,二分查找方法
//lower_bound(begin,end,i)用法是查找排好序的从begin开始到end结束不大于i的数,二分查找方法 //set
//本题用的upper_bound(make_pair(a[pos]+d,INF))后面的INF一定要加,现根据前面查找,然后根据后面查找,均二分
//本题用的lower_bound(make_pair(a[pos]+d+1,0))后面o也一定要加,现根据前面查找,然后根据后面查找,均二分 #include <stdio.h>
#include <string.h>
#include <set>
#include <stdio.h>
#include <iostream>
using namespace std;
const int MAX = 2e5 + ;
const int INF = 9e9 + ;
int a[MAX], ans[MAX];
set<pair<int,int> > ss;
set<pair<int,int> > :: iterator it; int main(){ int n, m, d;
int count = ,pos;
cin >> n >> m >> d;
for( int i = ; i <= n; i++ ) {
scanf("%d",&a[i]);
ss.insert(make_pair(a[i],i));
}
while( !ss.empty() ) {
count++;
// cout<<ss.begin()->first<<" "<<ss.begin()->second<<endl;
pos = ss.begin()->second;
ans[pos] = count;
ss.erase(ss.begin()); while(){
// ss.upper_bound(make_pair(a[pos]+d,INF)) //这两都可以用
it = ss.lower_bound(make_pair(a[pos]++d,));
if(it==ss.end()) break;
pos = it->second;
ans[pos] = count;
ss.erase(it);
}
}
printf("%d\n",count);
for(int i = ;i<=n;i++){
printf("%d%c",ans[i],i==n?'\n':' ');
} return ;
}

【CodeForces-1041C】Coffee Break(二分解决关于set,pair,upper_bound用法)的更多相关文章

  1. CF1041C Coffee Break

    CF1041C Coffee Break 题目大意: 给定nn个数和一个kk,这nn个数都不超过mm 每次从没被去掉的数里面选一个数aa,去掉aa,然后可以任意一个b(b>a+k)b(b> ...

  2. Codeforces 404E: Maze 1D(二分)

    题意:指令“R”机器人会向右走一步,“L”是向左.起初机器人在0位置,可以在除了0以外的任何位置放障碍,如果机器人的指令将使它走到障碍上,那这一步他会保持不动.要求让机器人最终结束的那一步一定只走过一 ...

  3. Coffee Break

    题目链接:Coffee Break  Gym-101911A 题目大意:有一位员工想要利用喝咖啡来休息,他给了一个数组表示他想要喝咖啡的时间点(假设他喝咖啡用时1分钟),老板规定每次喝咖啡的时间间隔必 ...

  4. [Codeforces 1199C]MP3(离散化+二分答案)

    [Codeforces 1199C]MP3(离散化+二分答案) 题面 给出一个长度为n的序列\(a_i\)和常数I,定义一次操作[l,r]可以把序列中<l的数全部变成l,>r的数全部变成r ...

  5. C. Coffee Break 贪心 思维 有点难 有意思

    C. Coffee Break 这个贪心之前好像写过,还是感觉挺难的,有点不会写. 这个题目大意是:给你一个数列n个元素,然后给你一天的时间,给你一个间隔时间d, 问你最少要用多少天可以把这个数列的所 ...

  6. 二分检索函数lower_bound()和upper_bound()

    二分检索函数lower_bound()和upper_bound() 一.说明 头文件:<algorithm> 二分检索函数lower_bound()和upper_bound() lower ...

  7. Codeforces - 1118D2 - Coffee and Coursework (Hard Version) - 二分

    https://codeforces.com/problemset/problem/1118/D2 也是很好想的一个二分啦. 验证m的可行性的时候,肯定是把最多咖啡因的咖啡先尽可能平均分到每一天,因为 ...

  8. CodeForces 670D1 暴力或二分

    今天,开博客,,,激动,第一次啊 嗯,,先来发水题纪念一下 D1. Magic Powder - 1   This problem is given in two versions that diff ...

  9. Codeforces 1114E - Arithmetic Progression - [二分+随机数]

    题目链接:http://codeforces.com/problemset/problem/1114/E 题意: 交互题,有一个 $n$ 个整数的打乱顺序后的等差数列 $a[1 \sim n]$,保证 ...

随机推荐

  1. Payment:微信支付配置文件设置说明

    项目GitHub地址:https://github.com/helei112g/payment 微信支付个人觉得在帐号设置上有些麻烦,帐号太多啦,支付宝目前就是一个应用基本涵盖了所有的接口开发. 可能 ...

  2. 【转】Android业务组件化之URL Scheme使用

    前言: 最近公司业务发展迅速,单一的项目工程不再适合公司发展需要,所以开始推进公司APP业务组件化,很荣幸自己能够牵头做这件事,经过研究实现组件化的通信方案通过URL Scheme,所以想着现在还是在 ...

  3. Hadoop学习之路(四)Hadoop集群搭建和简单应用

    概念了解 主从结构:在一个集群中,会有部分节点充当主服务器的角色,其他服务器都是从服务器的角色,当前这种架构模式叫做主从结构. 主从结构分类: 1.一主多从 2.多主多从 Hadoop中的HDFS和Y ...

  4. Day10 API

    String类 String是不可变类:值一旦确定了,就不会更改. public static void main(String[] args) { String s1 = "hello&q ...

  5. Linux无法识别Broadcom 802.11abgn无线网卡

    折腾了好久,都无法解决 索性后来直接使用的usb外置网卡,勉强能用(使用极其不便) 最后使尽浑身解数,冲着萤火般的希望,好在没有放弃 正解就是下面这   完成重启即可 sudo cp /sys/fir ...

  6. 一条SQL语句执行得很慢原因有哪些

    一条SQL语句执行得很慢,要分两种情况: 1.大多数情况是正常,偶尔很慢 数据库在处理数据忙时候,更新或新增数据都会暂时记录到redo log日志,等空闲时把数据同步到磁盘.假设数据库一直很忙,更新又 ...

  7. 再起航,我的学习笔记之JavaScript设计模式07(抽象工厂模式)

    我的学习笔记是根据我的学习情况来定期更新的,预计2-3天更新一章,主要是给大家分享一下,我所学到的知识,如果有什么错误请在评论中指点出来,我一定虚心接受,那么废话不多说开始我们今天的学习分享吧! 前两 ...

  8. Ext4文件系统架构分析(三) ——目录哈希、扩展属性与日志

    struct dx_root Htree的内部节点: struct dx_node Htree 树根和节点中都存在的 Hash map: struct dx_entry 1.20 扩展属性EA 扩展属 ...

  9. block本质探寻二之变量捕获

    一.代码 说明:本文章须结合文章<block本质探寻一之内存结构>和<class和object_getClass方法区别>加以理解: //main.m #import < ...

  10. BUAA_OO第一单元总结性博客作业——表达式求导

    一.程序设计思路 在我的三次作业中都采用了类的分层结构,采用逐项匹配,分层求导的思路. (一). 第一次作业中构建了Polynimial(多项式)类,在类的构造器中就完成了对非法空格的判断并对合法表达 ...