A
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int MAXN = 200005;
int tree[MAXN << 2], lazy[MAXN << 2];
int n, m;
string s;
void push_up(int rt)
{
tree[rt] = tree[rt << 1] + tree[rt << 1 >> 1 | 1];
}
void push_up_v2(int rt)
{
tree[rt] = tree[rt << 1] + tree[rt << 1 | 1];
}
void build(int rt, int l, int r)
{
lazy[rt] = 0;
if (l == r)
{
tree[rt] = s[l] - '0';
return;
}
int mid = (l + r) >> 1;
build(rt << 1, l, mid);
build(rt << 1 | 1, mid + 1, r);
push_up_v2(rt);
}
void push_down(int rt, int l, int r)
{
if(lazy[rt])
{
int mid = (l + r) >> 1;
lazy[rt << 1] ^= 1;
tree[rt << 1] = (mid - l + 1) - tree[rt << 1];
lazy[rt << 1 | 1] ^= 1;
tree[rt << 1 | 1] = (r - mid) - tree[rt << 1 | 1];
lazy[rt] = 0;
}
}
void update(int rt, int l, int r, int ql, int qr)
{
if(ql <= l && r <= qr)
{
tree[rt] = (r - l + 1) - tree[rt];
lazy[rt] ^= 1;
return;
}
push_down(rt, l, r);
int mid = (l + r) >> 1;
if(ql <= mid)
update(rt << 1, l, mid, ql, qr);
if(qr > mid)
update(rt << 1 | 1, mid + 1, r, ql, qr);
push_up_v2(rt);
}
signed main()
{
ios::sync_with_stdio(0);
cin.tie(0), cout.tie(0);
cin >> n >> m >> s;
s = ' ' + s;
build(1, 1, n);
while(m--)
{
int x, l, r;
cin >> x >> l >> r;
if(x == 1)
{
update(1, 1, n, l, r);
}
else
{
int sum = tree[1];
int res = max(0LL, min(r, sum) - l + 1);
cout << res << endl;
}
}
return 0;
}
B
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n, k;
int d[35], pos[35];
void insert(int v, int p)
{
for(int i = 30; i >= 0; i--)
{
if((v >> i) & 1)
{
if(!d[i])
{
d[i] = v;
pos[i] = p;
return;
}
if(pos[i] < p)
{
swap(pos[i], p);
swap(d[i], v);
}
v ^= d[i];
}
}
}
int query(int L)
{
int res = 0;
for(int i = 30; i >= 0; i--)
{
if(pos[i] >= L) {
if((res ^ d[i]) > res)
{
res ^= d[i];
}
}
}
return res;
}
signed main()
{
ios::sync_with_stdio(0);
cin.tie(0), cout.tie(0);
cin >> n >> k;
int ans = 1e9, L = 1;
for(int i = 1; i <= n; i++)
{
int x;
cin >> x;
insert(x, i);
while(L <= i && query(L) >= k)
{
ans = min(ans, i - L + 1);
L++;
}
}
if(ans > n)
cout << -1 << '\n';
else
cout << ans << '\n';
return 0;
}
C
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n, m;
vector<int> a;
int sum;
int f[1000005];
int find(int x)
{
return f[x] == x ? x : f[x] = find(f[x]);
}
signed main() {
ios::sync_with_stdio(0);
cin.tie(0), cout.tie(0);
int n, m;
cin >> n >> m;
vector<int> a;
int sum = 0;
for(int i = 1; i <= n; i++)
{
int x;
cin >> x;
if(x <= m) a.push_back(x);
else sum += x;
}
if(sum)
{
cout << 0;
return 0;
}
for(int i = 0; i <= m; i++)
f[i] = i;
int cnt = 0;
for(int x : a)
{
for(int k = 1; k <= x; k++)
{
int u = m + 1 - (m * k + x - 1) / x;
if(u <= 0) break;
int p = find(u);
if(p > 0)
{
cnt++;
f[p] = find(p - 1);
}
else
{
break;
}
}
}
cout << m - cnt << '\n';
return 0;
}
D
#include<bits/stdc++.h>
#define int long long
int n;
using namespace std;
string s = " ", ss;
int ans = 0;
signed main()
{
cin >> n;
cin >> ss;
s += ss;
for(int i = 4; i <= n; i ++)
{
if(s[i - 1] == '2' && s[i - 2] == '0' && s[i - 3] == '2')
{
ans ++;
s[i] = '6';
}
}
cout << ans;
return 0;
}
E
#include<bits/stdc++.h>
#define int long long
#define inv(x) ksm(x, mod - 2)
using namespace std;
const int mod = 998244353;
int T;
int n, m, minv;
int dp[200003];
int d[200003];
int ksm(int x, int y)
{
int ans = 1;
while(y)
{
if(y & 1)
{
ans = ans * x % mod;
}
x = x * x % mod;
y >>= 1;
}
return ans;
}
signed main()
{
ios::sync_with_stdio(0);
cin.tie(0), cout.tie(0);
cin >> T;
while(T --)
{
cin >> n >> m;
minv = inv(m);
for(int i = 1; i <= m; i ++)
{
dp[i] = m;
d[i] = d[i - 1] + dp[i];
d[i] %= mod;
}
for(int i = m + 1; i <= n; i ++)
{
dp[i] = 1;
dp[i] += minv * (d[i - 1] - d[i - m - 1] + mod) % mod;
dp[i] %= mod;
d[i] = d[i - 1] + dp[i];
d[i] %= mod;
}
cout << dp[n] << endl;
}
return 0;
}
F
#include<bits/stdc++.h>
#define int long long
using namespace std;
int a[233] = {0, 1, 1}, n;
signed main()
{
cin >> n;
for(int i = 3; i <= n; i ++)
{
a[i] = a[i - 1] + a[i - 2] + 1;
}
cout << a[n] << endl;
return 0;
}
G
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n;
signed main()
{
cin >> n;
cout << (n - 1 + (n - 1) % 2) * ((n + 1) / 2) / 2 << endl;
for(int i = 1, j = n - 1; i <= n, j >= 1; i ++, j -= 2)
{
for(int k = 1; k <= j; k ++)
{
cout << i << ' ' << i + k << endl;
}
}
return 0;
}
H
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n, a, cnt;
signed main()
{
cin >> n;
for(int i = 1; i <= n; i ++)
{
cin >> a;
if(a >= 6)
cnt ++;
}
cout << cnt;
return 0;
}
I
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n;
int p[200003], pcnt;
int minp[200003] = {1, 1};
struct node
{
int num;
vector<pair<int, int> > cnt;
}a[200003];
bool cmp(node a, node b)
{
int i = 0, j = 0;
while(i < a.cnt.size() && j < b.cnt.size())
{
if(a.cnt[i].first == b.cnt[j].first)
{
if(a.cnt[i].second == b.cnt[j].second)
{
i ++;
j ++;
}
else
{
return a.cnt[i].second < b.cnt[j].second;
}
}
else
{
return a.cnt[i].first > b.cnt[j].first;
}
}
return b.cnt.size() - j;
}
signed main()
{
for(int i = 2; i <= 200000; i ++)
{
if(minp[i] == 0)
{
minp[i] = i;
p[++ pcnt] = i;
}
for(int j = 1; j <= pcnt && i * p[j] <= 200000; j ++)
{
minp[i * p[j]] = p[j];
if(i % p[j] == 0)
{
break;
}
}
}
cin >> n;
for(int i = 1; i <= n; i ++)
{
int sum = i;
a[i].num = i;
while(sum > 1)
{
int pp = minp[sum];
int ppcnt = 0;
while(sum % pp == 0)
{
ppcnt ++;
sum /= pp;
}
int ppsum = 0;
for(int j = 0; j <= 5; j ++)
{
if((ppcnt >> j) & 1)
{
ppsum += (1 << (5 - j));
}
}
a[i].cnt.push_back({pp, ppsum});
// cout << i << ' ' << pp << ' ' << ppcnt << ' ' << ppsum << endl;
}
}
sort(a + 1, a + 1 + n, cmp);
for(int i = 1; i <= n; i ++)
{
cout << a[i].num << ' ';
}
}
J
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n, T;
void solve() {
int n;
cin >> n;
vector<int> pos(n + 1);
for(int i = 1; i <= n; i++)
{
int x;
cin >> x;
pos[x] = i;
}
for(int p = 2; p * p <= n; p++)
{
for(int q = 1; q < p; q++)
{
if(__gcd(p, q) == 1)
{
for(int a = 1; a * p * p <= n; a ++)
{
int v1 = a * q * q;
int v2 = a * p * q;
int v3 = a * p * p;
if((pos[v1] < pos[v2] && pos[v2] < pos[v3]) ||
(pos[v3] < pos[v2] && pos[v2] < pos[v1]))
{
cout << "No\n";
return;
}
}
}
}
}
cout << "Yes\n";
}
signed main() {
ios::sync_with_stdio(0);
cin.tie(0), cout.tie(0);
cin >> T;
while(T --)
{
solve();
}
return 0;
}
全部评论
(0) 回帖