Maratona Brasileira de Popcorn( 二分答案+暴力 )
Posted pengge666
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Maratona Brasileira de Popcorn( 二分答案+暴力 )相关的知识,希望对你有一定的参考价值。
题意:输入三个数n,c,t 。 桌子上有n堆爆米花,每一堆有ai个, 现在有c个人一起吃爆米花,每人每分钟最多能吃t个爆米花,但有两个规定:1.一堆爆米花只能一个人吃, 2.每个人只能吃连续的若干堆爆米花。
AC代码:
1 #include<bits/stdc++.h> 2 3 using namespace std; 4 #define int long long 5 #define N 100009 6 #define inf 1<<30 7 int arr[N]; 8 signed main(){ 9 int n,m,k; 10 cin>>n>>m>>k;int right=0; 11 for(int i=1;i<=n;i++){ 12 scanf("%lld",&arr[i]); 13 right+=arr[i]; 14 } 15 int left=1; 16 int ans=0; 17 while(left<=right){ 18 int mid=(left+right)/2; 19 int cnt=1;// 注意开始人数为1 20 int temp=k*mid; 21 int sum=0; 22 for(int i=1;i<=n;i++){ 23 if(arr[i]>temp) 24 { 25 cnt=inf; 26 break; 27 } 28 sum+=arr[i]; 29 if(sum>temp){ 30 cnt++; 31 sum=arr[i]; 32 } 33 } 34 if(cnt>m){ 35 left=mid+1; 36 }else{ 37 ans=mid; 38 right=mid-1; 39 } 40 } 41 printf("%lld ",ans); 42 return 0; 43 } 44 45 /* 46 5 3 4 47 5 8 3 10 7 48 */
以上是关于Maratona Brasileira de Popcorn( 二分答案+暴力 )的主要内容,如果未能解决你的问题,请参考以下文章