女生求调 WA 70pts。

P4774 [NOI2018] 屠龙勇士

~~先证明一下你是女的,我再帮你调。~~ 能加 QQ 交流吗,QQ 号在我主页
by 方123456 @ 2023-05-26 19:05:34


您这代码真看不懂,码风奇特(bushi
by zhzkiller @ 2023-05-26 19:06:20


@[QAQ__](/user/627636) ~~你说得对,但是btd该杀 QwQ~~
by vicky128 @ 2023-05-26 19:07:23


神仙马蜂+变量名: ``` #include <iostream> #include <algorithm> #define int long long using namespace std; int a[100005], p[100005], qwasd[100005], TLEWA[100005], pref[200005], rzh123[100005], sol[100005], qwq[100005], QAQ[100005], awa[100005]; __int128 x, y, t, ans; __int128 exgcd(__int128 a, __int128 b) { if (!b) { x = 1; y = 0; return a; } ans = exgcd(b, a % b); t = x; x = y; y = t - a / b * y; return ans; } int query(int x) { int summ = 0; while (x) { summ += pref[x]; x -= x & -x; } return summ; } void addd(int x, int v) { while (x <= 200000) { pref[x] += v; x += x & -x; } } int kth(int v) { int ans = 0, seele = 0; for (int i = 26; i-- > 0;) { ans += 1 << i; if (ans > 200000 || seele + pref[ans] >= v) ans -= 1 << i; else seele += pref[ans]; } return ans + 1; } signed main() { int t, n, m, d, seele, AK, IOI, maxx; bool flag; cin >> t; while (t--) { flag = false; cin >> n >> m; for (int i = 1; i <= n; i++) cin >> a[i]; for (int i = 1; i <= n; i++) cin >> p[i]; for (int i = 1; i <= n; i++) cin >> qwasd[i], qwq[i] = qwasd[i]; for (int i = 1; i <= m; i++) cin >> TLEWA[i], qwq[i + n] = TLEWA[i]; for (int i = 1; i <= n; i++) flag |= a[i] > p[i]; sort(qwq + 1, qwq + 1 + n + m); for (int i = 1; i <= n; i++) QAQ[i] = lower_bound(qwq + 1, qwq + 1 + n + m, qwasd[i]) - qwq; for (int i = 1; i <= m; i++) awa[i] = lower_bound(qwq + 1, qwq + 1 + n + m, TLEWA[i]) - qwq; for (int i = 1; i <= 200000; i++) pref[i] = 0; for (int i = 1; i <= m; i++) addd(awa[i], 1); for (int i = 1; i <= n; i++) { rzh123[i] = kth(max(query(lower_bound(qwq + 1, qwq + 1 + n + m, a[i]) - qwq), 1ll)); addd(rzh123[i], -1); rzh123[i] = qwq[rzh123[i]]; addd(QAQ[i], 1); /*cout << rzh123[i] << ' ';*/ } // cout << endl; if (flag) { maxx = 0; for (int i = 1; i <= n; i++) maxx = max(maxx, (a[i] + rzh123[i] - 1) / rzh123[i]); cout << maxx << endl; continue; } flag = false; for (int i = 1; i <= n; i++) { if (a[i] % (d = exgcd(rzh123[i], p[i]))) { flag = true; continue; } (x *= a[i]) /= d; (y *= a[i]) /= d; AK = p[i] / d; IOI = rzh123[i] / d; if (x > 0) { seele = x; x = (x - 1) % AK + 1; y += ((seele - 1) / AK) * IOI; } else { seele = x; (x %= AK) += AK; y -= (-(seele / AK) + 1) * IOI; } sol[i] = x; } // for (int i=1; i<=n; i++) cout << sol[i] << ' '; cout << endl; if (flag) { cout << -1 << endl; continue; } __int128 r1, r2, m1, m2, p1, p2, l1, l2, k1; for (int i = 1; i < n; i++) { r1 = sol[i], r2 = sol[i + 1], m1 = p[i], m2 = p[i + 1], d = __gcd(m1, m2), flag |= (r2 - r1) % d; if (flag) break; p1 = m1 / d, p2 = m2 / d, exgcd(p1, p2), l1 = x, l2 = y, k1 = (r2 - r1) / d * l1, sol[i + 1] = r1 + k1 * m1 % ((m1 * m2) / __gcd(m1, m2)), p[i + 1] = (m1 * m2) / __gcd(m1, m2); ((sol[i + 1] %= p[i + 1]) += p[i + 1]) %= p[i + 1]; } cout << (flag ? -1 : sol[n]) << endl; } } ```
by da_ke @ 2023-05-26 19:08:21


@[zhzkiller](/user/764944)
by da_ke @ 2023-05-26 19:08:52


@[方123456](/user/128754) lsp 钓出来了
by _youdu666_ @ 2023-05-26 19:09:40


|