Educational Codeforces Round 77 (Rated for Div. 2)
A. Heating (CF 1260 A) 题目大意:n组数据,每组数据有两个数c i 和sum i ,选择c i 个非负数a i ,使得$\sum ^{c_{i}}_{k=1}a_{k}\geq sum_{i}$,且最小化$\sum ^{c_{i}}_{k=1}a^{2}_{k}$,求最小值。 由均值不等式可知当每个a k =$\dfrac {sum_{i}}{c_{i}}$时有最小的$\sum ^{c_{i}}_{k=1}a^{2}_{k}$,但a i 需要整数,那我们先对前x个数取a+1,直到剩下的c i -x个数都取a时有$\sum ^{c_{i}}_{k=1}a_{i}=sum_{i}$,此时$\sum ^{c_{i}}_{k=1}a^{2}_{k}$最小。 1 #include <bits/stdc++.h> 2 using namespace std; 3 4 template <typename T> 5 void read(T &x) { 6 int s = 0, c = getchar(); 7 x = 0; 8 while (isspace(c)) c = getchar(); 9 if (c == 45) s = 1, c = getchar(); 10 while (isdigit(c)) x = (x << 3) + (x << 1) + (c ^