传送门

这题为什么要用二分呢?/huaji

首先可以\(O(n)\)预处理出从某个物品\(i\)开始放,只放一个盒子,能放的最后物品的位置\(j\),只要用两个指针维护左右端点,每次移动一下左端点同时尽量把右端点右移救星了

然后我们要放的所有物品是原来的一个后缀,所以要从后往前放,但是直接贪心放是错的.考虑构建一棵树,根据前面对每个\(i\)预处理出的\(j\),连\((j+1,i)\)的单向边,然后从\(n+1\)开始dfs,记\(n+1\)的深度为0,那么我们不能访问深度大于\(m\)的点.记能访问到最小的点为\(y\),答案为\(n-y+1\)

#include<bits/stdc++.h>
#define LL long long
#define il inline
#define re register
#define db double
#define eps (1e-5)using namespace std;
const int N=200000+10;
il LL rd()
{LL x=0,w=1;char ch=0;while(ch<'0'||ch>'9') {if(ch=='-') w=-1;ch=getchar();}while(ch>='0'&&ch<='9') {x=(x<<3)+(x<<1)+(ch^48);ch=getchar();}return x*w;
}
int to[N],nt[N],hd[N],tot=1;
il void add(int x,int y){++tot,to[tot]=y,nt[tot]=hd[x],hd[x]=tot;}
int n,m,k,a[N],ans,tt=-1;
il void dfs(int x)
{++tt;ans=max(ans,n-x+1);if(tt<m) for(int i=hd[x];i;i=nt[i]) dfs(to[i]);--tt;
}int main()
{n=rd(),m=rd(),k=rd();for(int i=1;i<=n;i++) a[i]=rd();for(int i=1,su=a[1],j=1;i<=n;i++){while(j<n&&su+a[j+1]<=k) su+=a[++j];add(j+1,i),su-=a[i];}dfs(n+1);printf("%d\n",ans);return 0;
}

转载于:https://www.cnblogs.com/smyjr/p/9822262.html

CF1066D Boxes Packing相关推荐

  1. Boxes Packing

    Boxes Packing Mishka has got n empty boxes. For every i (1 ≤ i ≤ n), i-th box is a cube with side le ...

  2. C-Boxes packing

    C. Boxes Packing time limit per test 1 second memory limit per test 256 megabytes input standard inp ...

  3. Codeforces Round #515 (Div. 3)【未完结】

    2022.3.9 题单地址:https://codeforces.com/contest/1066 目录 A. Vova and Train[思维] B. Heaters[贪心] C. Books Q ...

  4. 【论文阅读30】-《Autocuts: Simultaneous Distortion and Cut Optimization for UV Mapping》

    目录 0 摘要 1 introduction 2 related work 2.1 Minimizing distortion 2.2 Optimizing cuts 2.2.1 Cuts for r ...

  5. Codeforces 题目合集+分类+代码 【Updating...】【361 in total】

    961A - Tetris                                                模拟                                      ...

  6. 怎样利用计算机模拟掷骰子实验,概率论实验报告-随机数模拟掷骰子.doc

    数学与统计学院实验报告 院(系):数学与统计学院 学号: 姓名: 实验课程: 概率论与数理统计 指导教师: 实验类型(演示性.验证性.综合性.设计性):演示性 实验时间:2013年09月18日 一.实 ...

  7. 【CodeForces - 270C】Magical Boxes (思维,进制,有坑)

    题干: Emuskald is a well-known illusionist. One of his trademark tricks involves a set of magical boxe ...

  8. HDU - 1613 Ecological Bin Packing

    问题描述: Background Bin packing, or the placement of objects of certain weights into different bins sub ...

  9. Anchor Boxes示例实战

    Anchor Boxes示例实战 目标检测算法通常对输入图像中的大量区域进行采样,判断这些区域是否包含感兴趣的目标,并调整这些区域的边缘,以便更准确地预测目标的真实边界框.不同的模型可能使用不同的区域 ...

最新文章

  1. 利用ConcurrentHashMap来实现一个ConcurrentHashSet
  2. 猿类如何捕获少女心--难以琢磨的try-catch
  3. linux设置关闭省电模式
  4. python爬取js加载的数据_Python爬虫学习,记一次抓包获取js,从js函数中取数据的过程...
  5. 深度案例 | 神策数据如何助力房产企业数字化转型快速落地?
  6. Java接受带文件的表单_Javaweb使用getPart接收表单文件过程解析
  7. 图的长宽_华为P50 Pro渲染图曝光:单挖孔屏+超高屏占比
  8. MySQL多个线程同时写数据_多个线程可以同时将数据写入文件吗?
  9. Spark在美团的实践
  10. 图像识别_2010暑期实训有感【二】
  11. .net core 后台 post设置等待时间_[vueelementadmin]前端发送的post请求的数据,后端接收不到并报EOFException异常的解决方案...
  12. KMP算法之NEXT数组代码原理分析 - 数据结构和算法38
  13. 4.redis设计与实现--跳跃表
  14. Redis 缓存过期(maxmemory) 配置/算法 详解
  15. Python 2.7的新特性
  16. 【Matlab】贝叶斯网络工具箱简介
  17. Android8怎么格式化内存卡,安卓手机怎么格式化内存卡
  18. 材料力学 4.弯曲内力
  19. 纯代码实现WordPress文章部分内容关注微信公众号后可见
  20. 算法中的微积分:5大函数求导公式让你在面试中脱颖而出

热门文章

  1. 11-散列4 Hashing - Hard Version(2种方法)
  2. 基础医学概论练习题(含答案)
  3. 后羿 09 ‖ 昆仑
  4. JQuery、BootStrap实现鼠标悬浮出现下拉框
  5. 嵌入式行业真的没前途吗?
  6. 07-图4 哈利·波特的考试(Folyd算法,Dijkstra算法)
  7. 扎什伦布寺《佛系珍藏》系列数字藏品即将开售!
  8. 无人机航测-倾斜摄影在房地一体权籍的应用
  9. [MySQL] 零基础学MySQL 08
  10. 评测三款最流行的azw3阅读器(ios手机适用)