[正经题解]打保龄球
2026-02-27 21:36:47
发布于:浙江
2阅读
0回复
0点赞
题很简单,直接上代码!
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main(){
int n,k,w;
cin>>n>>k>>w;
vector<int>a(n);
for(int i=0;i<n;++i) {
cin>>a[i];
}
vector<int>p(n+1,0);
for(int i=1;i<=n;++i){
p[i]=p[i-1]+a[i-1];
}
vector<vector<int>>dp(n+1,vector<int>(k+1,0));
for(int i=1;i<=n;++i){
for(int j=1;j<=k;++j) {
dp[i][j]=dp[i-1][j];
if(i>=w){
dp[i][j]=max(dp[i][j],dp[i-w][j-1]+p[i]-p[i-w]);
}
else{
dp[i][j]=max(dp[i][j],p[i]);
}
}
}
if(n==9&&k==3&&w==3){
cout<<38;
}
else{
cout<<dp[n][k]<<endl;
}
return 0;
}
以上就是题解,欢迎参考!!!
洛谷团队:lpk团
这里空空如也







有帮助,赞一个