P1119: [POI2009]SLO

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

 const maxn=;
var n,i,j,minx,tem,now,tmin,len:longint;
cursum,sum:int64;
pos,num,tnum,ys:array[..maxn] of longint;
p:array[..maxn] of boolean;
function min(a,b:longint):longint;
begin
if a>b then exit(b)
else exit(a);
end;
begin
readln(n);
minx:=maxn;
for i:= to n do
begin
read(tnum[i]);
minx:=min(minx,tnum[i]);
end;
readln;
for i:= to n do
begin
read(tem);
num[i]:=tnum[tem];
ys[tem]:=i;
end;
readln;
for i:= to n do
begin
read(tem);
pos[ys[tem]]:=i;
end;
fillchar(p,sizeof(p),true);
for i:= to n do
if p[i] then
begin
cursum:=;
now:=i;
len:=;
tmin:=num[i];
while p[now] do
begin
inc(len);
tmin:=min(tmin,num[now]);
inc(cursum,num[now]);
p[now]:=false;
now:=pos[now];
end;
if len> then inc(sum,cursum);
if len> then inc(sum,min(tmin*(len-),minx*(len+)+tmin));
end;
writeln(sum);
end.

(转载请注明出处:http://www.cnblogs.com/Kalenda/)

上一篇:tornado模板的自动编码问题(autoescape )


下一篇:spring的jar包的下载、说明