社区讨论
Hack点T了,求调
P4145上帝造题的七分钟 2 / 花神游历各国参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @lotfybfh
- 此快照首次捕获于
- 2023/11/11 10:42 2 年前
- 此快照最后确认于
- 2023/11/17 23:06 2 年前
CPP
//
// Created by 96454 on 2023/9/26.
//
#include <bits/stdc++.h>
using namespace std;
#define MAXN 100010
#define int long long
template<typename T> inline void rd(T &x)
{
int w = 1;x = 0; char s;
while (!isdigit(s = getchar())) if (s == '-') w = -1;
while (isdigit(s)) x = (x << 3) + (x << 1), x += s - '0', s = getchar();
x *= w;
}
template<typename T> inline void we(T x) {
static int sta[35];
int top = 0;
do {
sta[top++] = x % 10, x /= 10;
} while (x);
while (top) putchar(sta[--top] + 48); // 48 是 '0'
}
struct SGtree{
int val, tag, l, r;
#define val(x) tr[x].val
#define tag(x) tr[x].tag
#define l(x) tr[x].l
#define r(x) tr[x].r
}tr[MAXN << 2];
int value[MAXN], n, ans, m;
inline void build(int x, int l, int r){
l(x) = l, r(x) = r;
if (l == r)
{
val(x) = value[l];
return;
}
int mid = (l + r) >> 1;
build(x * 2, l, mid);
build(x * 2 + 1, mid + 1, r);
val(x) = val(x * 2) + val(x * 2 + 1);
}
inline void change(int x, int l, int r){
if (l(x) >= l && r(x) <= r)
{
tag(x)++;
return;
}
int mid = (l(x) + r(x)) >> 1;
if (l <= mid) change(x * 2, l, r);
if (r > mid) change(x * 2 + 1, l, r);
}
inline void query(int x, int l, int r, int tap){
if (l(x) >= l && r(x) <= r)
{
if (tap + tag(x) >= 6)
{
ans += (r(x) - l(x) + 1);
return;
}
}
if (l(x) == r(x))
{
int v = val(x);
for (register int i = 1; i <= tap + tag(x); i++)
{
v = sqrt(v);
}
ans += v;
return;
}
int mid = (l(x) + r(x)) >> 1;
if (l <= mid) query(x * 2, l, r, tag(x) + tap);
if (r > mid) query(x * 2 + 1, l, r, tag(x) + tap);
}
signed main(){
rd(n);
for (register int i = 1; i <= n; i++) rd(value[i]);
build(1, 1, n);
rd(m);
for (register int i = 1; i <= m; i++){
int x;
rd(x);
if (x == 1)
{
int l, r;
rd(l);rd(r);
if (l > r) swap(l, r);
ans = 0;
query(1, l, r, 0);
we(ans);
puts("");
}
else
{
int l, r;
rd(l);rd(r);
if (l > r) swap(l, r);
change(1, l, r);
}
}
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...