4 条题解

  • 1
    @ 2024-5-24 15:15:40
    n,m=map(int,input().split())
    a=list(map(int,input().strip().split()))
    for i in range(n-1):
        for j in range(i+1,n):
            if a[j]<a[i]:
                a[j],a[i]=a[i],a[j]
    l=a[0];r=a[n-1]
    def check(x):
        ans=0
        for i in range(n):
            if a[i]>x:
                ans+=a[i]-x
        if ans>=m:
            return True
        else:
            return False
    while l<=r:
        mid=(l+r)//2
        if check(mid)==True:
            l=mid+1
        else:
            r=mid-1
    print(l-1)
    
    • @ 2024-5-24 15:19:11

      寄了洗很遗憾

  • 1
    @ 2023-9-28 13:10:55

    没有标签根本想不到用对分,慢慢砍,直接无脑冲

    (n,M)=map(int,input().split(' '))
    s=list(map(int,input().split(' ')))
    s.sort(reverse=True)
    m=0;x=1
    while m<M:
        if s[x-1]==s[x]:
            x+=1
        else:
            for i in range(x):
                s[i]=s[i]-1
            m=m+x
    print(s[x-1])
    
    • 1
      @ 2023-2-7 15:31:26
      def cut(h,l):
          ans = 0
          for i in l:
              if h<=i:
                  ans+=(i-h)
          return ans
      
      n,m = map(int,input().split())
      l = list(map(int,input().split()))
      h = 1
      while True:
          if cut(h,l)>=m and cut(h+1,l)<m:
              break
          h+=1
      
      print(h)
      
      • 0
        @ 2023-3-17 19:10:21

        太水了,甚至不用二分(doge)

        #include <bits/stdc++.h>
        
        using namespace std;
        
        
        
        int tn[10000];
        
        int m,n,al=0,am=0;
        
        
        
        int find(int h)
        
        {
        
            for (int i=n;i>=1;i--){
        
                if (tn[i]<=h){
        
                    return n-i;
        
                }
        
            }
        
            return n;
        
        }//锯子往下拉一米
        
        
        
        
        
        signed main(){
        
            ios::sync\_with\_stdio(0); cin.tie(0);
        
            cin>>n>>m;
        
            for (int i=1;i<=n;i++){
        
                cin>>tn[i];
        
                al+=tn[i];
        
            }//读数据
        
            sort(tn+1,tn+n+1);//排序
        
            int n0=tn[n];
        
            am=0;
        
            while(am<m){
        
                am+=find(n0--);//一直下拉锯子直到木头够用
        
            }
        
            cout<<n0+1;
        
        }
        
        • 1

        信息

        ID
        805
        时间
        1000ms
        内存
        256MiB
        难度
        3
        标签
        递交数
        461
        已通过
        249
        上传者