题意:分配 n 个铅笔到笔筒中,每个笔筒最少放k个笔,每只铅笔有个value,同一个盒子中放入的笔的value差不能大于d,问能否找到满足条件的方案。

分析:根据题意,我们可以推出答案一定是将铅笔按 value 值排序之后划分成多个段,每个段对应一个笔筒。排完序后,为了满足条件,一个笔筒的最小 value 值铅笔在确定的情况下,这个笔筒所能装的最大 value 值的铅笔显然是一个连续的区间。那么当前铅笔可以作为新笔筒最小 value 值的条件就是 之前的铅笔已经被合法划分至若干个旧笔筒。

则我们设 dp[i] 表示 1~i 的铅笔已经被合法划分,那么下一步转移就是以第 i+1 个铅笔作为新笔筒的最小值,去找到满足条件的最大值区间并标记。

代码:

#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;const int N = 5*1E5+10;int num[N],dp[N];int n,k,d;int main()
{scanf("%d%d%d",&n,&k,&d);for(int i=1;i<=n;i++)scanf("%d",&num[i]);sort(num+1,num+n+1);dp[0]=1;  //初始化。int now=1;   for(int i=0;i<=n;i++){if(dp[i]){now=max(now,i+k);   // 一个笔筒至少装 k 个// 以当前i+1为左边界,找到最大值区间while(now<=n&&num[now]-num[i+1]<=d)  {dp[now]=1; // 标记now++;}}}if(dp[n])puts("YES");elseputs("NO");
} 

CodeForces - 985E(Pencils and Boxes)相关推荐

  1. CodeForces 985E Pencils and Boxes

    Description Mishka received a gift of multicolored pencils for his birthday! Unfortunately he lives ...

  2. CodeForces - 985E Pencils and Boxes

    可以证明的是,总是存在一种最优策略使得每个组内的权值都是连续的. 所以排完序一遍 two pointers就好啦. Discription Mishka received a gift of mult ...

  3. Codeforces - 985E Pencils and Boxes

    题意: 给定n支铅笔,问能不能分成若干堆,使得每堆数量不小于k且每堆的最大值和最小值之差不大于d. 题解: 排序.从后往前扫一遍.考虑以每个点为最小值建堆是否合法.对于当前点i,它需要至少k支铅笔,但 ...

  4. codeforces contest 985E. Pencils and Boxes+思维

    类似指针的想法 E. Pencils and Boxes time limit per test 2 seconds memory limit per test 256 megabytes input ...

  5. cf 985E Pencils and Boxes

    一 原题 E. Pencils and Boxes time limit per test 2 seconds memory limit per test 256 megabytes input st ...

  6. Codeforces - Pencils and Boxes

    题目链接:Codeforces - Pencils and Boxes 显然可以dp,dp[i] 为前 i 个是否合法. 然后sort一下,然后枚举当前位置的时候,二分或者尺取找到最远的合法的位置.然 ...

  7. CodeForces 985 E Pencils and Boxes

    Pencils and Boxes 题意: n支铅笔,每只笔有一个颜色值, 无限个盒子, 如果一个盒子里面放笔的话, 就至少需要k支笔装在一起,并且一个盒子里面的笔的颜色值只差 不能大于 d.如果满足 ...

  8. E. Pencils and Boxes codeforces(思维+dp)

    题目链接:E. Pencils and Boxes 题意: 给出n个数字,分组,每组大小>=k,并且同一组内任意两个数字大小不能超过d 思路: 先从小到大排序.然后dp.起点肯定是第一个数字,然 ...

  9. Codeforces 985 E - Pencils and Boxes

    E - Pencils and Boxes 思路: dp 先排个序,放进一个袋子里的显然是一段区间 定义状态:pos[i]表示小于等于i的可以作为(放进一个袋子里的)一段区间起点的离i最近的位置 显然 ...

最新文章

  1. ASP.NET2.0 永恒密码之戒【月儿原创】
  2. 【Java系列】从JVM角度解析Java核心类String的不可变特性
  3. c++中的引用和python中的引用_对比 C++ 和 Python,谈谈指针与引用
  4. C#LeetCode刷题之#459-重复的子字符串(Repeated Substring Pattern)
  5. 从零开始学习python编程-从0开始的Python学习014面向对象编程(推荐)
  6. tomcat部署web项目的3中方法
  7. matlab 无法进行符号运算,无法使用syms 命令
  8. sqlserver入门
  9. ILSVRC2012下载+训练
  10. 太湖之光超级计算机应用最高奖,世界最快超级计算机“神威·太湖之光”获得100多项应用成果...
  11. 2篇SCI二区+3篇一类论文认定A档博士!享110万房补!直接副教授、甚至教授待遇,30万科启
  12. python爬今日头条组图_python 爬虫抓取今日头条街拍图片
  13. OpenCV快速入门五:色彩空间转换
  14. 五款宝藏浏览器插件推荐,一定要看到最后
  15. EasyExcel如何返回业务处理中的错误信息
  16. camera杂项---两种shutter
  17. 范美忠的逃生本能需要一种理性伪饰吗?
  18. 史上最全讲解:JAVA中的Map与Thread
  19. 论文阅读 (78):FlowNet: Learning Optical Flow with Convolutional Networks
  20. 大数据项目之电商数据仓库系统回顾

热门文章

  1. 一下搞懂HTTP协议
  2. 【Unity3D插件】Glow插件分享《边缘发光插件》
  3. IDEA设置背景为自定义照片
  4. 一个中国码农在硅谷求职的经历
  5. RHCSA之基本命令_统计文件内容篇(wc)
  6. vue使用高德地图搜索地址添加标记marker,定位,拖拽选址功能
  7. 【转载】合约投放系统-介绍
  8. jQuery 图像 360 度旋转插件
  9. 【有效防范“网络钓鱼”的方法】
  10. Python 利用4行代码实现图片灰度化