码迷,mamicode.com
首页 > 其他好文 > 详细

P1119: [POI2009]SLO

时间:2015-09-16 19:48:42      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:

这题预处理稍微动动脑,其实还是个裸的置换群=-=,没什么压力。

 1 const maxn=1000001;
 2 var n,i,j,minx,tem,now,tmin,len:longint;
 3 cursum,sum:int64;
 4 pos,num,tnum,ys:array[0..maxn] of longint;
 5 p:array[0..maxn] of boolean;
 6 function min(a,b:longint):longint;
 7 begin
 8   if a>b then exit(b)    
 9     else exit(a);
10 end;
11 begin
12   readln(n);
13   minx:=maxn;
14   for i:=1 to n do
15     begin
16       read(tnum[i]);
17       minx:=min(minx,tnum[i]);
18     end;
19   readln;
20   for i:=1 to n do
21     begin
22       read(tem);
23       num[i]:=tnum[tem];
24       ys[tem]:=i;
25     end;
26   readln;
27   for i:=1 to n do
28     begin
29       read(tem);
30       pos[ys[tem]]:=i;
31     end;
32   fillchar(p,sizeof(p),true);
33   for i:=1 to n do
34     if p[i] then
35       begin
36         cursum:=0;
37         now:=i;
38         len:=0;
39         tmin:=num[i];
40         while p[now] do
41           begin
42             inc(len);
43             tmin:=min(tmin,num[now]);
44             inc(cursum,num[now]);
45             p[now]:=false;
46             now:=pos[now];
47           end;
48         if len>1 then inc(sum,cursum);
49         if len>2 then inc(sum,min(tmin*(len-2),minx*(len+1)+tmin));
50       end;
51   writeln(sum);
52 end.

 

P1119: [POI2009]SLO

标签:

原文地址:http://www.cnblogs.com/Kalenda/p/4814170.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!