Bzoj3876 Ahoi2014 支線劇情

2022-05-13 12:33:06 字數 2361 閱讀 3318

time limit: 10 sec  memory limit: 256 mb

submit: 1686  solved: 1031

【故事背景】

宅男jyy非常喜歡玩rpg遊戲,比如仙劍,軒轅劍等等。不過jyy喜歡的並不是戰鬥場景,而是類似電視劇集一般的充滿恩怨情仇的劇情。這些遊戲往往

都有很多的支線劇情,現在jyy想花費最少的時間看完所有的支線劇情。

【問題描述】

jyy現在所玩的rpg遊戲中,一共有n個劇情點,由1到n編號,第i個劇情點可以根據jyy的不同的選擇,而經過不同的支線劇情,前往ki種不同的新的劇情點。當然如果為0,則說明i號劇情點是遊戲的乙個結局了。

jyy**乙個支線劇情需要一定的時間。jyy一開始處在1號劇情點,也就是遊戲的開始。顯然任何乙個劇情點都是從1號劇情點可達的。此外,隨著遊戲的進行,劇情是不可逆的。所以遊戲保證從任意劇情點出發,都不能再回到這個劇情點。由於jyy過度使用修改器,導致遊戲的「存檔」和「讀檔」功能損壞了,

所以jyy要想回到之前的劇情點,唯一的方法就是退出當前遊戲,並開始新的遊戲,也就是回到1號劇情點。jyy可以在任何時刻退出遊戲並重新開始。不斷開始新的遊戲重複**已經看過的劇情是很痛苦,jyy希望花費最少的時間,看完所有不同的支線劇情。

輸入一行包含乙個正整數n。

接下來n行,第i行為i號劇情點的資訊;

第乙個整數為,接下來個整數對,bij和tij,表示從劇情點i可以前往劇

情點,並且**這段支線劇情需要花費的時間。

輸出一行包含乙個整數,表示jyy看完所有支線劇情所需要的最少時間。

62 2 1 3 2

2 4 3 5 4

2 5 5 6 600

024jyy需要重新開始3次遊戲,加上一開始的一次遊戲,4次遊戲的程序是

1->2->4,1->2->5,1->3->5和1->3->6。

對於100%的資料滿足n<=300,0<=ki<=50,1<=tij<=300,sigma(ki)<=5000

by 佚名上傳

圖論 網路流 有下界的費用流

我們愉快地發現這是乙個dag,那麼就可以愉快地跑網路流。

每個支線劇情(即每條邊)都需要經過至少一次,要求總代價最小,可以用帶下界的最小費用流解決。

從1以外的每個點向點1連邊(對應「重開遊戲」操作),正好可以把原圖轉化成乙個無源匯圖。

具體連邊方法:

虛擬源匯s和t。

對於每條邊 u -> v:

從s向v連邊,容量為1,費用為dis(u,v),限制至少走一次

從u向v連邊,容量為inf,費用為dis(u,v),表示可以走多次

對於每個點u

若u!=1,從u向1連邊,容量為inf,費用為0

從u向t連邊,容量為u的出度,費用為0

(思考一下可以發現這和有上下界的最大流的拆邊方法相同)

然而跑出來特別慢,7s才過,不知道status裡那些幾十ms的怎麼做到的

1

/*by silvern

*/2 #include3 #include4 #include5 #include6 #include7 #include8

using

namespace

std;

9const

int inf=0x3f3f3f3f;10

const

int mxn=100010;11

intread()

14while(ch>='

0' && ch<='9')

15return x*f;16}

17struct

edgee[mxn];

20int hd[650],mct=1

;21 inline void add_edge(int u,int v,int f,int

w)24 inline void insert(int u,int v,int f,int

w)27

//28

intn,m,k,s,t;

29int dis[320],pre[320

];30

bool inq[320

];31 queueq;

32bool

spfa()43}

44}45}

46return dis[t]48int

mcf()

56return

ans;57}

58int

main()

71if(i!=1)

72 insert(i,t,a,0

);73}74

int ans=mcf();

75 printf("

%d\n

",ans);

76return0;

77 }

BZOJ3876 AHOI2014支線劇情

思路 就是每條邊要經過最少一次咯,直接上下界網路流把下屆設定成1即可,當然一些關於類似匯點的處理方法細節就寫著 裡了。詳細的可以看別人的。貌似直接每條邊的流量下界設定成1,直接跑最小費用最大流?好像沒有乙個明確的匯點 假設增加乙個匯點的話 那麼結局點要向匯點連多少的邊?索性不要匯點 直接每個點向源點...

3876 Ahoi2014 支線劇情

time limit 10 sec memory limit 256 mb submit 1750 solved 1061 submit status discuss 故事背景 宅男jyy非常喜歡玩rpg遊戲,比如仙劍,軒轅劍等等。不過jyy喜歡的並不是戰鬥場景,而是類似電視劇集一般的充滿恩怨情仇的...

BZOJ 3876 支線劇情

支線劇情 故事背景 宅男jyy非常喜歡玩rpg遊戲,比如仙劍,軒轅劍等等。不過jyy喜歡的並不是戰鬥場景,而是類似電視劇集一般的充滿恩怨情仇的劇情。這些遊戲往往都有很多的支線劇情,現在jyy想花費最少的時間看完所有的支線劇情。問題描述 jyy現在所玩的rpg遊戲中,一共有n個劇情點,由1到n編號,第...