1 条题解

  • 0
    @ 2024-12-24 10:06:03

    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;
    }
    

    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
    1841
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者