← 返回博客
/算法

AtCoder ABC424 解题报告

2 分钟阅读

AtCoder ABC424 解题报告

这篇文章位于 content/blog/atcoder/ 子目录,用于演示博客详情页对子目录 slug 的支持(URL 为 /blog/atcoder/abc424)。

A 题:签到

题意:读入一个整数并原样输出。注意用 long long 防止溢出:

#include <bits/stdc++.h>
using namespace std;

int main() {
  long long n;
  cin >> n;
  cout << n << '\n';
  return 0;
}

B 题:模拟

直接按题意模拟,复杂度 O(N):

for (int i = 0; i < n; i++) {
  if (check(i)) ans++;
}

C 题:前缀和优化

暴力会超时,用前缀和把区间查询降到 O(1):

vector<long long> pref(n + 1, 0);
for (int i = 0; i < n; i++) pref[i + 1] = pref[i] + a[i];

// 查询 [l, r]
long long sum = pref[r + 1] - pref[l];

小结

ABC 的难度梯度非常适合练手:A/B 保稳、C/D 练思维、E 之后挑战自我。保持每周一场,进步看得见。

加载中…