• A - Chinchirorin">A - Chinchirorin
  • B - AtCoder Condominium">B - AtCoder Condominium
  • C - Friends and Travel costs">C - Friends and Travel costs
  • D - Pond">D - Pond

    补题链接:Here

    A - Chinchirorin

    给出 AtCoder Beginner Contest 203 (A~D,玄学二分场) - 图1 三个正整数,现请打印各种情况的答案:

    • AtCoder Beginner Contest 203 (A~D,玄学二分场) - 图2 ,输出一个即可
    • AtCoder Beginner Contest 203 (A~D,玄学二分场) - 图3 或者 AtCoder Beginner Contest 203 (A~D,玄学二分场) - 图4 或者 AtCoder Beginner Contest 203 (A~D,玄学二分场) - 图5 输出不一样的值即可
    • 三个数均不同,输出 AtCoder Beginner Contest 203 (A~D,玄学二分场) - 图6

    水题(RioTian是个连水题的都WA2发的FW….)

    1. void solve() {
    2. int a, b, c;
    3. cin >> a >> b >> c;
    4. if (a == b) cout << c << "\n";
    5. else if (b == c) cout << a << "\n";
    6. else if (a == c) cout << b << "\n";
    7. else cout << "0\n";
    8. }

    B - AtCoder Condominium

    包租婆有一个 AtCoder Beginner Contest 203 (A~D,玄学二分场) - 图7 层,每层 AtCoder Beginner Contest 203 (A~D,玄学二分场) - 图8 个房间的出租房,每个房间的房号:AtCoder Beginner Contest 203 (A~D,玄学二分场) - 图9#card=math&code=i0j%28i%5Cin%5B1%2Cn%5D%2Cj%5Cin%5B1%2Cj%5D%29)

    求房号累计和


    模拟题意即可

    1. void solve() {
    2. int n, k;
    3. cin >> n >> k;
    4. int sum = 0;
    5. for (int i = 1; i <= n; ++i)
    6. for (int j = 1; j <= k; ++j)
    7. sum += (i * 100 + j);
    8. cout << sum ;
    9. }

    C - Friends and Travel costs

    太郎决定去旅行,但他只有 AtCoder Beginner Contest 203 (A~D,玄学二分场) - 图10 元钱,每走过一个村庄要给 AtCoder Beginner Contest 203 (A~D,玄学二分场) - 图11 块钱,但太郎有 AtCoder Beginner Contest 203 (A~D,玄学二分场) - 图12 个朋友,如果太郎经过他朋友居住的村子的话会得到 AtCoder Beginner Contest 203 (A~D,玄学二分场) - 图13 元钱作为旅费的补充

    请问太郎最远能到达多远的村子(输出村子号),

    注意太郎从 AtCoder Beginner Contest 203 (A~D,玄学二分场) - 图14 号村子出发


    模拟,如果 AtCoder Beginner Contest 203 (A~D,玄学二分场) - 图15 则累加 AtCoder Beginner Contest 203 (A~D,玄学二分场) - 图16

    写法上用 STL 优化

    1. using ll = long long;
    2. void solve() {
    3. ll n, k; cin >> n >> k;
    4. vector<pair<ll, ll>>v(n);
    5. for (ll i = 0; i < n; ++i)
    6. cin >> v[i].first >> v[i].second;
    7. sort(v.begin(), v.end());
    8. for (auto x : v) {
    9. if (x.first > k)break;
    10. k += x.second;
    11. }
    12. cout << k;
    13. }

    D - Pond

    【题意待补充】


    玄学二分+玄学前缀和

    1. const int N = 1000;
    2. int A[800][800];
    3. int S[801][801];
    4. void solve() {
    5. int N, K;
    6. cin >> N >> K;
    7. for (int i = 0; i < N; i++)for (int j = 0; j < N; j++)cin >> A[i][j];
    8. int L = 0, R = 1e9 + 1;
    9. while (R - L > 1) {
    10. int mid = (L + R) / 2;
    11. for (int i = 0; i < N; i++)for (int j = 0; j < N; j++)S[i + 1][j + 1] = mid <= A[i][j];
    12. for (int i = 1; i <= N; i++)for (int j = 1; j <= N; j++) {
    13. S[i][j] += S[i - 1][j] + S[i][j - 1] - S[i - 1][j - 1];
    14. }
    15. bool fn = false;
    16. for (int i = K; i <= N; i++)for (int j = K; j <= N; j++) {
    17. if (S[i][j] - S[i - K][j] - S[i][j - K] + S[i - K][j - K] <= K * K / 2)fn = true;
    18. }
    19. if (fn)R = mid;
    20. else L = mid;
    21. }
    22. cout << L << endl;
    23. }

    E,F 由于蓝桥杯暂不填坑