为什么E过了96.4%

为什么我这个代码E没有全部通过

#include<bits/stdc++.h>

using namespace std;

#define int long long

const int N=2050

int f[N][N];

void solve()

{

int n,k;

cin>>n>>k;

for(int i=1;i<=n;i++)

{

int v,w;

cin>>v>>w;

f[i][v]=w;

for(int j=2000;j>=0;j--)

{

f[i][j]=max(f[i][j],f[i-1][j]);

// if(f[i][j&v]==0)

// f[i][j&v]=f[i-1][j]&w;

f[i][j&v]=max(f[i][j&v],f[i-1][j]&w);

}

}

int res=0;

for(int i=0;i<=k;i++)

{

//cout<<f[n][0]<<" ";

res=max(res,f[n][i]);

}

cout<<res;

}

signed main() {

int T;

T=1;

// cin>>T;

while(T--)

{

solve();

}

return 0;

}

全部评论
这个题看到好多人dp过我就其实没太懂 这个题明明不能dp的呀我感觉 如果你定义dpij表示前i个物品体积为j的最大价值那么当你转移dpi j&v的时候为什么一定用最大的dpij来转移得到的结果是最大的呢?这个题我觉得没有dp的转移的性质呀 上一步的最大并不一定能推出下一步最大
1 回复 分享
发布于 2024-05-24 21:24 重庆

相关推荐

01-07 07:54
已编辑
门头沟学院 前端工程师
点赞 评论 收藏
分享
Allen好Iverson:我看牛客都是20-30k的 这个3.9k爆出来有点,哈哈哈哈
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
昨天 15:00
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务