QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#571638 | #9302. Caesar Cipher | retired_midlights | WA | 542ms | 23784kb | C++14 | 3.1kb | 2024-09-18 01:53:12 | 2024-09-18 01:53:12 |
Judging History
你现在查看的是最新测评结果
- [2024-11-04 17:10:09]
- hack成功,自动添加数据
- (/hack/1110)
- [2024-10-21 09:47:48]
- hack成功,自动添加数据
- (/hack/1022)
- [2024-10-21 09:39:50]
- hack成功,自动添加数据
- (/hack/1021)
- [2024-10-21 09:31:34]
- hack成功,自动添加数据
- (/hack/1020)
- [2024-10-03 10:14:59]
- hack成功,自动添加数据
- (/hack/928)
- [2024-09-28 07:51:27]
- hack成功,自动添加数据
- (/hack/922)
- [2024-09-28 07:42:39]
- hack成功,自动添加数据
- (/hack/921)
- [2024-09-26 18:56:14]
- hack成功,自动添加数据
- (/hack/911)
- [2024-09-23 07:21:34]
- hack成功,自动添加数据
- (/hack/885)
- [2024-09-20 15:14:45]
- hack成功,自动添加数据
- (/hack/855)
- [2024-09-20 14:21:31]
- hack成功,自动添加数据
- (/hack/854)
- [2024-09-20 14:19:40]
- hack成功,自动添加数据
- (/hack/853)
- [2024-09-20 14:16:01]
- hack成功,自动添加数据
- (/hack/851)
- [2024-09-20 14:12:05]
- hack成功,自动添加数据
- (/hack/850)
- [2024-09-20 14:10:12]
- hack成功,自动添加数据
- (/hack/849)
- [2024-09-18 01:53:12]
- 提交
answer
#include <bits/stdc++.h>
#define rep(i, a, b) for(int i = (int)a; i <= (int)b; i ++)
#define ll long long
#define ls p << 1
#define rs p << 1 | 1
using namespace std;
const int maxn = 500010, base = 65537, mod = 1e9 + 7;
struct Info {
int tag, mx, hsh;
} t[maxn << 2];
int n, q, a[maxn], power[maxn], sum[maxn];
void push_up(int p, int l, int r) {
t[p].mx = max(t[ls].mx, t[rs].mx);
int mid = (l + r) >> 1;
t[p].hsh = (1ll * t[ls].hsh * power[r - mid] % mod + t[rs].hsh) % mod;
}
void build(int p, int l, int r) {
if(l == r) {
t[p].mx = t[p].hsh = a[l];
return;
}
int mid = (l + r) >> 1;
build(ls, l, mid), build(rs, mid + 1, r);
push_up(p, l, r);
}
void push_down(int p, int l, int r) {
t[ls].tag += t[p].tag, t[rs].tag += t[p].tag;
t[ls].mx += t[p].tag, t[rs].mx += t[p].tag;
int mid = (l + r) >> 1;
t[ls].hsh = (t[ls].hsh + 1ll * sum[mid - l] * t[p].tag % mod) % mod;
t[rs].hsh = (t[rs].hsh + 1ll * sum[r - (mid + 1)] * t[p].tag % mod) % mod;
t[p].tag = 0;
}
void modify_force(int p, int l, int r) {
// cout << p << " " << l << " " << r << endl;
if(l == r) {
t[p].mx %= 65536;
t[p].hsh = t[p].mx;
return;
}
if(t[p].tag) push_down(p, l, r);
int mid = (l + r) >> 1;
if(t[ls].mx >= 65536) modify_force(ls, l, mid);
if(t[rs].mx >= 65536) modify_force(rs, mid + 1, r);
push_up(p, l, r);
}
void modify(int p, int l, int r, int ql, int qr) {
if(ql <= l && r <= qr) {
t[p].tag ++;
t[p].mx ++;
t[p].hsh = (t[p].hsh + sum[r - l]) % mod;
if(t[p].mx >= 65536) {
modify_force(p, l, r);
}
return;
}
if(t[p].tag) push_down(p, l, r);
int mid = (l + r) >> 1;
if(ql <= mid) modify(ls, l, mid, ql, qr);
if(qr > mid) modify(rs, mid + 1, r, ql, qr);
push_up(p, l, r);
}
int query(int p, int l, int r, int ql, int qr) {
if(ql <= l && r <= qr) return t[p].hsh;
int mid = (l + r) >> 1;
if(t[p].tag) push_down(p, l, r);
int res1 = 0, res2 = 0;
if(ql <= mid) res1 = query(ls, l, mid, ql, qr);
if(qr > mid) res2 = query(rs, mid + 1, r, ql, qr);
if(qr > mid) return (1ll * res1 * power[qr - mid] % mod + res2) % mod;
else return res1;
}
void solve() {
cin >> n >> q;
rep(i, 1, n) cin >> a[i];
power[0] = 1;
rep(i, 1, n) power[i] = 1ll * power[i - 1] * base % mod;
sum[0] = 1;
rep(i, 1, n) sum[i] = (sum[i - 1] + power[i]) % mod;
build(1, 1, n);
while(q --) {
int op, x, y, k;
cin >> op >> x >> y;
if(op == 1) modify(1, 1, n, x, y);
else {
cin >> k;
// cout << query(1, 1, n, x, x + k - 1) << endl;
// cout << query(1, 1, n, y, y + k - 1) << "!" << endl;
cout << (query(1, 1, n, x, x + k - 1) == query(1, 1, n, y, y + k - 1) ? "yes\n" : "no\n");
}
}
}
int main() {
ios :: sync_with_stdio(false);
cin.tie(0);
int T = 1;
while(T --) solve();
return 0;
}
/*
3 3
0 65535 65535
2 1 2 2
1 2 3
2 1 2 2
*/
详细
Test #1:
score: 100
Accepted
time: 0ms
memory: 9832kb
input:
5 6 1 2 1 2 1 2 1 2 2 2 1 3 3 1 1 1 1 3 5 2 1 2 4 2 1 2 2
output:
no yes no yes
result:
ok 4 token(s): yes count is 2, no count is 2
Test #2:
score: 0
Accepted
time: 1ms
memory: 9812kb
input:
3 3 0 65535 65535 2 1 2 2 1 2 3 2 1 2 2
output:
no yes
result:
ok 2 token(s): yes count is 1, no count is 1
Test #3:
score: 0
Accepted
time: 2ms
memory: 9820kb
input:
1000 1000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...
output:
yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes ...
result:
ok 1000 token(s): yes count is 1000, no count is 0
Test #4:
score: 0
Accepted
time: 81ms
memory: 12204kb
input:
100000 100000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...
output:
yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes ...
result:
ok 100000 token(s): yes count is 100000, no count is 0
Test #5:
score: 0
Accepted
time: 542ms
memory: 22072kb
input:
500000 500000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...
output:
yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes ...
result:
ok 500000 token(s): yes count is 500000, no count is 0
Test #6:
score: 0
Accepted
time: 491ms
memory: 23784kb
input:
500000 500000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...
output:
yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes ...
result:
ok 500000 token(s): yes count is 500000, no count is 0
Test #7:
score: -100
Wrong Answer
time: 505ms
memory: 22040kb
input:
500000 500000 65534 65535 65534 65535 65534 65535 65534 65535 65534 65535 65534 65535 65534 65535 65534 65535 65534 65535 65534 65535 65534 65535 65534 65535 65534 65535 65534 65535 65534 65535 65534 65535 65534 65535 65534 65535 65534 65535 65534 65535 65534 65535 65534 65535 65534 65535 65534 6553...
output:
no no no no no no no no no no no no no no no no no no no no no no yes no no no no no no no no no no no no no no no no no no no no no no no no no no no no no no no no no no no no no no no no no no no no no no no no no no no no no no no no no no no yes no no no no no no no no no no no no no no no no n...
result:
wrong answer expected YES, found NO [1st token]