Light oj 1048Conquering Keokradong
2016-04-22 07:15
369 查看
J - Conquering Keokradong
Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%lld & %llu
Submit
Status
Practice
LightOJ 1048
Description
This winter we are going on a trip to Bandorban. The main target is to climb up to the top of Keokradong. So, we will use a trail. The trail is a continuous marked footpath that goes from Bandorban to Keokradong.
Part of the experience is also the route planning of the trip. We have a list of all possible campsites that we can use along the way and we want to do this trip so that we only stop K nights to camp. We also know in advance the distance between consecutive
campsites and we are only allowed to camp at a campsite. Our goal is to plan the trip so that we minimize the maximum amount of walking done in a single day. In other words, if our trip involves 2 nights (3 days of walking), and we walk 9, 10, 5 miles on each
day respectively, the cost (maximum amount of walking done in one day) is 10. Another schedule that involves walking 9, 6, 9 miles on each day has cost 9.
Given the distances between N consecutive campsites of a trail and given the number of nights for your trip, K, your task is to devise a camping strategy for the specified trail such that it minimizes the maximum amount of walking done in a single day. Note
that the first distance value given is the distance from our start-point of the trail to our 1st campsite, and the last distance value given is the distance from our Nth campsite to our end-point of the trail.
Input
Input starts with an integer T (≤ 200), denoting the number of test cases.
Each case contains of two integers, the number of campsites, N (1 ≤ N ≤ 1000) and the number of nights of the trip, K (1 ≤ K ≤ min(N, 300)). The following N + 1 lines indicate the distance in miles between consecutive campsite locations. All the integers will
be positive and less than 10000.
Output
For each case of input you have to print the case number and the minimized cost as described above. Then print K+1 lines, each containing the amount of distance covered in ith day. As there can be many solutions, the primary target is to find the one which
ensures that each day we have to walk some distance. For ties, print the one where the distance covered in first day is maximum, then the distance covered in second day is maximum and so on.
Sample Input
1
4 3
7
2
6
4
5
Sample Output
Case 1: 8
7
8
4
5
和上一个一样,,,二分比较,多一次输出,,,,一定要输出m+1组和。。。
代码:
Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%lld & %llu
Submit
Status
Practice
LightOJ 1048
Description
This winter we are going on a trip to Bandorban. The main target is to climb up to the top of Keokradong. So, we will use a trail. The trail is a continuous marked footpath that goes from Bandorban to Keokradong.
Part of the experience is also the route planning of the trip. We have a list of all possible campsites that we can use along the way and we want to do this trip so that we only stop K nights to camp. We also know in advance the distance between consecutive
campsites and we are only allowed to camp at a campsite. Our goal is to plan the trip so that we minimize the maximum amount of walking done in a single day. In other words, if our trip involves 2 nights (3 days of walking), and we walk 9, 10, 5 miles on each
day respectively, the cost (maximum amount of walking done in one day) is 10. Another schedule that involves walking 9, 6, 9 miles on each day has cost 9.
Given the distances between N consecutive campsites of a trail and given the number of nights for your trip, K, your task is to devise a camping strategy for the specified trail such that it minimizes the maximum amount of walking done in a single day. Note
that the first distance value given is the distance from our start-point of the trail to our 1st campsite, and the last distance value given is the distance from our Nth campsite to our end-point of the trail.
Input
Input starts with an integer T (≤ 200), denoting the number of test cases.
Each case contains of two integers, the number of campsites, N (1 ≤ N ≤ 1000) and the number of nights of the trip, K (1 ≤ K ≤ min(N, 300)). The following N + 1 lines indicate the distance in miles between consecutive campsite locations. All the integers will
be positive and less than 10000.
Output
For each case of input you have to print the case number and the minimized cost as described above. Then print K+1 lines, each containing the amount of distance covered in ith day. As there can be many solutions, the primary target is to find the one which
ensures that each day we have to walk some distance. For ties, print the one where the distance covered in first day is maximum, then the distance covered in second day is maximum and so on.
Sample Input
1
4 3
7
2
6
4
5
Sample Output
Case 1: 8
7
8
4
5
和上一个一样,,,二分比较,多一次输出,,,,一定要输出m+1组和。。。
代码:
#include<cstdio> #include<cstring> #include<algorithm> using namespace std; int n,m,shu[1050]; int zhao(int xx) { bool fafe=true; int s=0,ge=1; for (int i=1;i<=n;i++) { if (s+shu[i]>xx){ ge++; s=shu[i]; } else s+=shu[i]; } if (ge<=m) return true; else return false; } void zh(int xx) { int s=0,ge=1; bool fafe=false; int p=m; for (int i=1;i<=n;i++) { if (fafe) { printf("%d\n",shu[i]); continue; } if (s+shu[i]<=xx&&n-i==p-1) { s+=shu[i]; // printf("%d %d 666\n",i,s); printf("%d\n",s); fafe=true; continue; } else if (s+shu[i]>xx){ ge++; printf("%d\n",s); p--; s=shu[i]; } else s+=shu[i]; } if (!fafe) printf("%d\n",s); } int main() { int t;scanf("%d",&t); for (int ca=1;ca<=t;ca++) { scanf("%d%d",&n,&m); n++;m++; int le=0,mid,ri=0,ans; for (int i=1;i<=n;i++) { scanf("%d",&shu[i]); le=max(le,shu[i]); ri+=shu[i]; } while (ri>=le) { mid=(ri+le)/2; if (zhao(mid)) { ans=mid; ri=mid-1; } else { le=mid+1; } } printf("Case %d: %d\n",ca,ans); zh(ans); } return 0; }
相关文章推荐
- mosquitto 设置用户和密码
- HDU 1711 Number Sequence
- 300. Longest Increasing Subsequence
- Do not request Window.FEATURE_SUPPORT_ACTION_BAR
- 关于WPF的Button 的click事件调用 code UI 代码的示例(有益于快速的自动化)
- data-model 简单介绍
- 简单日历封装
- Deque 容器
- Queue容器
- Xcode中buildSetting参数设置与学习
- 在iOS 8中使用UIAlertController
- mysql_query返回false原因
- Java基础-break,continue,return
- iOS开发系列--UITableView全面解析
- UE4:编辑器中显示物体包围框
- 十六进制string转换UIColor -备用
- HDU - 1159 Common Subsequence
- burpsuite中的几款插件推荐
- UVA_10534_Wavio Sequence
- This warning can be disabled by using the command line flag -Dcom.android.build.gradle.overridePath