#include<bits/stdc++.h> usingnamespace std; #define int long long
voidsolve(){ vector<int> a(4); map<int, int> mp; for (int i = 0; i < 4; i++) { cin >> a[i]; mp[a[i]]++; } int ans = 0; for (int i = 1; i <= 4; i++) { ans += mp[i] / 2; } cout << ans << "\n"; }
signedmain(){ ios::sync_with_stdio(false); cin.tie(0); int t = 1; // cin >> t; while (t--) { solve(); } return0; }
#include<bits/stdc++.h> usingnamespace std; #define int long long
voidsolve(){ int n, m, k; cin >> n >> m >> k; vector<string> a(n); for (int i = 0; i < n; i++) { cin >> a[i]; } int fx[] = {0, 0, 1, -1}; int fy[] = {1, -1, 0, 0}; int ans = 0; vector<vector<bool>> vis(n, vector<bool>(m)); for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { auto check = [&](int x, int y) { if (0 <= x && x < n && 0 <= y && y < m && !vis[x][y] && a[x][y] == '.') { returntrue; } returnfalse; }; auto dfs = [&](auto self, int x, int y, int cnt) -> void { if (cnt == k) { ans++; return; } for (int d = 0; d < 4; d++) { int dx = x + fx[d]; int dy = y + fy[d]; if (check(dx, dy)) { vis[dx][dy] = 1; self(self, dx, dy, cnt + 1); vis[dx][dy] = 0; } } }; if (a[i][j] == '.') { vis[i][j] = 1; dfs(dfs, i, j, 0); vis[i][j] = 0; } } } cout << ans << "\n"; }
signedmain(){ ios::sync_with_stdio(false); cin.tie(0); int t = 1; // cin >> t; while (t--) { solve(); } return0; }
E
题意
给定一个大小为\(n\)的数组\(A_i\)和模数\(m\),求: \[
\sum_{1\le l\le r\le n}((\sum_{l\le i\le r}A_i)\mod M)
\]
#include<bits/stdc++.h> usingnamespace std; #define int long long
structFenwick { int n; vector<int> a; Fenwick(int n_ = 0) { init(n_); } voidinit(int n_){ n = n_; a.assign(n, 0); } voidadd(int x, int v){ for (int i = x + 1; i < n; i += i & (-i)) { a[i - 1] += v; } } intsum(int x){ int ans = 0; for (int i = x; i > 0; i -= i & (-i)) { ans += a[i - 1]; } return ans; } intrangeSum(int l, int r){ returnsum(r) - sum(l); } };
voidsolve(){ int n, m; cin >> n >> m; vector<int> a(n); for (int i = 0; i < n; i++) { cin >> a[i]; } vector<int> pre(n + 1); for (int i = 0; i < n; i++) { pre[i + 1] = pre[i] + a[i]; } int ans = 0; for (int i = 1; i <= n; i++) { pre[i] %= m; ans += pre[i] * i; ans -= pre[i] * (n - i); } Fenwick bit(n + 1); vector<int> p(n + 1); iota(p.begin(), p.end(), 0); sort(p.begin(), p.end(), [&](int i, int j) { if (pre[i] != pre[j]) { return pre[i] > pre[j]; } return i > j; }); for (auto i : p) { ans += bit.sum(i) * m; bit.add(i, 1); } cout << ans << "\n"; }
signedmain(){ ios::sync_with_stdio(false); cin.tie(0); int t = 1; // cin >> t; while (t--) { solve(); } return0; }