zoukankan      html  css  js  c++  java
  • POJ3273Monthly Expense

    今天晚上cl叫我写的,我打开一看,一开始没什么思路,感觉很像DP,后来他说就二分就可以了。然后我突然想到这不就是四省赛热身赛的题么,而且白书上也有写题解。。o(︶︿︶)o 唉,题没做还是不熟悉。

    因为是把天数化成连续的几段,所以把答案进行二分查找,每个答案可以用线性的时间判断对错,因此总的时间是nlogn。

    #include <cstdio>
    #include <cstring>
    #include <iostream>
    #define MAXN 100050
    using namespace std;
    
    int g[MAXN];
    int s;
    int N,M;
    
    bool solve(int m){
    	int len=1;
    	int tt=0;
    	for(int i=0;i<N;i++){
    		if(tt+g[i]<=m)
    		{
    			tt=tt+g[i];
    		}
    		else
    		{
    			if(g[i]>m)return false;
    			tt=g[i];len++;
    		}
    	}
    	if(len<=M)
    		return true;
    	else return false;
    }
    int main(){
    
    	while(scanf("%d%d",&N,&M)==2){
    	s=0;
    	for(int i=0;i<N;i++)
    	{
    		scanf("%d",&g[i]);
    		s+=g[i];
    	}
    	int l=0,r=s;
    	int ans=0;
    	while(l<=r){
    		int mid=(l+r)>>1;
    		if(solve(mid)){
    			ans=mid;
    			r=mid-1;
    		}
    		else{
    			l=mid+1;
    		}
    
    	}
    	printf("%d\n",ans);
    	}
    	return 0;
    }
    

      

  • 相关阅读:
    BZOJ2456
    BZOJ2648
    POJ1639
    LOJ6003
    LOJ6002
    LOJ6001
    LOJ116
    POJ2594
    BZOJ4554
    JS事件 加载事件(onload)注意:1. 加载页面时,触发onload事件,事件写在<body>标签内。 2. 此节的加载页面,可理解为打开一个新页面时。
  • 原文地址:https://www.cnblogs.com/arbitrary/p/2622470.html
Copyright © 2011-2022 走看看