社区讨论
有个问题+进食后人
P5322[BJOI2019] 排兵布阵参与者 3已保存回复 4
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 4 条
- 当前快照
- 1 份
- 快照标识符
- @mhj3h281
- 此快照首次捕获于
- 2025/11/03 20:06 4 个月前
- 此快照最后确认于
- 2025/11/03 20:06 4 个月前
疑惑
为什么第一份能过第二份不能过
第一份:
CPP#include<bits/stdc++.h>
#define int long long
using namespace std;
int p[101][101];
int f[20005];
signed main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int s,n,m;
cin>>s>>n>>m;
for(int i=1;i<=s;i++){
for(int j=1;j<=n;j++){
int a;
cin>>a;
p[j][i]=a*2+1;
}
}
for(int i=1;i<=n;i++){
sort(p[i]+1,p[i]+1+s);
}
for(int i=1;i<=n;i++){
for(int j=m;j>=1;j--){
for(int k=1;k<=s;k++){
if(p[i][k]<=j){
f[j]=max(f[j],f[j-p[i][k]]+i*k);
}
}
}
}
cout<<f[m]<<"\n";
return 0;
}
第二份:
CPP#include<bits/stdc++.h>
#define int long long
using namespace std;
int p[101][101];
int f[20005];
signed main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int s,n,m;
cin>>s>>n>>m;
for(int i=1;i<=s;i++){
for(int j=1;j<=n;j++){
int a;
cin>>a;
p[j][i]=a*2;
}
}
for(int i=1;i<=n;i++){
sort(p[i]+1,p[i]+1+s);
}
for(int i=1;i<=n;i++){
for(int j=m;j>=1;j--){
for(int k=1;k<=s;k++){
if(p[i][k]<j){
f[j]=max(f[j],f[j-p[i][k]]+i*k);
}
}
}
}
cout<<f[m]<<"\n";
return 0;
}
进食后人
不要用 要用
原因在线等大佬解释
回复
共 4 条回复,欢迎继续交流。
正在加载回复...