主页
搜索
最近更新
数据统计
赞助我们
系统公告
1
/
1
请查看完所有公告
T439804 官方题解
最后更新于 2025-06-15 13:25:25
作者
littlesnoke
分类
题解
复制 Markdown
查看原文
更新内容
考虑维护每一行的和。 然后交换的时候考虑一个套路,就是交换两行时不真交换,只交换编号,然后对应 $i$ 就是 $id_i$。 这样对于一行 $+a$ 就是 $sum_{id_i}+a$。 ```cpp #include <iostream> using namespace std; int a[1001][1001]; int tagl[1001], tagr[1001]; int sum[10010]; int n, t; int main() { // freopen("money1.in", "r", stdin); ios::sync_with_stdio(0); cin.tie(nullptr); cin >> n >> t; for (int i = 1; i <= n; i++) { for (int j = 1; j <= n; j++) { cin >> a[i][j]; sum[i] += a[i][j]; } } for (int i = 1; i <= n; i++) { tagl[i] = tagr[i] = i; // cout << sum[i] << ' '; } // cout << endl; while (t--) { int op; cin >> op; if (op == 1) { int i, j, v; cin >> i >> j >> v; a[tagl[i]][tagr[j]] += v; sum[tagl[i]] += v; } else if (op == 2) { int i, j; cin >> i >> j; swap(tagl[i], tagl[j]); // swap(sum[tagl[i]], sum[tagl[j]]); } else if (op == 3) { int i, j; cin >> i >> j; swap(tagr[i], tagr[j]); } else if (op == 4) { int i; cin >> i; cout << sum[tagl[i]] << "\n"; } } cout << endl; } ```
正在渲染内容...
点赞
0
收藏
0