P2891???
  • 板块灌水区
  • 楼主zhoukaixiang
  • 当前回复3
  • 已保存回复3
  • 发布时间2022/10/27 07:57
  • 上次更新2023/10/27 05:41:22
查看原帖
P2891???
832244
zhoukaixiang楼主2022/10/27 07:57
#include<bits/stdc++.h>
using namespace std;
long long n, t, sum, mini = LONG_LONG_MAX, v[1005], c[1005], dp[1000005], p[1000005];
signed main()
{
    cin >> n >> t;
    for(int i = 1; i <= n; i ++)
    {
        cin >> v[i]; 
    }
    for(int i = 1; i <= n; i ++)
    {
        cin >> c[i];
        sum += v[i] * c[i];
    }
    if(sum < t) 
    {
        cout << -1;
        return 0;
    } 
    memset(dp, 0x3f, sizeof dp);
    memset(p, 0x3f, sizeof p);
    dp[0] = 0;
    p[0] = 0;
    for(int i = 1; i <= n; i ++)
    {
        for(int k = 1; k <= c[i]; k ++)
        {
            for(int j = sum; j >= v[i] * k; j --)
            {
                dp[j] = min(dp[j], dp[j - v[i] * k] + k);
            }
        } 
    } 
    for(int i = 1; i <= n; i ++)
    {
        for(int j = v[i]; j <= sum; j ++)
        {
            p[j] = min(p[j], p[j - v[i]] + 1);
        }
    } 
    for(int i = 1; i <= sum; i ++)
    {
        mini = min(mini, p[i] + dp[t + i]); 
    }
    if(mini > INT_MAX)  cout << -1;
    else  cout << mini;
    return 0;
}
1 RE + 3 AC + 2 WA + 4 TLE
不是我针对谁在坐都是大佬
2022/10/27 07:57
加载中...