社区讨论

样例全过,为什么只有一个AC? 求助!

P2370yyy2015c01 的 U 盘参与者 4已保存回复 3

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
3 条
当前快照
1 份
快照标识符
@lwmx79w7
此快照首次捕获于
2024/05/26 10:28
2 年前
此快照最后确认于
2024/05/26 11:35
2 年前
查看原帖
CPP
#include <bits/stdc++.h>
using namespace std;
int n,p,s;
int w[1003],v[1003];
int f[1005][100003];
int main(){
    cin>>n>>p>>s;
    for (int i=1;i<=n;i++){
        cin>>w[i]>>v[i];
    }
    for (int i=1;i<=n;i++)
        for (int j=1;j<=n-i;j++)
            if (w[i]>w[i+1]){
                swap(w[i],w[i+1]);
                swap(v[i],v[i+1]);
            }

    for (int i=1;i<=n;i++){
        for (int j=1,k=1;j<=s;j++){
            if (k<w[i]){
                k++;
                j--;
            }
            else {
                f[i][j] = f[i-1][j];
                if(v[i]<=j)
                    f[i][j] = max(f[i-1][j],f[i-1][j-w[i]]+v[i]);
            }
        if (f[i][j]>=p){
            cout<< k;
            return 0;
        }}
    }
    if (f[n][s]<p){
        cout << "No Solution!";
        return 0;
    }
    return 0;
}

样例全过,为什么只有一个AC?

回复

3 条回复,欢迎继续交流。

正在加载回复...