//题意:一个的工作时间是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. jQuery 和 YUI (Yahoo User Interface) 各自的优缺点有哪些?具体的使用场景是怎样的?

    张经纬,前端工程师 知乎用户.赵勇杰.知乎用户 等人赞同 其实jQuery和YUI的侧重点是不一样的. jQuery专注于DOM的操作,他通过继承的方式给传入的对象增加了新的方法,从而使我们可以通过链 ...

  2. 【转】decorView和window之间的层级及关系

    转载请注明出处:http://blog.csdn.net/guxiao1201/article/details/41744107 首先贴出实现Activity对话框圆角的核心代码 @Override ...

  3. Hive学习之路 (十二)Hive SQL练习之影评案例

    案例说明 现有如此三份数据:1.users.dat 数据格式为: 2::M::56::16::70072, 共有6040条数据对应字段为:UserID BigInt, Gender String, A ...

  4. HBase学习之路 (一)HBase基础介绍

    产生背景 自 1970 年以来,关系数据库用于数据存储和维护有关问题的解决方案.大数据的出现后, 好多公司实现处理大数据并从中受益,并开始选择像 Hadoop 的解决方案.Hadoop 使用分 布式文 ...

  5. css自问自答(一)

    css自问自答(一) 1.块级元素和行内元素特性与区别? 块级:display:block <div>.<p>.<h1>...<h6>.<ol&g ...

  6. P1120 小木棍 [数据加强版]

    题目描述 乔治有一些同样长的小木棍,他把这些木棍随意砍成几段,直到每段的长都不超过50. 现在,他想把小木棍拼接成原来的样子,但是却忘记了自己开始时有多少根木棍和它们的长度. 给出每段小木棍的长度,编 ...

  7. select * from * with ur

    DB2中,共有四种隔离级:RS,RR,CS,UR,DB2提供了这4种不同的保护级别来隔离数据.隔离级是影响加锁策略的重要环节,它直接影响加锁的范围及锁的持续时间.两个应用程序即使执行的相同的操作,也可 ...

  8. route(windows)

    1.route delete 0.0.0.0 mask 0.0.0.0 10.33.31.254----------删除默认到内网网关的默认路由:2.route add -p 10.33.0.0 ma ...

  9. 【LeetCode67】 Add Binary

    题目描述: 解题思路: 此题的思路简单,下面的代码用StringBuilder更加简单,注意最后的结果要反转过来.[LeetCode415]Add Strings的解法和本题一模一样. java代码: ...

  10. layedit富文本编辑器获取纯文字内容和全部内容