update
This commit is contained in:
parent
66b06821d0
commit
810c63c2ef
37
src/5/17/T464001.cpp
Normal file
37
src/5/17/T464001.cpp
Normal file
@ -0,0 +1,37 @@
|
||||
#include <cstdio>
|
||||
using namespace std;
|
||||
|
||||
const int MAXN = 1e6 + 5;
|
||||
|
||||
int a[MAXN];
|
||||
|
||||
int main() {
|
||||
int n;
|
||||
scanf("%d", &n);
|
||||
for (int i = 1; i <= n; ++i) {
|
||||
scanf("%d", &a[i]);
|
||||
}
|
||||
int m;
|
||||
scanf("%d", &m);
|
||||
while (m--) {
|
||||
int op;
|
||||
scanf("%d", &op);
|
||||
if (op == 1) {
|
||||
int x, y;
|
||||
scanf("%d%d", &x, &y);
|
||||
a[x] = y;
|
||||
} else {
|
||||
int l, r, y;
|
||||
scanf("%d%d%d", &l, &r, &y);
|
||||
int ans = -1;
|
||||
for (int p = l; p <= r; ++p) {
|
||||
if (a[p] >= y) {
|
||||
ans = p;
|
||||
break;
|
||||
}
|
||||
}
|
||||
printf("%d\n", ans);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
3
src/5/31/T169734.cpp
Normal file
3
src/5/31/T169734.cpp
Normal file
@ -0,0 +1,3 @@
|
||||
int main(){
|
||||
|
||||
}
|
59
src/5/31/T285013.cpp
Normal file
59
src/5/31/T285013.cpp
Normal file
@ -0,0 +1,59 @@
|
||||
#include <iostream>
|
||||
#include <vector>
|
||||
#include <queue>
|
||||
using namespace std;
|
||||
|
||||
const int maxn = 300010;
|
||||
|
||||
int main() {
|
||||
ios::sync_with_stdio(false);
|
||||
cin.tie(0);
|
||||
int n;
|
||||
cin >> n;
|
||||
vector<vector<int>> g(n + 1);
|
||||
for (int i = 0; i < n - 1; i++) {
|
||||
int u, v;
|
||||
cin >> u >> v;
|
||||
g[u].push_back(v);
|
||||
g[v].push_back(u);
|
||||
}
|
||||
|
||||
vector<int> fa(n + 1, 0);
|
||||
vector<int> dep(n + 1, 0);
|
||||
vector<long long> size_arr(n + 1, 1);
|
||||
vector<long long> sum_sq(n + 1, 0);
|
||||
vector<int> nodes;
|
||||
|
||||
queue<int> q;
|
||||
q.push(1);
|
||||
fa[1] = 0;
|
||||
dep[1] = 0;
|
||||
while (!q.empty()) {
|
||||
int u = q.front();
|
||||
q.pop();
|
||||
nodes.push_back(u);
|
||||
for (int v : g[u]) {
|
||||
if (v == fa[u]) continue;
|
||||
fa[v] = u;
|
||||
dep[v] = dep[u] + 1;
|
||||
q.push(v);
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = nodes.size() - 1; i >= 0; i--) {
|
||||
int u = nodes[i];
|
||||
if (fa[u] != 0) {
|
||||
size_arr[fa[u]] += size_arr[u];
|
||||
sum_sq[fa[u]] += size_arr[u] * size_arr[u];
|
||||
}
|
||||
}
|
||||
|
||||
long long ans = 0;
|
||||
for (int u = 1; u <= n; u++) {
|
||||
long long count_u = size_arr[u] * size_arr[u] - sum_sq[u];
|
||||
ans += (long long)u * count_u;
|
||||
}
|
||||
|
||||
cout << ans << endl;
|
||||
return 0;
|
||||
}
|
41
src/6/T178359.cpp
Normal file
41
src/6/T178359.cpp
Normal file
@ -0,0 +1,41 @@
|
||||
#include <iostream>
|
||||
#include <vector>
|
||||
using namespace std;
|
||||
|
||||
const int mod = 1000000007;
|
||||
const int maxn = 100000;
|
||||
int pow2[maxn + 10]; // pre_pow_arr
|
||||
|
||||
void pre_pow() {
|
||||
pow2[0] = 1;
|
||||
for (int i = 1; i <= maxn; i++) {
|
||||
pow2[i] = (1LL * pow2[i - 1] * 2) % mod;
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
pre_pow();
|
||||
int n;
|
||||
cin >> n;
|
||||
vector<int> cnt(n + 1, 0);
|
||||
for (int i = 0; i < n; i++) {
|
||||
int x;
|
||||
cin >> x;
|
||||
cnt[x]++;
|
||||
}
|
||||
|
||||
long long tot = 1; // F(1)
|
||||
long long alt = 1; // F(-1)
|
||||
for (int i = 1; i <= n; i++) {
|
||||
if (cnt[i] == 0) continue;
|
||||
long long ways = pow2[cnt[i] - 1]; // 2^(c-1)
|
||||
tot = tot * (1 + ways) % mod;
|
||||
alt = alt * ((1 - ways + mod) % mod) % mod;
|
||||
}
|
||||
|
||||
long long inv2 = (mod + 1) / 2; // modinv 2
|
||||
long long ans = (tot - alt + mod) % mod * inv2 % mod;
|
||||
cout << ans << endl;
|
||||
|
||||
return 0;
|
||||
}
|
113
src/6/T616963.cpp
Normal file
113
src/6/T616963.cpp
Normal file
@ -0,0 +1,113 @@
|
||||
#include <iostream>
|
||||
#include <vector>
|
||||
#include <algorithm>
|
||||
using namespace std;
|
||||
|
||||
const int MAXN = 100000;
|
||||
const int MAXM = 100000;
|
||||
const int K = 17;
|
||||
const int mod = 1000000007;
|
||||
|
||||
|
||||
vector<vector<int>> divs(MAXN+1);
|
||||
vector<vector<vector<int>>> F_by_n_k(MAXN+1, vector<vector<int>>(K+1));
|
||||
int ways[MAXN+1][K+1];
|
||||
int C[MAXM+1][K+1];
|
||||
|
||||
int main() {
|
||||
for (int i=1; i<=MAXN; i++) {
|
||||
for (int j=i; j<=MAXN; j+=i) {
|
||||
divs[j].push_back(i);
|
||||
}
|
||||
}
|
||||
|
||||
ways[1][0] = 1;
|
||||
for (int k=1; k<=K; k++) {
|
||||
ways[1][k] = 0;
|
||||
}
|
||||
|
||||
for (int n=2; n<=MAXN; n++) {
|
||||
for (int k=0; k<=K; k++) {
|
||||
if (k==0) {
|
||||
F_by_n_k[n][k] = vector<int>(divs[n].size(), 0);
|
||||
auto it = lower_bound(divs[n].begin(), divs[n].end(), 2);
|
||||
if (it != divs[n].end()) {
|
||||
int idx = it - divs[n].begin();
|
||||
ways[n][k] = F_by_n_k[n][k][idx];
|
||||
} else {
|
||||
ways[n][k] = 0;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
int len = divs[n].size();
|
||||
vector<int> F_vec(len, 0);
|
||||
for (int i = len-1; i>=0; i--) {
|
||||
int d = divs[n][i];
|
||||
int j = n / d;
|
||||
long long ways_temp = 0;
|
||||
|
||||
if (j == 1) {
|
||||
if (k-1 == 0) {
|
||||
ways_temp = 1;
|
||||
}
|
||||
} else if (j <= MAXN && j >= 1 && k-1 >= 0) {
|
||||
vector<int> &div_j = divs[j];
|
||||
auto it_j = lower_bound(div_j.begin(), div_j.end(), d);
|
||||
if (it_j != div_j.end()) {
|
||||
int idx_j = it_j - div_j.begin();
|
||||
ways_temp = F_by_n_k[j][k-1][idx_j];
|
||||
}
|
||||
}
|
||||
|
||||
int next_F = 0;
|
||||
if (i+1 < len) {
|
||||
next_F = F_vec[i+1];
|
||||
}
|
||||
F_vec[i] = (next_F + ways_temp) % mod;
|
||||
}
|
||||
|
||||
auto it = lower_bound(divs[n].begin(), divs[n].end(), 2);
|
||||
if (it != divs[n].end()) {
|
||||
int idx = it - divs[n].begin();
|
||||
ways[n][k] = F_vec[idx];
|
||||
} else {
|
||||
ways[n][k] = 0;
|
||||
}
|
||||
F_by_n_k[n][k] = F_vec;
|
||||
}
|
||||
}
|
||||
|
||||
for (int i=0; i<=MAXM; i++) {
|
||||
C[i][0] = 1;
|
||||
if (i <= K) {
|
||||
for (int j=1; j<=i && j<=K; j++) {
|
||||
if (j == i) {
|
||||
C[i][j] = 1;
|
||||
} else {
|
||||
C[i][j] = (C[i-1][j] + C[i-1][j-1]) % mod;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
for (int j=1; j<=K; j++) {
|
||||
C[i][j] = (C[i-1][j] + C[i-1][j-1]) % mod;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ios::sync_with_stdio(false);
|
||||
cin.tie(0);
|
||||
int T;
|
||||
cin >> T;
|
||||
while (T--) {
|
||||
int n, m;
|
||||
cin >> n >> m;
|
||||
long long ans = 0;
|
||||
int max_k = min(m, K);
|
||||
for (int k=0; k<=max_k; k++) {
|
||||
ans = (ans + 1LL * C[m][k] * ways[n][k]) % mod;
|
||||
}
|
||||
cout << ans << '\n';
|
||||
}
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue
Block a user