P4046 JSOI2010 快遞服務

2022-02-27 18:32:28 字數 649 閱讀 9982

傳送門

很容易想出\(o(n^3m)\)的方程,三維分別表示某個快遞員現在在**,然後直接遞推即可

然而這樣會t,考慮怎麼優化。我們發現每一天的時候都有乙個快遞員的位置是確定的,即在前一天要到的位置。那麼我們只要列舉剩下的兩個人分別在**就行了,複雜度變為\(o(n^2m)\)

//minamoto

#include#define fp(i,a,b) for(register int i=a,i=b+1;ii;--i)

#define go(u) for(register int i=head[u],v=ver[i];i;i=next[i],v=ver[i])

#define inf 0x3f3f3f3f

using namespace std;

templateinline bool cmin(t&a,const t&b)

const int n=205,m=1005;

int g[n][n],dp[2][n][n],a[m],n,m,ans=inf;

int main()

} fp(i,1,m)fp(j,1,m)cmin(ans,dp[n&1][i][j]);

printf("%d\n",ans);return 0;

}

P4046 JSOI2010 快遞服務

題目鏈結 雙倍經驗 有 m 個位置,從位置 p 移動到位置 q 需要花費 c p,q 的價錢,但並不保證 c p,q c q,p 現在有三個員工,初始位置在 1,2,3 和有 n 個請求,任何時刻只有一名員工可以移動,且不允許同一位置上有 2 個以上員工。第 i 個請求發生在位置 p i 公司必須按...

題解 P4046 JSOI2010 快遞服務

這道題其實和sp703 service mobile service一樣 看到這到題,很容易想到一種定義狀態的方式 f i x y z 表示完成前 i 個請求,三個人的位置分別在 x,y,z 但很明顯如果這麼定義會超空間,所以想辦法減掉一位,因為完成請求必須要有乙個人在請求發生的位置,那麼,我們就可...

P4171 JSOI2010 滿漢全席

傳送門 顯然的 2 sat 問題,甚至不用輸出方案 每種菜不是漢式就是滿式,分成兩個節點 i,n i 分別表示滿式和漢式 對於限制 m i,m j 如果 i 為漢式則 j 一定要為滿式,如果 j 為漢式 i 一定為滿式 所以連邊 n i,j n j,i 其他情況同理,最後 tarjan 縮一下聯通塊...