#include<bits/stdc++.h> #define FIO cin.tie(0); ios::sync_with_stdio(false) #define all(x) (x).begin(), (x).end() #define fi first #define se second #define TEST #define TESTS int t = 1; cin >> t; while (t--)
usingnamespace std; using i64 = longlong; using u32 = unsigned; using u64 = unsignedlonglong; using pii = std::pair<int, int>;
constexprint N = 2e5 + 10; constexprint B = 500; constexprint MOD = 998244353;
int f[B][B]; int a[N]; int n, m, blen;
voidsolve(){ cin >> n >> m; for (int i = 1; i <= n; ++i) cin >> a[i]; blen = sqrt(n); for (int i = 1; i <= blen; ++i) { for (int j = 1; j <= n; ++j) { f[i][j % i] += a[j]; } } while (m--) { char c; int x, y; cin >> c >> x >> y; if (c == 'A') { if (x <= blen) cout << f[x][y] << "\n"; else { int res = 0; for ( ; y <= n; y += x) res += a[y]; cout << res << "\n"; } } else { int delta = y - a[x]; a[x] = y; for (int i = 1; i <= blen; ++i) f[i][x % i] += delta; } } }
#include<bits/stdc++.h> #define FIO cin.tie(0); ios::sync_with_stdio(false) #define all(x) (x).begin(), (x).end() #define fi first #define se second #define TEST #define TESTS int t = 1; cin >> t; while (t--)
usingnamespace std; using i64 = longlong; using u32 = unsigned; using u64 = unsignedlonglong; using pii = std::pair<int, int>;
constexprint N = 1e5 + 10; constexprint B = 400; constexprint MOD = 998244353;
int dp[N][B]; int a[N];
voidsolve(){ int n, q, blen; cin >> n; for (int i = 1; i <= n; ++i) cin >> a[i]; blen = sqrt(n); // 注意顺序 for (int i = n; i >= 1; --i) { for (int k = 0; k <= blen; ++k) { if (i + a[i] + k > n) dp[i][k] = 1; else dp[i][k] = dp[i + a[i] + k][k] + 1; } } cin >> q; while (q--) { int p, k; cin >> p >> k; if (k <= blen) cout << dp[p][k] << "\n"; else { int res = 0; do { p += a[p] + k; res++; } while (p <= n); cout << res << "\n"; } } }
#include<bits/stdc++.h> #define FIO cin.tie(0); ios::sync_with_stdio(false) #define all(x) (x).begin(), (x).end() #define fi first #define se second #define TEST #define TESTS int t = 1; cin >> t; while (t--)
usingnamespace std; using i64 = longlong; using u32 = unsigned; using u64 = unsignedlonglong; using pii = std::pair<int, int>;
constexprint N = 1e5 + 10; constexprint B = 400; constexprint MOD = 998244353;
int f[B][N], g[B][N]; int a[N];
voidsolve(){ int n, q; cin >> n >> q; for (int i = 1; i <= n; ++i) cin >> a[i]; int blen = sqrt(n); for (int d = 1; d <= blen; ++d) { for (int i = n; i >= 1; --i) { f[d][i] = a[i] + (i + d > n ? 0 : f[d][i + d]); } } for (int d = 1; d <= blen; ++d) { for (int i = n; i >= 1; --i) { g[d][i] = f[d][i] + (i + d > n ? 0 : g[d][i + d]); } } while (q--) { int s, d, k; cin >> s >> d >> k; if (d <= blen) { cout << g[d][s] - (s + d * k > n ? 0 : g[d][s + d * k] + k * f[d][s + d * k]) << " "; continue; } int res = 0; for (int i = s, j = 1; i <= n && j <= k; i += d, j++) { res += a[i] * j; } cout << res << " "; } cout << "\n"; }
#include<bits/stdc++.h> #define FIO cin.tie(0); ios::sync_with_stdio(false) #define all(x) (x).begin(), (x).end() #define fi first #define se second #define TEST #define TESTS int t = 1; cin >> t; while (t--)
usingnamespace std; using i64 = longlong; using u32 = unsigned; using u64 = unsignedlonglong; using pii = std::pair<int, int>;
inlinecharnc(){ staticchar buf[1 << 20], *p1, *p2; return p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, 1 << 20, stdin), p1 == p2) ? EOF : *p1++; } #ifndef ONLINE_JUDGE #define nc getchar #endif voidread(){} template<typename T, typename... T2> inlinevoidread(T &x, T2 &... oth){ x = 0; char c = nc(), up = c; while(!isdigit(c)) up = c, c = nc(); while(isdigit(c)) x = x * 10 + c - '0', c = nc(); up == '-' ? x = -x : 0; read(oth...); }
constexprint N = 2e5 + 10; constexprint B = 500; constexprint MOD = 1e9 + 7;
int bi[N], bl[B], br[B]; i64 a[N], sum[B], pre[B][B], suf[B][B]; int n, m, blen;
voidmodify(int x, int y, int z){ if (x > blen) { for (int i = y; i <= n; i += x) { a[i] += z; sum[bi[i]] += z; } } else { for (int i = y; i <= x; ++i) pre[x][i] += z; for (int i = y; i >= 1; --i) suf[x][i] += z; } }
i64 query(int l, int r){ i64 res = 0; if (bi[l] == bi[r]) { for (int i = l; i <= r; ++i) res += a[i]; } else { for (int i = l; i <= br[bi[l]]; ++i) res += a[i]; for (int i = bi[l] + 1; i < bi[r]; ++i) res += sum[i]; for (int i = bl[bi[r]]; i <= r; ++i) res += a[i]; } res %= MOD; for (int x = 1; x <= blen; ++x) { int lth = (l - 1) / x + 1, rth = (r - 1) / x + 1; int num = rth - lth - 1; if (lth == rth) { res = res + pre[x][(r - 1) % x + 1] - pre[x][(l - 1) % x]; } else { res = res + suf[x][(l - 1) % x + 1] + num * pre[x][x] + pre[x][(r - 1) % x + 1]; } } res %= MOD; return res; }
voidsolve(){ read(n, m); blen = sqrt(n); int bnum = (n + blen - 1) / blen; for (int i = 1; i <= n; ++i) { read(a[i]); } for (int i = 1; i <= n; ++i) bi[i] = (i - 1) / blen + 1; for (int i = 1; i <= bnum; ++i) { bl[i] = (i - 1) * blen + 1; br[i] = min(i * blen, n); } for (int i = 1; i <= n; ++i) { sum[bi[i]] += a[i]; } while (m--) { int op, x, y, z; read(op, x, y); if (op == 1) { read(z); modify(x, y, z); } else { cout << query(x, y) << "\n"; } } }
#include<bits/stdc++.h> #define FIO cin.tie(0); ios::sync_with_stdio(false) #define all(x) (x).begin(), (x).end() #define fi first #define se second #define TEST #define TESTS int t = 1; cin >> t; while (t--)
usingnamespace std; using i64 = longlong; using u32 = unsigned; using u64 = unsignedlonglong; using pii = std::pair<int, int>
constexprint N = 3e4 + 10; constexprint MOD = 998244353;
vector<int> e[N]; bitset<N> vis[N]; queue<tuple<int, int, int>> q; int n, m;
voidadd(int i, int j){ e[i].push_back(j); }
voidtrigger(int x, int t){ for (int j : e[x]) { if (vis[x][j]) continue; vis[x][j] = 1; q.emplace(x, j, t); } e[x].clear(); }
voidextend(int x, int j, int t){ trigger(x, t); if (vis[x][j]) return; vis[x][j] = 1; q.emplace(x, j, t); }
intbfs(int s, int t){ if (s == t) return0; trigger(s, 0); while (q.size()) { auto [x, j, time] = q.front(); q.pop(); if (x - j == t || x + j == t) return time + 1; if (x - j >= 1) extend(x - j, j, time + 1); if (x + j <= n) extend(x + j, j, time + 1); } return-1; }
voidsolve(){ cin >> n >> m; int s, t, sjump, tjump; cin >> s >> sjump >> t >> tjump; add(s, sjump); add(t, tjump); for (int i = 2; i < m; ++i) { int x, j; cin >> x >> j; add(x, j); } cout << bfs(s, t) << "\n"; }
#include<bits/stdc++.h> #define FIO cin.tie(0); ios::sync_with_stdio(false) #define all(x) (x).begin(), (x).end() #define fi first #define se second #define TEST #define TESTS int t = 1; cin >> t; while (t--)
#include<bits/stdc++.h> #define FIO cin.tie(0); ios::sync_with_stdio(false) #define all(x) (x).begin(), (x).end() #define fi first #define se second #define TEST #define TESTS int t = 1; cin >> t; while (t--)
usingnamespace std; using i64 = longlong; using u32 = unsigned; using u64 = unsignedlonglong; using pii = std::pair<int, int>;
constexprint N = 1e5 + 10; constexprint MOD = 998244353;
int fa[N], id[N], idx; vector<int> e[N]; int len[N], max1[N], max2[N]; int ans[N]; int n;
voiddfs(int u, int f){ fa[u] = f; id[++idx] = u; for (int v : e[u]) { if (v == f) continue; dfs(v, u); } }
intquery(int x){ int cnt = 0; for (int i = n; i >= 1; --i) { int u = id[i], f = fa[u]; if (max1[u] + max2[u] + 1 >= x) { cnt++; len[u] = 0; } else { len[u] = max1[u] + 1; } if (len[u] > max1[f]) { max2[f] = max1[f]; max1[f] = len[u]; } elseif (len[u] > max2[f]) { max2[f] = len[u]; } } for (int i = 1; i <= n; ++i) len[i] = max1[i] = max2[i] = 0; return cnt; }
intjump(int i, int val){ int l = i, r = n + 1; while (l < r) { int mid = l + r >> 1; if (query(mid) < val) r = mid; else l = mid + 1; } return l; }
voidsolve(){ cin >> n; for (int i = 0, u, v; i < n - 1; ++i) { cin >> u >> v; e[u].push_back(v); e[v].push_back(u); } for (int i = 1; i <= n; ++i) ans[i] = -1; dfs(1, 0); int blen = sqrt(n); for (int i = 1; i <= blen; ++i) { ans[i] = query(i); } for (int i = blen + 1; i <= n; i = jump(i, ans[i])) { ans[i] = query(i); } for (int i = 1; i <= n; ++i) { if (ans[i] != -1) continue; ans[i] = ans[i - 1]; } for (int i = 1; i <= n; ++i) cout << ans[i] << "\n"; }