1 条题解

  • 0
    @ 2025-2-14 21:11:41

    C++ :

    #include<cstdio>
    #include<cstdlib>
    #include<iostream>
    #include<queue>
    using namespace std;
    int main()
    {
    	priority_queue<int>q;
    	int n,k;
    	cin>>n>>k;
    	int x;
    	for(int i=1;i<=n;++i)
    	{
    		cin>>x;
    		q.push(x);
    	}	
    	for(int i=1;i<=n-1;++i)
    	{
    		int sum=q.top();
    		q.pop();
    		sum=sum+q.top();
    		q.pop();
    		sum=sum/k;
    		q.push(sum);
    	}
    	
    	cout<<q.top();
    	return 0;
    }
    

    Pascal :

    var
       a:array[0..10000]of longint;
       n,s,i,k,p,j:longint;
    procedure qsort(l,r:longint);
    var
       i,j,mid,t:longint;
    begin
     i:=l;j:=r;
     mid:=a[(i+j) div 2];
     while i<=j do
      begin
       while(a[i]>mid)do inc(i);
       while(a[j]<mid)do dec(j);
        if i<=j then
         begin
          t:=a[i];a[i]:=a[j];a[j]:=t;
          inc(i);dec(j);
         end;
      end;
     if l<j then qsort(l,j);
     if i<r then qsort(i,r);
    end;
    begin
     readln(n,k);
     for i:=1 to n do read(a[i]);
     qsort(1,n);
     i:=1;
     repeat
      inc(i);
      a[i]:=(a[i-1]+a[i]) div k;
      s:=a[i];
      p:=n;
      for j:=i+1 to n do
       if s<a[j] then a[j-1]:=a[j] else begin p:=j-1;break;end;
      a[p]:=s;
     until i=n;
     writeln(a[n]);
    end.
    

    Java :

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.OutputStream;
    import java.io.PrintWriter;
    import java.util.PriorityQueue;
    import java.util.Queue;
    import java.util.StringTokenizer;
     
    public class Main {
    	public static void main(String[] args) {
    //		long sta = System.nanoTime();
     
    		InputStream is = System.in;
    		OutputStream os = System.out;
     
    		IN cin = new IN(is);
    		PrintWriter cout = new PrintWriter(os);
     
    		SO so = new SO();
    		so.solution(cin, cout);
     
    //		long end = System.nanoTime();
    //		cout.println("耗时:" + (double)(end-sta)/1e6 + "ms");
     
    		cout.close();
    	}
     
    	static final int MOD = (int)1e9 + 7;
    	//实际代码开始的类--------------------------------------------------
    	static class SO {
    		void solution(IN cin, PrintWriter cout) {
    			int n = cin.nextInt(), k = cin.nextInt();
    			Queue<Integer> pq = new PriorityQueue<Integer>((a1,a2)->a2-a1);
    			for(int i=0;i<n;++i) {
    				pq.add(cin.nextInt());
    			}
    			int cur = 0;
    			while(n>1) {
    				int a = pq.remove(), b = pq.remove();
    				cur = (a+b)/k;
    				pq.add(cur);
    				--n;
    			}
    			cout.println(pq.remove());
    		}//end solution
    	}//end SO
    	
    	//以下是快读部分
    	static class IN {
    		private BufferedReader reader;
    		private StringTokenizer tokenizer;
     
    		IN(InputStream is) {
    			reader = new BufferedReader(new InputStreamReader(is), 32768);
    			tokenizer = null;
    		}
    		
    		public String next() {
    			while (tokenizer == null || !tokenizer.hasMoreTokens()) {
    				try {
    					tokenizer = new StringTokenizer(reader.readLine());
    				} catch (IOException e) {
    					throw new RuntimeException(e);
    				}
    			}
    			return tokenizer.nextToken();
    		}
     
    		public int nextInt() {
    			return Integer.parseInt(next());
    		}
     
    		public long nextLong() {
    			return Long.parseLong(next());
    		}
     
    		public double nextDouble() {
    			return Double.parseDouble(next());
    		}
     
    	}
    }
    
    • 1

    信息

    ID
    711
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者