P1119: [POI2009]SLO

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

 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.
时间: 2024-10-02 10:21:16

P1119: [POI2009]SLO的相关文章

【BZOJ 1119】 1119: [POI2009]SLO (置换)

1119: [POI2009]SLO Description 对于一个1-N的排列(ai),每次你可以交换两个数ax与ay(x<>y),代价为W(ax)+W(ay) 若干次交换的代价为每次交换的代价之和.请问将(ai)变为(bi)所需的最小代价是多少. Input 第一行N.第二行N个数表示wi.第三行N个数表示ai.第四行N个数表示bi. 2<=n<=1000000 100<=wi<=6500 1<=ai,bi<=n ai各不相等,bi各不相等 (ai)&

BZOJ1119: [POI2009]SLO

1119: [POI2009]SLO Time Limit: 30 Sec  Memory Limit: 162 MBSubmit: 379  Solved: 181[Submit][Status] Description 对于一个1-N的排列(ai),每次你可以交换两个数ax与ay(x<>y),代价为W(ax)+W(ay) 若干次交换的代价为每次交换的代价之和.请问将(ai)变为(bi)所需的最小代价是多少. Input 第一行N. 第二行N个数表示wi. 第三行N个数表示ai. 第四行N个

bzoj1697:[Usaco2007 Feb]Cow Sorting牛排序 &amp; bzoj1119:[POI2009]SLO

思路:以bzoj1119为例,题目已经给出了置换,而每一次交换的代价是交换二者的权值之和,而置换一定是会产生一些环的,这样就可以只用环内某一个元素去置换而使得其余所有元素均在正确的位置上,显然要选择环内最小的数,但也可能存在一个数使得它不在当前处理的环内而它先与当前环内某个数进行交换,然后再在环内进行交换,再将之前那个数换回来,这样也显然要选择所有元素中最小的和当前环内最小的进行交换,然后取个min即可.然后还要注意可能当前环内最小的就是所有元素中最小的,特判一下即可. 1 #include<i

【VMCloud云平台】SCOM配置(十三)-创建SLO(二)

SCCM中有一种功能叫做安全基线扫描,可以针对安全策略来设置基线检测.在SCOM中也有相似的功能,那就是SLO,可以针对某些条件进行SLO判断,即上一篇讲完创建SLO规则后,这一篇将讲述如何利用该SLO进行创建仪表盘,如何以报表形式呈现(紫色为完成实施,红色为实施中): 1. 登录到SCOM管理控制台,点击我的工作区,右键新建-仪表盘 2. 接着选择视图布局-服务级别仪表板: 3. 输入仪表板名称: 4. 选择添加SLO规则: 5. 确认摘要并点击创建: 6. 创建成功: 7. 稍等片刻就可以看

洛谷P1119 灾后重建(floyd)

P1119 灾后重建 题目背景 B地区在地震过后,所有村庄都造成了一定的损毁,而这场地震却没对公路造成什么影响.但是在村庄重建好之前,所有与未重建完成的村庄的公路均无法通车.换句话说,只有连接着两个重建完成的村庄的公路才能通车,只能到达重建完成的村庄. 题目描述 给出B地区的村庄数N,村庄编号从0到N-1,和所有M条公路的长度,公路是双向的.并给出第i个村庄重建完成的时间t[i],你可以认为是同时开始重建并在第t[i]天重建完成,并且在当天即可通车.若t[i]为0则说明地震未对此地区造成损坏,一

BZOJ 1115: [POI2009]石子游戏Kam

1115: [POI2009]石子游戏Kam Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 924  Solved: 574[Submit][Status][Discuss] Description 有N堆石子,除了第一堆外,每堆石子个数都不少于前一堆的石子个数.两人轮流操作每次操作可以从一堆石子中移走任意多石子,但是要保证操作后仍然满足初始时的条件谁没有石子可移时输掉游戏.问先手是否必胜. Input 第一行u表示数据组数.对于每组数据,第一行

bzoj1137【POI2009】Wsp 岛屿

1137: [POI2009]Wsp 岛屿 Time Limit: 10 Sec  Memory Limit: 162 MBSec  Special Judge Submit: 75  Solved: 38 [Submit][Status][Discuss] Description Byteotia岛屿是一个凸多边形.城市全都在海岸上.按顺时针编号1到n.任意两个城市之间都有一条笔直的道路相连.道路相交处可以自由穿行.有一些道路被游击队控制了,不能走,但是可以经过这条道路与未被控制的道路的交点.

BZOJ 1137: [POI2009]Wsp 岛屿 半平面交

1137: [POI2009]Wsp 岛屿 Time Limit: 10 Sec  Memory Limit: 162 MBSec  Special JudgeSubmit: 165  Solved: 78[Submit][Status][Discuss] Description Byteotia岛屿是一个凸多边形.城市全都在海岸上.按顺时针编号1到n.任意两个城市之间都有一条笔直的道路相连.道路相交处可以自由穿行.有一些道路被游击队控制了,不能走,但是可以经过这条道路与未被控制的道路的交点.问

BZOJ1115: [POI2009]石子游戏Kam

1115: [POI2009]石子游戏Kam Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 500  Solved: 308[Submit][Status] Description 有N堆石子,除了第一堆外,每堆石子个数都不少于前一堆的石子个数.两人轮流操作每次操作可以从一堆石子中移走任意多石子,但是要保证操作后仍然满足初始时的条件谁没有石子可移时输掉游戏.问先手是否必胜. Input 第一行u表示数据组数.对于每组数据,第一行N表示石子堆数,第