Sicily - 17958 - Algorithm Lectures 【找规律】
来源:互联网 发布:新手怎样做淘宝客 编辑:程序博客网 时间:2024/05/29 16:17
Ante and Goran are preparing N teams of young ambitious students for a student programming competition of students from University of Zagreb. Both of them have one algorithm they have to explain to each team. Of course, both can’t work with the same team at the same time and none of them can work with multiple teams simultaneously.
You are given the time it takes for each team to understand and implement an algorithm. Each algorithm lecture has to be done without interruption. Determine the minimal time required for Ante and Goran to do their lectures!
For additional explanation, consult the sample tests clarifications.
The first line of input contains the integer N, the number of teams.
The following line contains N space separated integers, where the ith integer denotes the time required for the ith team to understand and implement an algorithm.
All numbers in the input will belong to the interval [1, 3 * 105].
The first and only line of output must contain the required number from the task.
样例一:32 2 2样例二:34 1 2样例三:41 3 2 1
样例一:6样例二:8样例三:7
Clarification of the first example: Each team needs 2 units of time to understand and implement an algorithm. One of the possible schedules is that Ante gives his lectures to team 1, team 2 and team 3, respectively, and Goran to team 3, team 1 and team 2, respectively.
Clarification of the second example: One of the optimal schedules is that Ante gives lectures to team 2, team 3 and team 1, respectively, but with a pause lasting 1 unit of time between team 3 and team 1. Goran will give lectures to team 1, team 3 and team 2, respectively.
分析:为了尽量分开教学、减少冲突,我们可以先将序列降序排序,然后Ante老师从左到右上课,Goran老师从时间第二长的课开始从左到右上课,最后一节课上时间最长的课。我们会发现如下规律:
#include <cstdio>#include <iostream>using namespace std;int main (){ int n, x, maxn = -1; long long sum = 0, ans; scanf("%d", &n); for(int i=0; i<n; i++){ scanf("%d", &x); sum += x; if(maxn < x) { maxn = x; } } if(maxn <= sum - maxn) ans = sum; else ans = 2*maxn; printf("%lld\n", ans); return 0;}
- Sicily - 17958 - Algorithm Lectures 【找规律】
- sicily 1028之找规律
- CodeForces - 368C Sereja and Algorithm (找规律&模拟)
- 找规律
- 找规律!
- 找规律
- 找规律,
- 找规律
- 找规律
- 找规律
- 找规律
- 找规律
- 找规律
- 找规律
- 找规律
- 找规律
- sicily--1306. Sorting Algorithm
- Sicily 1306. Sorting Algorithm
- NYOJ 90 —— 求正整数n划分为若干个正整数的划分个数
- NYOJ 571 —— 各种划分数
- NYOJ 651 —— n划分为2个以上不同正整数的划分个数
- 卡特兰数
- NYOJ 1103 —— m划分为n个正整数的个数
- Sicily - 17958 - Algorithm Lectures 【找规律】
- NYOJ 742 —— 最大m段和 【区间DP】
- tyvj 1305 —— 长度不超过m的最大连续和 【前缀和+单调队列】
- Android 开发实战经验总结
- HDU 2746 ——Max Sum Plus Plus Plus 【dfs+带备忘 或 DP】
- Sicily - Water 【寻找规律】
- POJ 3783 ——Balls 【DP】
- Java集合类的继承关系
- HDU 1846 —— Brave Game