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 纽约的更多相关文章

  1. U33405 纽约 (二分)

    [题目描述] 牧民 Azone 需要多次往返于两个草场之间运输家当.为了顺利转场,Azone 决定花费 w元津巴布韦币,购买一辆载重为 w 的汽车.共有 n 件家具需要搬运,每件家具的重量为 wi​  ...

  2. digitalocean纽约机房最先开通IPv6

    DigitalOcean是一家位于美国的云主机服务商,总部位于纽约,成立于2012年.DigitalOcean的服务器全部采用KVM架构,具体高性能处理能力,并且配备SSD固态硬盘,速度优异.每台设备 ...

  3. 使用ML.NET预测纽约出租车费

    有了上一篇<.NET Core玩转机器学习>打基础,这一次我们以纽约出租车费的预测做为新的场景案例,来体验一下回归模型. 场景概述 我们的目标是预测纽约的出租车费,乍一看似乎仅仅取决于行程 ...

  4. 纽约工作日志流水账 Day 1

    周六早上8:00从青岛登机,历经17个小时,终于在当地时间周六下午2点半到达目的地纽约.         被媳妇吐槽旁边坐了美女妹子,其实是个美国妹子,旁边人家还有男朋友,全程只和我说了2句话,Exc ...

  5. 用Java取指定时区的时间 北京时间,纽约时间,班加罗尔时间

    /** * 取北京时间 * @return */ public static String getBeijingTime(){ return getFormatedDateString(8); } / ...

  6. 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 ...

  7. GIS+=地理信息+行业+大数据——纽约公开11亿条出租车和Uber原始数据下载及分析

    一览众山小编辑团队 原文/ Todd Schneider 翻译/ 沈玮薇 陈翚 文献/ 蒋理 校核/ 众山小编辑/ 众山小 排版/ 徐颖 2014-2015 © 转载请注明:源自公众号"一览 ...

  8. 纽约LangeEylandt长岛LongIsland

    LangeEylandt n.长岛(美国) 纽约长岛 纽约长岛 (LongIsland)是北美洲在大西洋内的一个岛,最早追溯到十七世纪的1650年被命名为Lange Eylandt [1] ,位于北美 ...

  9. 《美国纽约摄影学院摄影教材》PDF教材

        下载地址: 美国纽约摄影学院摄影教材(上册).pdf 美国纽约摄影学院摄影教材(下册).pdf 欢迎你到纽约摄影学院来,我们急切地等待着开课,你们也在 跃跃欲试了.那就让我们马上开始吧! 你已 ...

随机推荐

  1. 实验三:跟踪分析Linux内核的启动过程

    实验三:跟踪分析Linux内核的启动过程 学号:20135114 姓名:王朝宪 注: 原创作品转载请注明出处   <Linux内核分析>MOOC课程http://mooc.study.16 ...

  2. 实验三— —敏捷开发与XP实践

    ---恢复内容开始--- java的第二个实验——JAVA面向对象程序设计 北京电子科技学院 实     验    报     告 课程:Java程序设计 班级:1352 姓名:林涵锦 学号:2013 ...

  3. 《JavaScript》数组Array

    构造函数 var arr1 = new Array();// [] 空数组 var arr2 = new Array(3);//定义长度,0是空数组 var arr3 = new Array(1,2, ...

  4. 第一阶段Spring个人总结

    通过这一阶段的冲刺,我感到的是名义上的团队,而实际上却是一个人的事,每个人跟每个人都不一样,都有自己的特点,总会出些不必要的麻烦. 还有团队的进展也是看不到什么东西,说实话,这次我并没有太多关注团队的 ...

  5. C# 打包

    开发环境:VS2010+SQL Server 2008 操作系统:win7_32bit 旗舰版 开发语言:C# 项目名称:学生寄宿管理系统 下面开始介绍:如何给windows应用程序打包? 第一步: ...

  6. 每天学一点easyui②

    Form插件 <!DOCTYPE html> <html>       <head>         <meta charset="utf-8&qu ...

  7. php----函数大全

    字符串函数 数组函数 数学函数

  8. Beta Scrum Day 4 — 听说

    听说

  9. “吃神么,买神么”的第一个Sprint计划(第六天)

    “吃神么,买神么”项目Sprint计划 ——5.26  星期二(第六天)立会内容与进度 摘要:logo最终出来了,,背景也出来了,可以开始将完成的部分放到同一个文件中,决定剩下的时间把昨晚的部分贴上去 ...

  10. 《软件工程和Python》第0周作业1

    写在前面的话 欢迎大家开始一段新的课程学习!从开博客开始吧.每次博客作业都会有评分,计入总成绩哦. 1.   截止日期 本次作业的提交截止时间:见老师要求 2.   作业要求 (1)建立个人技术博客和 ...