A - I Scream

根据 奶脂率 和 乳脂率 判断是何种冰淇淋

  1. int main() {
  2. ios_base::sync_with_stdio(false), cin.tie(0);
  3. int a, b;
  4. cin >> a >> b;
  5. a = a + b;
  6. if (a >= 15 && b >= 8) cout << 1;
  7. else if (a >= 10 && b >= 3)
  8. cout << 2;
  9. else if (a >= 3)
  10. cout << 3;
  11. else
  12. cout << 4;
  13. return 0;
  14. }

B - Job Assignment

分开存储,循环判断。如果是同一个人完成任务则总时间累计

  1. int main() {
  2. ios_base::sync_with_stdio(false), cin.tie(0);
  3. vector<int> a, b;
  4. int n, ans = 1e9 + 5;
  5. cin >> n;
  6. a.resize(n);
  7. b.resize(n);
  8. for (int i = 0; i < n; ++i) {
  9. cin >> a[i] >> b[i];
  10. }
  11. for (int i = 0; i < n; ++i)
  12. for (int j = 0; j < n; ++j) {
  13. if (i == j) ans = min(ans, a[i] + b[j]);
  14. else
  15. ans = min(ans, max(a[i], b[j]));
  16. }
  17. cout << ans;
  18. return 0;
  19. }

C - Squared Error

公式推导

AtCoder Beginner Contest 194 Editorial - 图1%5E2%20%5Cnotag%20%5C%5C%0A%3D%7B%7D%26%20%20%5Cfrac1%7B2%7D(%E2%88%91%7Bi%20%3D%201%7D%5En%E2%88%91%7Bj%20%3D%201%7D%5E%7Bn%7D(Ai%20-%20A_j)%5E2)%20%20%26%20%5Ctext%7Bbecause%20(%24A_i%20-%20A_i)%5E2%20%3D%200%24%7D%20%20%5C%5C%0A%3D%7B%7D%26%20%20%5Cfrac1%7B2%7D(%E2%88%91%7Bi%20%3D%201%7D%5En%E2%88%91%7Bj%20%3D%201%7D%5E%7Bn%7D(A_i%5E2%20-%20A_j%5E2-2A_iA_j))%20%5C%5C%0A%3D%7B%7D%26%20%20%5Cfrac1%7B2%7D(2N%E2%88%91%7Bi%20%3D%201%7D%5EnAi%5E2%20-%202%E2%88%91%7Bj%20%3D%201%7D%5En(Ai%E2%88%91%7Bj%20%3D%201%7D%5EnAj))%20%5C%5C%0A%3D%7B%7D%26%20%20N%E2%88%91%7Bi%20%3D%201%7D%5EnAi%5E2%20-%20(%E2%88%91%7Bi%20%3D%201%7D%5EnAi%5E2)%2C%0A%5Cend%7Bgather%7D%0A#card=math&code=%5Cbegin%7Bgather%7D%0A%E2%88%91%7Bi%20%3D%202%7D%5En%E2%88%91%7Bj%20%3D%201%7D%5E%7Bi%20-%201%7D%28A_i%20-%20A_j%29%5E2%20%5Cnotag%20%5C%5C%0A%3D%7B%7D%26%20%20%5Cfrac1%7B2%7D%28%E2%88%91%7Bi%20%3D%201%7D%5En%E2%88%91%7Bj%20%3D%201%7D%5E%7Bn%7D%28A_i%20-%20A_j%29%5E2%29%20%20%26%20%5Ctext%7Bbecause%20%28%24A_i%20-%20A_i%29%5E2%20%3D%200%24%7D%20%20%5C%5C%0A%3D%7B%7D%26%20%20%5Cfrac1%7B2%7D%28%E2%88%91%7Bi%20%3D%201%7D%5En%E2%88%91%7Bj%20%3D%201%7D%5E%7Bn%7D%28A_i%5E2%20-%20A_j%5E2-2A_iA_j%29%29%20%5C%5C%0A%3D%7B%7D%26%20%20%5Cfrac1%7B2%7D%282N%E2%88%91%7Bi%20%3D%201%7D%5EnAi%5E2%20-%202%E2%88%91%7Bj%20%3D%201%7D%5En%28Ai%E2%88%91%7Bj%20%3D%201%7D%5EnAj%29%29%20%5C%5C%0A%3D%7B%7D%26%20%20N%E2%88%91%7Bi%20%3D%201%7D%5EnAi%5E2%20-%20%28%E2%88%91%7Bi%20%3D%201%7D%5EnA_i%5E2%29%2C%0A%5Cend%7Bgather%7D%0A)

注意用 long long ,溢出了WA了我3次….

  1. using ll = long long;
  2. int main() {
  3. ios_base::sync_with_stdio(false), cin.tie(0);
  4. int n;
  5. cin >> n;
  6. vector<ll> a(n);
  7. ll sos = 0, sum = 0; // sos sum of squares
  8. for (ll &x : a) cin >> x;
  9. for (int i = 0; i < n; i++) {
  10. sos += a[i] * a[i];
  11. sum += a[i];
  12. }
  13. cout << n * sos - sum * sum << endl;
  14. return 0;
  15. }

D - Journey

按题意来即可,注意输出位数来保持精度

  1. int main() {
  2. ios_base::sync_with_stdio(false), cin.tie(0);
  3. int n;
  4. cin >> n;
  5. double cnt = 0.0;
  6. for (int i = 1; i < n; ++i) {
  7. cnt += 1.0 * n / (n - i);
  8. }
  9. cout << setprecision(20) << cnt << "\n";
  10. return 0;
  11. }

E - Mex Min

熟悉的定义…

  1. using ll = long long;
  2. ll n, m, a[5000005], s[5000005], mina, temp = 1;
  3. int main() {
  4. ios_base::sync_with_stdio(false), cin.tie(0);
  5. cin >> n >> m;
  6. for (int i = 1; i <= n; i++) {
  7. cin >> a[i];
  8. if (i <= m) s[a[i]]++;
  9. }
  10. for (int i = 0; i <= n; i++) {
  11. if (s[i] == 0) {
  12. mina = i;
  13. break;
  14. }
  15. }
  16. for (int i = m + 1; i <= n; i++) {
  17. s[a[temp]]--;
  18. s[a[temp + m]]++;
  19. if (a[temp] < mina && s[a[temp]] == 0) {
  20. // cout<<a[temp];
  21. mina = min(mina, a[temp]);
  22. }
  23. temp++;
  24. }
  25. cout << mina;
  26. return 0;
  27. }

F - Digits Paradise in Hexadecimal

不会,先记录下dalao们的解法

__builtin_popcount() 用于计算一个 32 位无符号整数有多少个位为1

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define rep(i, n) for (int i = 0; i < (n); i++)
  4. using ll = long long;
  5. constexpr int MOD = 1e9 + 7;
  6. long long dp[2][17];
  7. string s;
  8. int n, k, m, a, e;
  9. int main() {
  10. cin >> s >> k;
  11. for (char c : s) {
  12. a = '0' <= c && c <= '9' ? c - '0' : c - 'A' + 10;
  13. rep(i, 16) dp[e][i + 1] =
  14. (dp[e ^ 1][i] * (16 - i) + dp[e ^ 1][i + 1] * (i + 1)) % MOD;
  15. dp[e][1] += m ? 15 : a - 1;
  16. if (m) {
  17. int t = __builtin_popcount(m), b1 = t - __builtin_popcount(m >> a);
  18. dp[e][t + 1] += a - b1;
  19. dp[e][t] += b1;
  20. }
  21. m |= 1 << a;
  22. e ^= 1;
  23. }
  24. dp[e ^ 1][__builtin_popcount(m)] += 1;
  25. cout << dp[e ^ 1][k] % MOD << endl;
  26. }