警示后人(小细节,30->100)(这么玄学的吗.jpg)
查看原帖
警示后人(小细节,30->100)(这么玄学的吗.jpg)
576378
creation_hy楼主2022/11/8 12:59

思路:

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n, m, f[25][205];
struct node
{
    ll a, b;
} a[25];
inline ll qpow(ll x, ll y)
{
    ll res = 1;
    while (y)
    {
        if (y & 1)
            res *= x;
        x *= x;
        y >>= 1;
    }
    return res;
}
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    memset(f, 0x3f, sizeof(f));
    cin >> n >> m;
    for (int i = 1; i <= m; i++)
        cin >> a[i].a >> a[i].b;
    for (int i = 0; i <= m; i++)
        f[i][0] = 0;
    for (int i = 1; i <= m; i++)
        for (int j = 1; j <= n; j++)
            for (int k = 0; k <= j; k++)
                f[i][j] = min(f[i][j], f[i - 1][k] + a[i].a * qpow(j - k, a[i].b));
    cout << f[m][n];
    return 0;
}

注意这一行

for (int i = 0; i <= m; i++)
    f[i][0] = 0;

初始化必须让f[0][0]=0,否则30pts

2022/11/8 12:59
加载中...