P2224 [HNOI2001]产品加工

Jisoo

这种背包是不是把一维扔进状态就都能做了啊

$dp_{i,j}$表示到了第i个任务的时候A机器工作了j时间,转移显然

有点卡时间,注意常数优化

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
int n;
int p;
int t[6005][4];
int dp[2][300005];
int sum;
int main(){
    scanf("%d",&n);
    for(int i=1;i<=n;++i){
        scanf("%d%d%d",&t[i][0],&t[i][1],&t[i][2]);
        sum=sum+max(max(t[i][0],t[i][2]),t[i][1]);
    }
    memset(dp,0x3f,sizeof(dp));
    dp[0][0]=0;
    for(int i=1;i<=n;++i){
        p^=1;
        int pre=p^1;
        memset(dp[p],0x3f,sizeof(dp[p]));
        for(int j=0;j<=sum;++j){
            if(t[i][0]!=0)
            dp[p][j]=min(dp[pre][j]+t[i][0],dp[p][j]);
            if(j>=t[i][2]&&t[i][2]!=0){
                dp[p][j]=min(dp[p][j],dp[pre][j-t[i][2]]+t[i][2]);
            }
            if(j>=t[i][1]&&t[i][1]!=0){
                dp[p][j]=min(dp[p][j],dp[pre][j-t[i][1]]);
            }
        }
    }
    int ans=999999999;
    for(int i=0;i<=sum;++i){
        ans=min(ans,max(dp[n&1][i],i));
    }
    cout<<ans;
    return 0;
}
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇