luogu 2157 狀壓dp

來源:互聯網
上載者:User

標籤:lin   inf   pac   lse   bre   reg   --   else   col   

f[i][j][k]分別代表1-i-1個人全部打完飯時i及其後7個人的狀態為j時最後一個打飯的人為i+k的狀態下所用的最小時間

當i已經打過飯時 即 j&1 那麼 f [i] [j>>1] [k+1] =min(~, f[i] [j] [k]);

如果沒有那麼枚舉其後的打飯的人同時注意要保證忍耐度的條件,所以利用r找i+h+b[i+h]的最小值,也就是i所能選取的最遠邊界

如果當前迴圈的h已經超過範圍r 那麼結束此次更新答案

否則 f[i] [j|(1<<h)] [h] =min(~ , f[i][j][k] + i+k?(t[i+k]^t[i+h]):0)

最終在n+1,處代表前n已經打完飯,j=0代表後面的狀態不再選取,k由-8到-1的全部情況

#include<bits/stdc++.h>#define rep(i,x,y) for(register int i=x;i<=y;i++)using namespace std;inline int read(){    int x=0,f=1;char ch=getchar();    while(!isdigit(ch)){if(ch==‘-‘)f=-1;ch=getchar();}    while(isdigit(ch)){x=(x<<1)+(x<<3)+(ch^48);ch=getchar();}    return x*f;}const int N=1050;const int inf=0x3f3f3f3f;int n,t[N],b[N],dp[N][1<<8][20];#define f(i,j,k) dp[i][j][k+8]inline void sudo(){ n=read();    rep(i,1,n) t[i]=read(),b[i]=read();    memset(dp,inf,sizeof dp);    f(1,0,-1)=0;    rep(i,1,n)rep(j,0,(1<<8)-1)    rep(k,-8,7)if(f(i,j,k)!=inf)        if(j&1) f(i+1,j>>1,k-1)=min(f(i+1,j>>1,k-1),f(i,j,k));        else{            int r=inf;            rep(h,0,7)if(!((j>>h)&1)){//在這個人之前的未打飯的人                 if(i+h>r) break;                r=min(r,i+h+b[i+h]);                //距離i的最遠距離                //判斷i+k就是判斷上一次是否是起點                 f(i,j|(1<<h),h)=min(f(i,j|(1<<h),h),f(i,j,k)+(i+k?(t[i+k]^t[i+h]):0));             }        }    int ans=inf; rep(k,-8,-1)    ans=min(ans,f(n+1,0,k));    printf("%d\n",ans);return;}int main(){    int T=read();while(T--) sudo();return 0;}

完結撒花

luogu 2157 狀壓dp

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.