U33405 纽约
U33405 纽约
花费 \(w\) 元可以购买一辆容量为 \(w\) 的车
现在你有 \(n <= 2000\) 个物品, 搬运策略: 一直搬能放下里面最重的, 直到任意物品都不能搬上为止
求满足运送次数 \(<= R\) 的情况下买车花费的最少钱数
Solution
二分花钱数, 模拟搬运过程, 复杂度 \(O(n^{2}\log{n})\)
因为物品排序后有单调性, 且只能用一次(搬一次), 使用链表优化, 总复杂度\(O(n \log{n})\)
可是这题我认为有问题
upd: 哦原来后面有说
问题出在在符合搬运策略的情况下, 出钱数与搬运次数不符合单调性
所以最后加了个往前面检查多次查看是否合法, 取较小值
Code
#include<iostream>
#include<cstdio>
#include<queue>
#include<cstring>
#include<algorithm>
#include<climits>
#define LL long long
#define REP(i, x, y) for(int (i) = (x);(i) <= (y);(i)++)
using namespace std;
int RD(){
int out = 0,flag = 1;char c = getchar();
while(c < '0' || c >'9'){if(c == '-')flag = -1;c = getchar();}
while(c >= '0' && c <= '9'){out = out * 10 + c - '0';c = getchar();}
return flag * out;
}
const int maxn = 4019;
int num, R;
int w[maxn], l[maxn], r[maxn];
int minn, maxx;
bool cmp(int a, int b){return a > b;}
void init(){
REP(i, 1, num)l[i] = i - 1, r[i] = i + 1;
r[0] = 1;
}
bool check(int k){
init();
int tim = 0, tot = 0, now = 0, left = num;
while(1){
now = r[0], tot = 0;
tim++;
while(now <= num){//运一次
if(tot + w[now] <= k){//不超重
tot += w[now];
r[l[now]] = r[now];//链表删除
l[r[now]] = l[now];
left--;
if(!left){//所有东西搬完检查次数
if(tim <= R)return 1;
return 0;
}
}
now = r[now];
}
if(tim > R)return 0;
}
}
int search(int l, int r){
int ans = -1;
while(l <= r){
int mid = (l + r) >> 1;
if(check(mid))ans = mid, r = mid - 1;
else l = mid + 1;
}
return ans;
}
int ans;
int main(){
num = RD(), R = RD();
REP(i, 1, num)w[i] = RD(), minn = min(minn, w[i]), maxx += w[i];
sort(w + 1, w + 1 + num, cmp);
int temp = search(minn, maxx);
for(ans = temp - 51;ans <= temp && !check(ans);ans++);
printf("%d\n", ans);
return 0;
}
U33405 纽约的更多相关文章
- U33405 纽约 (二分)
[题目描述] 牧民 Azone 需要多次往返于两个草场之间运输家当.为了顺利转场,Azone 决定花费 w元津巴布韦币,购买一辆载重为 w 的汽车.共有 n 件家具需要搬运,每件家具的重量为 wi ...
- digitalocean纽约机房最先开通IPv6
DigitalOcean是一家位于美国的云主机服务商,总部位于纽约,成立于2012年.DigitalOcean的服务器全部采用KVM架构,具体高性能处理能力,并且配备SSD固态硬盘,速度优异.每台设备 ...
- 使用ML.NET预测纽约出租车费
有了上一篇<.NET Core玩转机器学习>打基础,这一次我们以纽约出租车费的预测做为新的场景案例,来体验一下回归模型. 场景概述 我们的目标是预测纽约的出租车费,乍一看似乎仅仅取决于行程 ...
- 纽约工作日志流水账 Day 1
周六早上8:00从青岛登机,历经17个小时,终于在当地时间周六下午2点半到达目的地纽约. 被媳妇吐槽旁边坐了美女妹子,其实是个美国妹子,旁边人家还有男朋友,全程只和我说了2句话,Exc ...
- 用Java取指定时区的时间 北京时间,纽约时间,班加罗尔时间
/** * 取北京时间 * @return */ public static String getBeijingTime(){ return getFormatedDateString(8); } / ...
- New York Comic Con 2013 - 2013年纽约动漫展
New York Comic Con - 2013年纽约动漫展 New York Comic Con is the largest pop culture event on the East Coas ...
- GIS+=地理信息+行业+大数据——纽约公开11亿条出租车和Uber原始数据下载及分析
一览众山小编辑团队 原文/ Todd Schneider 翻译/ 沈玮薇 陈翚 文献/ 蒋理 校核/ 众山小编辑/ 众山小 排版/ 徐颖 2014-2015 © 转载请注明:源自公众号"一览 ...
- 纽约LangeEylandt长岛LongIsland
LangeEylandt n.长岛(美国) 纽约长岛 纽约长岛 (LongIsland)是北美洲在大西洋内的一个岛,最早追溯到十七世纪的1650年被命名为Lange Eylandt [1] ,位于北美 ...
- 《美国纽约摄影学院摄影教材》PDF教材
下载地址: 美国纽约摄影学院摄影教材(上册).pdf 美国纽约摄影学院摄影教材(下册).pdf 欢迎你到纽约摄影学院来,我们急切地等待着开课,你们也在 跃跃欲试了.那就让我们马上开始吧! 你已 ...
随机推荐
- jdbc连接获取表名称
1,Class.forName可以替换为mysql之类其他的数据库驱动 public Connection connect(String url,String username,String pw, ...
- 我是IT小小鸟读后感
<我是一只IT小小鸟>一只是我想读list中一个本,但是上次去当当买的时候,竟然缺货了...昨天监考,实在无聊,就上网看电子书了,一天就看完了,看得有点仓促,所以理解估计不深. 1.刘帅: ...
- 【CSAPP笔记】1. 位、字节、整型
<Computer Systems a Programmer's Perspective>,机械工业出版社.中文译名<深入理解计算机系统>.作者:(美)Randal E.Bry ...
- Gradle入门(2):构建简介
基本概念 在Gradle中,有两个基本概念:项目和任务.请看以下详解: 项目是指我们的构建产物(比如Jar包)或实施产物(将应用程序部署到生产环境).一个项目包含一个或多个任务. 任务是指不可分的最小 ...
- Head First Java & final
- keil c51笔记
第一章 Keil C51开发系统基本知识 第一节 系统概述 Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上.结构性.可读性. ...
- mac上查找nginx安装位置
在终端输入: nginx -V 查看nginx版本及安装的本地位置 ngxin -v 查看nginx版本(此方法依然可以检测是否安装某一软件,如git,hg等)
- Enterprise Library 4.1 参考源码索引
http://www.projky.com/entlib/4.1/Microsoft/Practices/EnterpriseLibrary/AppSettings/Configuration/Des ...
- python下的Box2d物理引擎的配置
/******************************* I come back! 由于已经大四了,正在找工作 导致了至今以来第二长的时间内没有更新博客.向大家表示道歉 *********** ...
- Scrum Meeting Beta - 10
Scrum Meeting Beta - 10 NewTeam 2017/12/11 地点:新主楼F座二楼 任务反馈 团队成员 完成任务 计划任务 安万贺 完成了作业详情的本地存储Issue #165 ...