AOJ 802.运输宝物

news/2024/7/23 11:23:01
G. 运输宝物
Time Limit: 1000 ms   Case Time Limit: 1000 ms   Memory Limit: 64 MB
Total Submission: 53   Submission Accepted: 22
Description
众所周知,“西瓜”是大名鼎鼎的江洋大盗。有一次他偷到了一批宝库。
这批宝物共有n个,他一共有k个箱子。他只能用这些箱子把这些宝物运出去,为了保证运输安全,他不会把两个以上的宝物装入同一个箱子(一个箱子只能装1个或者2个宝物)。这些宝物的大小分别是s(1)、s(2)、s(3)……s(n)。(题目给出的重量保证是非降序,即s(i-1)<=s(i) 对于任何i>1)。
装进宝物后,每个箱子的容量要大于或者等于所装的宝物大小之和。为了规格统一,这些箱子每个的容量要一致。为了降低运费,箱子的容量要尽可能小。“西瓜”想要知道,在能运走的情况下,箱子容量最小是多少。

 

Input
多组输入
先输入n和k (1≤n≤2·k≤100 000),n是宝物数量,k是箱子数量。
下一行输入空格分隔的n个整数, s1,s2,...,sn (1≤s1≤s2≤...≤sn≤1 000 000),代表这些宝物的重量。

 

Output
输出一个整数,代表这些箱子容量的最小值。

 

Sample Input
OriginalTransformed
4 3
2 3 5 9

 

Sample Output
OriginalTransformed
9

 

 只需将宝物按照从大到小装箱,然后再将剩下的宝物按照从大到小装入从小到大的箱子中

最后求出所有箱子中最大值即可

 

 1 #include <cstdio>
 2 #include <string>
 3 #include <cstring>
 4 #include <cmath>
 5 #include <memory>
 6 #include <stack>
 7 #include <queue>
 8 #include <set>
 9 #include <algorithm>
10 #include <map>
11 #include <vector>
12 using namespace std;
13  
14 #define debug 0
15  
16 /*
17 By:OhYee
18 Github:OhYee
19 Email:oyohyee@oyohyee.com
20 Blog:http://www.cnblogs.com/ohyee/
21 
22 かしこいかわいい?
23 エリーチカ!
24 要写出来Хорошо的代码哦~
25 */
26 #define REP(n) for(int o=0;o<n;o++)
27 const int maxn=100005;
28 const int maxk=50005;
29  
30 int n,k;
31 int s[maxn];
32  
33 bool Do(){
34     if(scanf("%d%d",&n,&k)==EOF)
35         return false;
36     REP(n)
37         scanf("%d",&s[o]);
38  
39     if(k>=n){
40         printf("%d\n",s[n-1]);
41         return true;
42     }
43  
44     int w[maxk];
45     REP(k){
46         w[o]=s[n-k+o];
47     }
48  
49     #if debug
50     REP(n)
51         printf("s[%d]=%d\n",o,s[o]);
52     printf("\n");
53     REP(k)
54         printf("w[%d]=%d\n",o,w[o]);
55     printf("\n");
56     #endif // debug
57  
58     for(int i=0;i<n-k;i++){
59         w[i]+=s[n-k-1-i];
60     }
61  
62  
63  
64     int M=w[0];
65     REP(k){
66         M=max(M,w[o]);
67     }
68     #if debug
69     REP(k)
70         printf("w[%d]=%d\n",o,w[o]);
71     #endif // debug
72     printf("%d\n",M);
73  
74     return true;
75  
76 }
77  
78  
79  
80 int main(){
81     #if debug
82     freopen("in.txt","r",stdin);
83     #endif
84     while(Do());
85     return 0;
86 }

 

转载于:https://www.cnblogs.com/ohyee/p/5375126.html


http://www.niftyadmin.cn/n/2496168.html

相关文章

最佳课题选择

最佳课题选择 时间限制: 1 Sec 内存限制: 128 MB题目描述 Matrix67要在下个月交给老师n篇论文&#xff0c;论文的内容可以从m个课题中选择。由于课题数有限&#xff0c;Matrix67不得不重复选择一些课题。完成不同课题的论文所花的时间不同。具体地说&#xff0c;对于某个课题i…

python正则表达式简述

正则表达式是一种用来匹配字符串的强有力的武器。它的设计思想是用一种描述性的语言来给字符串定义一个规则&#xff0c;凡是符合规则的字符串&#xff0c;我们就认为它“匹配”了&#xff0c;否则&#xff0c;该字符串就是不合法的。所以我们判断一个字符串是否是合法的Email的…

Cannot assign requested address的解决办法

今天想试一下redis&#xff0c;写了个程序&#xff0c;对redis连续进行100000访问&#xff0c;却出现以了Cannot assign requested address的问题&#xff0c;我起先是以为是redis的问题&#xff08;可能承受不了这么多访问量&#xff09;&#xff0c;可是redis被大家吹的那么N…

查询mysql版本 for mac_MySQL(InnoDB、MyISAM)和MongoDB的性能测试

软硬件环境MySQL版本&#xff1a;5.1.50&#xff0c;驱动版本&#xff1a;5.1.6(最新的5.1.13有很多杂七杂八的问题)MongoDB版本&#xff1a;1.6.2&#xff0c;驱动版本&#xff1a;2.1操作系统&#xff1a;Windows XP SP3(这个影响应该不大)CPU&#xff1a;Intel Core2 E6550 …

Linux命令 uname:查看系统与内核相关信息

zhzh:~$uname --help zhzh:~$uname -a //所有系统相关的信息 转载于:https://www.cnblogs.com/onelikeone/p/6917733.html

wcf 数据契约_【DDD】跟我一起学WCF(9)——WCF回调操作的实现

一、引言在上一篇文章中介绍了WCF对Session的支持&#xff0c;在这篇文章中将详细介绍WCF支持的操作。在WCF中&#xff0c;除了支持经典的请求/应答模式外&#xff0c;还提供了对单向操作、双向回调操作模式的支持&#xff0c;此外还有流操作的支持。接下来将详细介绍下这几种操…

python内部常用模块

1.datetimedatetime是Python处理日期和时间的标准库。获取当前日期和时间我们先看如何获取当前日期和时间&#xff1a;>>> from datetime import datetime>>> now datetime.now() # 获取当前datetime>>> print(now)2015-05-18 16:28:07.198690>…

mysql的right+join_MySQL右连接(RIGHT JOIN)

在本教程中&#xff0c;您将学习如何使用MySQL RIGHT JOIN来查询来自两个或多个表中的数据。1. MySQL RIGHT JOIN子句介绍MySQL RIGHT JOIN子句类似于子句&#xff0c;除了表的处理相反以外。以下语句使用RIGHT JOIN子句从两个表&#xff1a;t1和t2中查询数据&#xff1a;SELEC…