1048 - Conquering Keokradong
Time Limit: 1 second(s) | Memory Limit: 32 MB |
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 |
Output for Sample Input |
1 4 3 7 2 6 4 5 |
Case 1: 8 7 8 4 5 |
1 #include<stdio.h> 2 #include<algorithm> 3 #include<iostream> 4 #include<string.h> 5 #include<queue> 6 #include<stack> 7 #include<set> 8 #include<math.h> 9 using namespace std; 10 int ans[2000]; 11 int uu[2000]; 12 bool check(int k,int n,int m) 13 { 14 int i,j; 15 int sum=0; 16 int cnt=1; 17 for(i=0; i<=n; i++) 18 { 19 if(sum+ans[i]>k) 20 { 21 uu[cnt-1]=sum; 22 sum=ans[i]; 23 cnt++; 24 } 25 else if(sum+ans[i]<=k) 26 { 27 sum+=ans[i]; 28 } 29 }uu[cnt-1]=sum; 30 if(m>=cnt) 31 return true; 32 else return false; 33 } 34 int main(void) 35 { 36 int i,j,k; 37 int s; 38 scanf("%d",&k); 39 for(s=1; s<=k; s++) 40 { memset(uu,0,sizeof(uu)); 41 int n; 42 int m; 43 int maxx=0; 44 int sum=0; 45 scanf("%d %d",&n,&m); 46 for(i=0; i<=n; i++) 47 { 48 scanf("%d",&ans[i]); 49 maxx=max(maxx,ans[i]); 50 sum+=ans[i]; 51 } 52 int l=maxx; 53 int r=sum; 54 int answer=-1; 55 while(l<=r) 56 { 57 int mid=(l+r)/2; 58 bool us=check(mid,n,m+1); 59 if(us) 60 { 61 answer=mid; 62 r=mid-1; 63 } 64 else l=mid+1; 65 } 66 printf("Case %d:",s); 67 printf(" %d\n",answer); 68 check(answer,n,m); 69 int ac=0; sum=0; 70 int cnt=1; 71 for(i=0;i<=n;i++) 72 { 73 if(sum+ans[i]>answer||(n-i-1)<m-cnt) 74 { 75 uu[cnt-1]=sum; 76 sum=ans[i]; 77 cnt++; 78 } 79 else 80 { 81 sum+=ans[i]; 82 } 83 } 84 uu[cnt-1]=sum; 85 for(i=0;i<m+1;i++) 86 { 87 printf("%d\n",uu[i]); 88 } 89 } 90 return 0; 91 }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· PPT革命!DeepSeek+Kimi=N小时工作5分钟完成?
· What?废柴, 还在本地部署DeepSeek吗?Are you kidding?
· DeepSeek企业级部署实战指南:从服务器选型到Dify私有化落地
· 程序员转型AI:行业分析
· 重磅发布!DeepSeek 微调秘籍揭秘,一键解锁升级版全家桶,AI 玩家必备神器!