小白全RE 求大佬帮调!!

P2757 [国家集训队] 等差子序列

看~~不~~懂思密达(大悲)
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


|