~~先证明一下你是女的,我再帮你调。~~
能加 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