NC219917. Rating
描述
输入描述
第一行两个正整数 n,m,表示号的个数和比赛场数。
接下来一行 n 个整数,表示他每个号的 Rating。
之后 m 行,每行 1 个整数,表示小 L 的 Performance。
输出描述
对于每一个询问,输出一个实数表示答案,保留两位小数。
示例1
输入:
5 5 2000 2100 2200 2300 2350 1900 1500 2200 2700 2000
输出:
10900.00 10675.00 10912.50 11281.25 11231.25
说明:
对于 的数据, 。C++ 解法, 执行用时: 271ms, 内存消耗: 2684K, 提交时间: 2021-06-04 19:47:27
#include<bits/stdc++.h> using namespace std; priority_queue<double, vector<double>, greater<double>>q; int n, m; double x, y, su; signed main() { cin >> n >> m; while (n--) cin >> x, q.push(x), su += x; while (m--) cin >> x, y = q.top(), q.pop(), su -= y, y = (x + y) / 2, su += y, q.push(y), printf("%.2lf\n", su); }
pypy3 解法, 执行用时: 1016ms, 内存消耗: 54980K, 提交时间: 2021-06-04 18:56:12
import heapq n, m = map(int, input().split()) arr = list(map(int, input().split())) res = sum(arr) heapq.heapify(arr) for _ in range(m): p = int(input()) s = heapq.heappop(arr) res -= s s = (s + p) / 2 res += s heapq.heappush(arr, s) print("%.2f" % res)
Python3 解法, 执行用时: 1015ms, 内存消耗: 16272K, 提交时间: 2022-04-24 19:27:45
from heapq import * n,m = map(int,input().split()) arr = list(map(int, input().split())) ans = sum(arr) heapify(arr) for i in range(m): p = int(input()) s = heappop(arr) ans -= s s = (s + p) / 2 ans += s heappush(arr,s) print("%.2f" %ans)