zoukankan      html  css  js  c++  java
  • Loj #2036. 「SHOI2015」自动刷题机

    link : https://loj.ac/problem/2036

    这个显然具有单调性,N小的话更容易A题,不仅因为A一次题减少的代码,并且A题的下限也低。

    所以直接上二分就行了,注意上限一定不要设小,不然容易gg。

    #include<bits/stdc++.h>
    #define ll long long
    #define maxn 100005
    using namespace std;
    int a[maxn],n,K;
    ll l,r,mid,le,ri;
    
    inline int calc(){
    	int ans=0;
    	ll now=0;
    	for(int i=1;i<=n;i++){
    		now+=(ll)a[i];
    		if(now<0) now=0;
    		else if(now>=mid) now=0,ans++;
    	}
    	return ans;
    } 
    
    int main(){
    	scanf("%d%d",&n,&K);
    	for(int i=1;i<=n;i++) scanf("%d",a+i);
    	
    	le=1ll<<62,ri=-(1ll<<62);
    	
    	l=1,r=n*(ll)(1ll<<30);
    	while(l<=r){
    		mid=l+r>>1;
    		if(calc()>=K) ri=mid,l=mid+1;
    		else r=mid-1;
    	}
    	
    	l=1,r=n*(ll)(1ll<<30);
    	while(l<=r){
    		mid=l+r>>1;
    		if(calc()<=K) le=mid,r=mid-1;
    		else l=mid+1;
    	}
    	
    	if(le<=ri) printf("%lld %lld
    ",le,ri);
    	else puts("-1");
    	
    	return 0;
    }
    

      

  • 相关阅读:
    继承与多态
    本周总结
    总结
    周总结
    周总结
    第三周总结
    .......
    .....
    ....
    ....
  • 原文地址:https://www.cnblogs.com/JYYHH/p/8524973.html
Copyright © 2011-2022 走看看