P1940 Reversible Number 0分求解
查看原帖
P1940 Reversible Number 0分求解
1267517
pengyilin楼主2024/5/13 23:23

这题。。。

虽说是暂无评定,但测评记录还是有一个大神AC了的。

So,这题0分求解,可以给关注。

这题就连题解都是错的。

#include<bits/stdc++.h>
using namespace std;
#define ll long long 
#define rl register ll
constexpr ll N = 55, M = 1e5 +10;
ll n, m = 1, q, a[N], f[M], c[N], ans, w;
inline ll gcd(ll a, ll b) { return b ? gcd(b, a % b) : a; }
int main()
{
    cin >> n >> q;
    for(rl i=1; i <= n; ++ i) 
    {
        cin >> a[i] >> c[i];
        if(w * a[i] < m * c[i]) w = c[i], m = a[i];
    }
    for(rl i=1; i < m; ++ i) f[i] = -1e18;
    for(rl i=1; i <= n; ++ i)
        for(rl j=0, lim = gcd(m, a[i]); j < lim; ++ j)
            for(rl t = j, asd = 0; asd < 2; asd += t == j)
            {
                ll p = (t + a[i]) % m;
                f[p] = max(f[p], f[t] + c[i] - ((t + a[i]) / m) * w), t = p;
            }
    while(q -- )
    {
        ll v; cin >> v;
        ll p = v % m;
        if(f[p] < -1e17) puts("-1");
        else cout << f[p] + v / m * w << endl;
    }
    return 0;
}
2024/5/13 23:23
加载中...