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

这个题目大意是:给你一个数列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. 一个不错的java学习博客

    http://iteye.blog.163.com/blog/static/18630809620131484835129/

  2. DES原理及代码实现

    一.DES基础知识DES技术特点 DES是一种用56位密钥来加密64位数据的方法    DES采取了分组加密算法:明文和密文为64位分组长度    DES采取了对称算法:加密和解密除密钥编排不同外,使 ...

  3. python 自动打包,发送邮件(包括附件)至多个收件人(qq邮箱,163邮箱)

    -----------------------------打包部分---------------------------------- import zipfile def zipDir(dirpat ...

  4. Cobalt Strike系列教程第七章:提权与横向移动

    Cobalt Strike系列教程分享如约而至,新关注的小伙伴可以先回顾一下前面的内容: Cobalt Strike系列教程第一章:简介与安装 Cobalt Strike系列教程第二章:Beacon详 ...

  5. 学习JVM参数前必须了解的

    JVM参数是什么 大家照相通常使用手机就够用了,但是针对发烧友来说会使用更专业的设备,比如单反相机,在单反里有好几个模式,P/A/S/M,其中P是傻瓜模式,程序会自动根据环境设置快门速度和光圈大小,以 ...

  6. [GO] linux 下安装GO

    yum install mercurial安装 mercurial包 安装git包 yum install git 安装gcc yum install gcc 然后就可以下载golang的压缩包了 对 ...

  7. Python网络爬虫:伪装浏览器

    一.添加超时跳过功能 首先, 我简单地将 urlop = urllib.request.urlopen(url) 改为 urlop = urllib.request.urlopen(url, time ...

  8. 面试题56 - I. 数组中数字出现的次数

    面试题56 - I. 数组中数字出现的次数 一个整型数组 nums 里除两个数字之外,其他数字都出现了两次.请写程序找出这两个只出现一次的数字.要求时间复杂度是O(n),空间复杂度是O(1). 示例 ...

  9. tp5--路由的使用方法(深入)

    懒得写注释,直接上代码 配置文件Route: <?php use think\Route; //tp5路由测试 //动态注册 //Route::rule('路由表达式','路由地址','请求类型 ...

  10. php的echo 和 return的区别

    来源:https://blog.csdn.net/ljfphp/article/details/76718635 项目中碰到的问题,本来是想在控制器直接return $xml的($xml是一段xml格 ...