CodeForces - 985E(Pencils and Boxes)
题意:分配 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)相关推荐
- CodeForces 985E Pencils and Boxes
Description Mishka received a gift of multicolored pencils for his birthday! Unfortunately he lives ...
- CodeForces - 985E Pencils and Boxes
可以证明的是,总是存在一种最优策略使得每个组内的权值都是连续的. 所以排完序一遍 two pointers就好啦. Discription Mishka received a gift of mult ...
- Codeforces - 985E Pencils and Boxes
题意: 给定n支铅笔,问能不能分成若干堆,使得每堆数量不小于k且每堆的最大值和最小值之差不大于d. 题解: 排序.从后往前扫一遍.考虑以每个点为最小值建堆是否合法.对于当前点i,它需要至少k支铅笔,但 ...
- codeforces contest 985E. Pencils and Boxes+思维
类似指针的想法 E. Pencils and Boxes time limit per test 2 seconds memory limit per test 256 megabytes input ...
- cf 985E Pencils and Boxes
一 原题 E. Pencils and Boxes time limit per test 2 seconds memory limit per test 256 megabytes input st ...
- Codeforces - Pencils and Boxes
题目链接:Codeforces - Pencils and Boxes 显然可以dp,dp[i] 为前 i 个是否合法. 然后sort一下,然后枚举当前位置的时候,二分或者尺取找到最远的合法的位置.然 ...
- CodeForces 985 E Pencils and Boxes
Pencils and Boxes 题意: n支铅笔,每只笔有一个颜色值, 无限个盒子, 如果一个盒子里面放笔的话, 就至少需要k支笔装在一起,并且一个盒子里面的笔的颜色值只差 不能大于 d.如果满足 ...
- E. Pencils and Boxes codeforces(思维+dp)
题目链接:E. Pencils and Boxes 题意: 给出n个数字,分组,每组大小>=k,并且同一组内任意两个数字大小不能超过d 思路: 先从小到大排序.然后dp.起点肯定是第一个数字,然 ...
- Codeforces 985 E - Pencils and Boxes
E - Pencils and Boxes 思路: dp 先排个序,放进一个袋子里的显然是一段区间 定义状态:pos[i]表示小于等于i的可以作为(放进一个袋子里的)一段区间起点的离i最近的位置 显然 ...
最新文章
- ASP.NET2.0 永恒密码之戒【月儿原创】
- 【Java系列】从JVM角度解析Java核心类String的不可变特性
- c++中的引用和python中的引用_对比 C++ 和 Python,谈谈指针与引用
- C#LeetCode刷题之#459-重复的子字符串(Repeated Substring Pattern)
- 从零开始学习python编程-从0开始的Python学习014面向对象编程(推荐)
- tomcat部署web项目的3中方法
- matlab 无法进行符号运算,无法使用syms 命令
- sqlserver入门
- ILSVRC2012下载+训练
- 太湖之光超级计算机应用最高奖,世界最快超级计算机“神威·太湖之光”获得100多项应用成果...
- 2篇SCI二区+3篇一类论文认定A档博士!享110万房补!直接副教授、甚至教授待遇,30万科启
- python爬今日头条组图_python 爬虫抓取今日头条街拍图片
- OpenCV快速入门五:色彩空间转换
- 五款宝藏浏览器插件推荐,一定要看到最后
- EasyExcel如何返回业务处理中的错误信息
- camera杂项---两种shutter
- 范美忠的逃生本能需要一种理性伪饰吗?
- 史上最全讲解:JAVA中的Map与Thread
- 论文阅读 (78):FlowNet: Learning Optical Flow with Convolutional Networks
- 大数据项目之电商数据仓库系统回顾