CF1066D Boxes Packing
传送门
这题为什么要用二分呢?/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相关推荐
- 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 ...
- C-Boxes packing
C. Boxes Packing time limit per test 1 second memory limit per test 256 megabytes input standard inp ...
- Codeforces Round #515 (Div. 3)【未完结】
2022.3.9 题单地址:https://codeforces.com/contest/1066 目录 A. Vova and Train[思维] B. Heaters[贪心] C. Books Q ...
- 【论文阅读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 ...
- Codeforces 题目合集+分类+代码 【Updating...】【361 in total】
961A - Tetris 模拟 ...
- 怎样利用计算机模拟掷骰子实验,概率论实验报告-随机数模拟掷骰子.doc
数学与统计学院实验报告 院(系):数学与统计学院 学号: 姓名: 实验课程: 概率论与数理统计 指导教师: 实验类型(演示性.验证性.综合性.设计性):演示性 实验时间:2013年09月18日 一.实 ...
- 【CodeForces - 270C】Magical Boxes (思维,进制,有坑)
题干: Emuskald is a well-known illusionist. One of his trademark tricks involves a set of magical boxe ...
- HDU - 1613 Ecological Bin Packing
问题描述: Background Bin packing, or the placement of objects of certain weights into different bins sub ...
- Anchor Boxes示例实战
Anchor Boxes示例实战 目标检测算法通常对输入图像中的大量区域进行采样,判断这些区域是否包含感兴趣的目标,并调整这些区域的边缘,以便更准确地预测目标的真实边界框.不同的模型可能使用不同的区域 ...
最新文章
- 利用ConcurrentHashMap来实现一个ConcurrentHashSet
- 猿类如何捕获少女心--难以琢磨的try-catch
- linux设置关闭省电模式
- python爬取js加载的数据_Python爬虫学习,记一次抓包获取js,从js函数中取数据的过程...
- 深度案例 | 神策数据如何助力房产企业数字化转型快速落地?
- Java接受带文件的表单_Javaweb使用getPart接收表单文件过程解析
- 图的长宽_华为P50 Pro渲染图曝光:单挖孔屏+超高屏占比
- MySQL多个线程同时写数据_多个线程可以同时将数据写入文件吗?
- Spark在美团的实践
- 图像识别_2010暑期实训有感【二】
- .net core 后台 post设置等待时间_[vueelementadmin]前端发送的post请求的数据,后端接收不到并报EOFException异常的解决方案...
- KMP算法之NEXT数组代码原理分析 - 数据结构和算法38
- 4.redis设计与实现--跳跃表
- Redis 缓存过期(maxmemory) 配置/算法 详解
- Python 2.7的新特性
- 【Matlab】贝叶斯网络工具箱简介
- Android8怎么格式化内存卡,安卓手机怎么格式化内存卡
- 材料力学 4.弯曲内力
- 纯代码实现WordPress文章部分内容关注微信公众号后可见
- 算法中的微积分:5大函数求导公式让你在面试中脱颖而出