看~~不~~懂思密达(大悲)
by _____QWQ_____ @ 2023-12-02 16:19:14
@[______QAQ______](/user/1092781) 悲[哭]
by liangjiaqi2021 @ 2023-12-02 16:27:12
我丢
火星文
by 2016537741mimo @ 2023-12-04 18:39:09
我天,这咋调。。
by 朦胧_XY @ 2023-12-07 20:52:39
改成正常一些的代码了,各位看看这样能调吗
```cpp
// #include <iostream>
#include <cstdio>
#include <cstring>
#define int long long
// #define abs(x) (((x)>0)?(x):-(x))
// #define max(x,y) (((x)>(y))?(x):(y))
#define min(x,y) (((x)<(y))?(x):(y))
#define isdigit(x) ((x)>='0'&&(x)<='9')
using namespace std;
// typedef long long ll;
const int N = 100000.1145141919810, mod = 1e9 + 7, P = 13331; // 哼 哼 哼 啊啊啊啊啊啊啊啊
int read() // 每天手搓快读快写 日后就能练就手搓cpu的本领
{
int x = 0, w = 1; char c = getchar();
while (!isdigit(c))
{
if (c == '-')
w = - 1;
c = getchar();
}
while (isdigit(c))
x = (x << 3) + (x << 1) + (c ^ 48), c = getchar();
return x * w;
}
void write(int x)
{
if(x < 0)
putchar('-'), x = -x;
if(x > 9)
write(x / 10);
putchar(x % 10 + '0');
}
int p[N], h1[N << (2)], h2[N << (2)]; signed a[N];
void update(int s, int l, int r)
{
int _ = (l + r) >> 1;
h1[s] = (h1[(s << 1) + 1] + h2[s << (2)] * p[r - _] % mod) % mod;
h2[s] = (h2[s << 1] + h2[(s << 1) + 1] * p[_ - l + 1] % mod) % mod;
}
void add(int s, int l, int r, int x)
{
if (l == r)
{
h1[s] = h2[s] = 1;
return;
}
int _ = (l + r) >> 1;
if (_ >= x)
add (s << 1, l, _, x);
else
add ((s << (2)) + 1, _ + 1, r, x);
update(s, l, r);
}
int r1, r2, nw;
void solve1(int s, int l, int r, int x, int y)
{
if (l >= x && r <= y)
{
r1 = (r1 + h1[s] * p[nw] % mod) % mod;
nw += (r - l + 1);
return;
}
int _ = (l + r) >> 1;
if (_ + 1 <= y)
solve1((s << 1) + 1, _ + 1, r, x, y);
if (_ >= x)
solve1(s << 1, l, _, x, y);
}
void solve2(int s, int l, int r, int x, int y)
{
if (l >= x && r <= y)
{
r2 = (r2 + h2[s] * p[nw] % mod) % mod;
nw += (r - l + 1);
return;
}
int _ = (l + r) >> 1;
if (_ >= x)
solve2((s << 1) + 1, _ + 1, r, x, y);
if (_ + 1 <= y)
solve2(s << 1, l, _, x, y);
}
signed main()
{
// freopen(".in", "r", stdin);
// freopen(".out", "w", stdout);
// ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); // iostream加速
int t = read();
p[0] = 1;
for (int _ = 1; _ <= 5e5; ++_)
p[_] = p[_ - 1] * P % mod;
while (t--)
{
memset(h1, 0, sizeof h1);
memset(h1, 0, sizeof h2);
int n = read();
for (int _ = 1; _ <= n; ++_)
a[_] = read();
bool flag = 0;
for (int _ = 1; _ <= n; ++_)
{
add(1, 1, n, a[_]);
int len = min(a[_], n - a[_] + 1);
r1 = r2 = nw = 0;
solve1(1, 1, n, a[_] - len + 1, a[_] + len - 1);
nw = 0;
solve2(1, 1, n, a[_] - len + 1, a[_] + len - 1);
if (r1 != r2)
{
flag = 1;
break;
}
}
if (flag)
putchar('Y'), putchar('\n');
else
putchar('N'), putchar('\n');
}
return 0;
}
```
@[朦胧_XY](/user/358971)
by liangjiaqi2021 @ 2023-12-09 14:20:06
@[2016537741mimo](/user/580581)
by liangjiaqi2021 @ 2023-12-09 14:20:33