专栏文章

2025-10-18模拟赛总结

生活·游记参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@minjckvg
此快照首次捕获于
2025/12/02 03:21
3 个月前
此快照最后确认于
2025/12/02 03:21
3 个月前
查看原文

前言

是捆绑😯 我们没救了😨

A

签到题😙。
考试时一直过不了大样例😡,调了一个多小时🥵,后来发现是贡献算错了😭。
我们发现所有数互不相同,且每次修改只会增大😄。考虑记录下每一行的最大值及其位置,修改时直接更新然后算贡献即可。
其实还有一种更简单的做法🤔,直接 O(qmin{n,m})\mathcal{O}(q \min\{n, m\}) 暴力修改🙂,最坏时间复杂度 O(qnm)\mathcal{O}(q \sqrt{nm}),甚是巧妙👍👍👍
展示一下我的考场代码😁:
CPP
#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 5;
int n, m, q, x[N][2], y[N][2], s, c[N][2];
bool C(int i, int j) {
  return x[i][1] == j && y[j][1] == i;
}
int main() {
  cin.tie(0)->sync_with_stdio(0);
  cin >> n >> m >> q;
  for (int i = 1; i <= n; i++)
    for (int j = 1, w; j <= m; j++) {
      cin >> w;
      w > x[i][0] && (x[i][0] = w, x[i][1] = j);
      w > y[j][0] && (y[j][0] = w, y[j][1] = i);
    }
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= m; j++) s += C(i, j);
  for (int i, j, w; q; q--) {
    cin >> i >> j >> w;
    bool f = !C(i, j);
    w > x[i][0] && (x[i][1] != j && (s -= C(i, x[i][1])), x[i][0] = w, x[i][1] = j);
    w > y[j][0] && (y[j][1] != i && (s -= C(y[j][1], j)), y[j][0] = w, y[j][1] = i);
    cout << (s += f && C(i, j)) << "\n";
  }
  return 0;
}

T2

我是祝睿融😍!这么祝睿融的题都没想出来😭😭😭
只写出了 p=1p = 1 的情况😪,拼尽全力无法战胜 p=2p = 2 的情况了😣
最后就只拿到了 p=1p = 14040 分😫
😒😒😒😒😒😒😒😒😒

T3

最开始写了个假贪心,结果发现又看错题了😂样例都没过去。后来发现并没有那么简单,根本不会做🙁感觉是个什么神秘树形 DP,但是不会做。
这道还是原题,他们基本上都做过😢听说是他们老师讲过了。神秘树形背包+上下界优化,根本写不出😥

T4

可恶捆绑!我的暴力居然都挂了一半的分😐依旧不知道为什么WA了
一点也不好玩😶

后记

👌👌👌
100+40+20+20=180100 + 40 + 20 + 20 = 180 😂🤣 萎了

评论

0 条评论,欢迎与作者交流。

正在加载评论...