这个贪心之前好像写过,还是感觉挺难的,有点不会写。

这个题目大意是:给你一个数列n个元素,然后给你一天的时间,给你一个间隔时间d,

问你最少要用多少天可以把这个数列的所有元素放进去,注意元素之间必须相隔大于等于d,还有就是假设每一天之间的间隔大于d

解法:

借助队列来解题,

首先给这个元素按照元素大小来拍个序,贪心优先考虑小的,优先把小的放进去,

然后第一天肯定是要开一天的,如何后面的比这个大那就新开一天,否则就可以直接继承这一天。

这个就是解题思路,我觉得我应该要会这个思维题,但是并没有写出来,反而想的特别乱,这样不太对啊。

再仔细想想这个题目其实遇到很多很类似的,就是用优先队列来维护这个num最小值,能放进放,不能放进新开一天

和网络流的魔术球问题的建图条件很像。

#include <cstring>
#include <queue>
#include <cstdlib>
#include <cstdio>
#include <iostream>
#include <string>
#include <bitset>
#include <algorithm>
#include <map>
#include <vector>
#define inf 0x3f3f3f3f
#define inf64 0x3f3f3f3f3f3f3f3f
using namespace std;
typedef long long ll;
const int maxn = 2e5 + ;
struct node
{
int id, num, day;
node(int id=,int num=,int day=):id(id),num(num),day(day){}
bool operator<(const node &a)const
{
return a.num < num;
}
}ex[maxn];
bool cmp(node a,node b)
{
return a.num < b.num;
}
bool cmp1(node a,node b)
{
return a.id < b.id;
}
int main()
{
int n, m, d;
scanf("%d%d%d", &n, &m, &d);
for(int i=;i<=n;i++)
{
int x;
scanf("%d", &x);
ex[i] = node(i, x, );
}
sort(ex + , ex + + n, cmp);
priority_queue<node>que;
int cnt = ;
ex[].day = ;
que.push(ex[]);
for(int i=;i<=n;i++)
{
node now = que.top(); que.pop();
int x = now.num;
if (x + d < ex[i].num) {
ex[i].day = now.day;
que.push(ex[i]);
}
else {
cnt++;
ex[i].day = cnt;
que.push(ex[i]);
que.push(now);
}
}
sort(ex + , ex + + n, cmp1);
printf("%d\n", cnt);
for (int i = ; i <= n; i++) printf("%d ", ex[i].day);
printf("\n");
return ;
}

C. Coffee Break 贪心 思维 有点难 有意思的更多相关文章

  1. Codeforces Round #546 (Div. 2) D 贪心 + 思维

    https://codeforces.com/contest/1136/problem/D 贪心 + 思维 题意 你面前有一个队列,加上你有n个人(n<=3e5),有m(m<=个交换法则, ...

  2. 贪心/思维题 Codeforces Round #310 (Div. 2) C. Case of Matryoshkas

    题目传送门 /* 题意:套娃娃,可以套一个单独的娃娃,或者把最后面的娃娃取出,最后使得0-1-2-...-(n-1),问最少要几步 贪心/思维题:娃娃的状态:取出+套上(2),套上(1), 已套上(0 ...

  3. 贪心/思维题 UVA 11292 The Dragon of Loowater

    题目传送门 /* 题意:n个头,m个士兵,问能否砍掉n个头 贪心/思维题:两个数组升序排序,用最弱的士兵砍掉当前的头 */ #include <cstdio> #include <c ...

  4. CF1041C Coffee Break

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

  5. Coffee Break

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

  6. Mike and distribution CodeForces - 798D (贪心+思维)

    题目链接 TAG: 这是我近期做过最棒的一道贪心思维题,不容易想到,想到就出乎意料. 题意:给定两个含有N个正整数的数组a和b,让你输出一个数字k ,要求k不大于n/2+1,并且输出k个整数,范围为1 ...

  7. T - Posterized(贪心思维)

    Description Professor Ibrahim has prepared the final homework for his algorithm’s class. He asked hi ...

  8. A. Coffee Break(思维题,类似于邻接表的head数组用法)

    题:https://codeforces.com/gym/101911/problem/A 题意:每天工作m分钟,每次喝coffee得间隔d分钟,然后给出n个数,每个数表示想在一天中的a[i]的时刻喝 ...

  9. C. Brutality Educational Codeforces Round 59 (Rated for Div. 2) 贪心+思维

    C. Brutality time limit per test 1 second memory limit per test 256 megabytes input standard input o ...

随机推荐

  1. xml 文件 和xsd 文件的关系

    XML文件和XSD文件的关系 2010-09-29 15:38 2307人阅读 评论(0) 收藏 举报 xml 1. XSD文件在某个namespace中定义element和type.此处定义的typ ...

  2. Spring Cloud和eureka启动报错 解决版本依赖关系

    导读 An attempt was made to call a method that does not exist. The attempt was made from the following ...

  3. webWMS开发过程记录(六)- 详细设计之系统管理

    一.功能说明 1. 权限管理 (参考“权限管理-百度百科") 定义:一般指根据系统设置的安全规则或安全策略,用户可以访问而且只能访问自己被授权的资源,不多不少. 分类:从控制力度来看,通常分 ...

  4. 1327C - Game with Chips (构造)

    题目大意:一个n*m的棋盘上有k个棋子,k个棋子相互关联,可以一起向上向下向左向右,当碰到边界时,如果继续移动会发生越界,那么该棋子会保持不动,其余棋子继续移动.问能否在2*n*m的移动次数内,使各个 ...

  5. D. Ehab the Xorcist

    题意: 略: 感觉被演了一波,这是CFdiv2吗? 算是这个构造题吧. 1 首先我们可以将u进行二进制拆分来考虑.加入u>v那么小与v的那些数在怎么拼接也无法使异或值为u. 比如二进制U=1 0 ...

  6. PHP Curl 请求https 60错误解决办法

      curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); 

  7. 1. jquery插件手机

    1. http://jqtjs.com/preview/demos/main/index.html#home2. jquery weUI ===== 插件:https://blog.csdn.net/ ...

  8. 架构师修炼之微服务部署 - 深入理解Docker镜像

    镜像简介 它是一个创建Docker 容器的只读模板,通过DockerFile可以自定义镜像. 它也是一个特殊的文件系统,除了提供容器运行时所需的程序.库.资源.配置等文件外,还包含了一些为运行时准备的 ...

  9. jdbc-手写Java方法连接数据库

    一.关键四元素   ①    com.mysql.jdbc.Driver      mysql数据库连接jar包.   获取途径: 链接:https://pan.baidu.com/s/1SFcjuu ...

  10. Nginx知多少系列之(十四)Linux下.NET Core项目Nginx+Keepalived高可用(主从模式)

    目录 1.前言 2.安装 3.配置文件详解 4.工作原理 5.Linux下托管.NET Core项目 6.Linux下.NET Core项目负载均衡 7.负载均衡策略 8.加权轮询(round rob ...