投递拼多多集团-PDD等公司10个岗位 >
0 点赞 评论 收藏
分享
投递百度等公司10个岗位 >
0 点赞 评论 收藏
分享
林不厌:刚接到HR电话,简单聊了聊我的情况,然后被告知通过,明天会把offer发邮箱里,第一份工作,还愿牛客!
投递字节跳动等公司10个岗位 >
0 点赞 评论 收藏
分享
投递百度等公司10个岗位 >
0 点赞 评论 收藏
分享
投递携程等公司10个岗位 >
0 点赞 评论 收藏
分享
牛客595459334号:为啥三道题都是18%。。有这么巧合么
投递美团等公司10个岗位 >
0 点赞 评论 收藏
分享
≈666≈:第二题为啥我也是直接这么做的,样例能过,但是测试通过0
投递字节跳动等公司10个岗位 >
0 点赞 评论 收藏
分享
0 点赞 评论 收藏
分享
fee-feng:public static void main(String[] args){
int n,m,c;
n=sc.nextInt();
m=sc.nextInt();
for(int i=0 ; i<n ; i++ ){
int sum=0;// 求该层的物品价值总和
c=sc.nextInt();
for(int j=0 ; j<c ; j++ ){
a[j] = sc.nextInt();
sum+=a[j];
}
Arrays.fill(val,0);
for(int k=1 ; k<=c ; k++){ // 当前层获得k件物品可得的最大值存入val
int index= 0 , now = 0;// 滑动窗口,窗口大小为c-k
while(index < c-k)// 初始窗口 从第一个开始累加
now +=a[index++];
val[k] = Math.max(val[k],sum-now);
while(index<c){ // 开始往右边移动
now+= a[index];
now-=a[index-(c-k)];
val[k] = Math.max(val[k],sum-now); //求的是窗口以外的数和最大值
index++;
}
}
// 此时该层的val已经求出 01背包求解
for(int j=m ; j>0 ; j--){
for(int k=1 ; k<= Math.min(j,c) ; j++ )
dp[j] = Math.max(dp[j],dp[j-k]+val[k]);
}
}
System.out.println(dp[m]);
}
投递阿里巴巴等公司10个岗位 >
0 点赞 评论 收藏
分享
投递乐鑫等公司10个岗位 >
0 点赞 评论 收藏
分享
已注销:经典题,UVA 1642
投递拼多多集团-PDD等公司10个岗位 >
0 点赞 评论 收藏
分享
关注他的用户也关注了: