zoukankan      html  css  js  c++  java
  • P5815 [CQOI2010]扑克牌

    Lisa

    有非常显然的一点是这个题可以二分

    也可以不。

    我们可以首先用普通牌凑出尽可能多的幅,然后对于缺的情况缺一张用joker添就行了,缺两张或更多就用joker去完整的一副里换出所需要的东西

    二分的话思想也差不多

    二分了mid的时候,最多可以用mid张joker,

    然后结合上面的思想,缺了的用joker来搞

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    #include<queue>
    #include<stack>
    #include<map>
    #define int long long
    using namespace std;
    int n,m;
    int x;
    int a[60];
    bool check(int x){
    	int res=0;
    	int mm=min(x,m);
    	for(int i=1;i<=n;++i){
    		res+=(x>a[i]?x-a[i]:0);
    	}
    	return res<=mm;
    }
    signed main(){
    	scanf("%lld%lld",&n,&m);
    	int cnt=0;
    	for(int i=1;i<=n;++i){
    		scanf("%lld",&a[i]);
    	}
    	int l=1,r=750000000;
    	int ans;
    	while(l<=r){
    		int mid=(l+r)>>1;
    		if(check(mid)){
    			l=mid+1;
    			ans=mid;
    		}else{
    			r=mid-1;
    		}
    	}
    	cout<<ans;
    	return 0;
    }
    	
    
    
    
  • 相关阅读:
    设计模式——策略模式
    LeetCode
    平凡世界里的万千思绪
    LeetCode
    LeetCode
    LeetCode
    LeetCode
    LeetCode
    LeetCode
    LeetCode
  • 原文地址:https://www.cnblogs.com/For-Miku/p/15367535.html
Copyright © 2011-2022 走看看