题目背景

船が往くよミライへ旅立とう

船只启航 朝未来展开旅途

青い空笑ってる(なにがしたい?)

湛蓝天空露出微笑(想做些什么?)

ヒカリになろうミライを照らしたい

化作光芒吧 想就此照亮未来

輝きは心からあふれ出してもっと先の景色望むんだ

光辉自内心满溢而出 愿能望见更加前方的景色

Ah!やっと手にしたミライチケットかざして…!

Ah!挥舞起终于得手的未来门票…!

我们Aqours,终于闪闪发亮了!

2月25和26日,将是我们登上横滨ARENA演唱的日子!

而且,还要在全日本、甚至全世界的好多影院进行转播呢!

转播好像还是通过中继卫星传输的呢!

未来ずら!

题目描述

不过,好像中继卫星上,出了一些问题呢……

我们的中继卫星一共有N颗,编号成1到N。不过,好像一个中继卫星可以且仅可以单向地从另一颗中继卫星那儿接收数据。

第i颗卫星现在已经被设定到了从第Ai颗卫星 (称为接收源) 那儿接受数据。

不过这些中继卫星的接收源是可以修改的,只不过每次修改要花一定的资金呢。

听说要达成中继的话,这些卫星之间必须两两之间能够互相(直接或间接)通信才行啊。

虽然鞠莉家里很有钱,可是这么大的花费,也得提前准备一下呢。

所以,你能帮我们算算这样子一共最少要花多少钱吗?

输入输出格式

输入格式:

第一行1个整数N。

接下来N行,每行2个整数Ai,Ci,表示初始时,第i个中继卫星从第Ai颗卫星处接收数据,以及该卫星调整接收源的所需花费。

输出格式:

输出一个整数,表示鞠莉所需准备的最小的花费。

输入输出样例

输入样例#1:

4
2 2
1 6
1 3
3 1
输出样例#1:

5

说明

10% N<=10
40% N<=15
70% N<=3000
100% 2<=N<=100000, 1<=Ci<=10^9

以下是彩蛋

事实上LoveLive的直播卫星中继只有一颗星,而且永远都是不加密的。

导致只要有一个卫星锅就可以在家偷偷看直播,也就是传说中的卫星源。

lin_toto: 万代南梦宫都把浅水湾给买了,居然只有回放,只好跑到香港the sky去看+手动滑稽。

至于为什么看转播,eplus表示LoveLive系列演唱会的票大家尽管抽选尽管抢,买得到算我输。

于是lin_toto在去年μ's Final LoveLive的时候拿肉鸡把eplus搞趴下了,然后就买到了。

于是今年eplus连抢票都不让抢了,全抽选,抽得到算我输。

然后lin_toto就去看转播了。

大概是个贪心乱搞题。

先把所有的连有多条边的点上费用较小的边删去,使只剩一条边。

这时可能还有环,然后在环上讨论一下是选环上的最小边还是重新加上以前删掉的某条边再去掉那个点相邻的环上的边,这样乱搞一搞就好了。

然后要特判的就是如果整个图就是一个环,ans=0

吐槽:月赛的时候没开int64,挂成40;后来改了int64,80,怀疑自己算法错了;然后发现自己特判整个图是一个环的时候直接用所有点入度出度都是1判断了,所以就把多个环也判成一个环了;于是然后加了个并查集,过了。

 program rrr(input,output);
const
inf=;
type
etype=record
t,next:longint;
w:int64;
end;
var
e:array[..]of etype;
a,b,siz,father:array[..]of longint;
c:array[..]of int64;
n,i,j,k,cnt:longint;
ans,max,mmax,min:int64;
flag:boolean;
v,vis:array[..]of boolean;
procedure add(x,y:longint;w:int64);
begin
inc(cnt);e[cnt].t:=y;e[cnt].w:=w;e[cnt].next:=a[x];a[x]:=cnt;
end;
function find(k:longint):longint;
begin
if father[k]=k then exit(k);
father[k]:=find(father[k]);
exit(father[k]);
end;
begin
assign(input,'r.in');assign(output,'r.out');reset(input);rewrite(output);
readln(n);
fillchar(a,sizeof(a),);cnt:=;fillchar(siz,sizeof(siz),);
for i:= to n do begin readln(b[i],c[i]);inc(siz[b[i]]);add(b[i],i,c[i]); end;
flag:=true;
ans:=;
for i:= to n do
if a[i]<> then
begin
j:=a[i];max:=;
while j<> do
begin
ans:=ans+e[j].w;
if e[j].w>max then begin k:=e[j].t;max:=e[j].w; end;
j:=e[j].next;
end;
ans:=ans-max;
j:=a[i];
while j<> do begin if e[j].t<>k then b[e[j].t]:=;j:=e[j].next; end;
end
else flag:=false;
if flag then
begin
for i:= to n do father[i]:=i;
for i:= to n do
begin
j:=find(i);k:=find(b[i]);
if j<>k then father[j]:=k;
end;
flag:=true;
for i:= to n do if find(i)<>find() then begin flag:=false;break; end;
if flag then begin write();halt; end;
end;
fillchar(v,sizeof(v),false);
fillchar(vis,sizeof(vis),false);
for i:= to n do
if not v[i] then
begin
j:=i;flag:=false;
while true do
begin
if vis[j] then begin flag:=true;break; end;
if v[j] then break;
v[j]:=true;vis[j]:=true;
if b[j]= then break else j:=b[j];
end;
k:=i;while vis[k] do begin vis[k]:=false;k:=b[k]; end;
if not flag then continue;
min:=inf;
while not vis[j] do
begin
vis[j]:=true;
if c[j]<min then min:=c[j];
if siz[j]> then
begin
mmax:=;max:=;
k:=a[j];
while k<> do
begin
if e[k].w>mmax then begin max:=mmax;mmax:=e[k].w end
else if e[k].w>max then max:=e[k].w;
k:=e[k].next;
end;
if mmax-max<min then min:=mmax-max;
end;
j:=b[j];
end;
ans:=ans+min;
while vis[j] do begin vis[j]:=false;j:=b[j];end;
end;
write(ans);
close(input);close(output);
end.

洛谷P3656 展翅翱翔之时 (はばたきのとき)(洛谷2017.3月赛round1 t4)的更多相关文章

  1. 【洛谷P3651】展翅翱翔之时

    难以吐槽出题人的中二病…… 这题有点类似ZJOI2008 骑士,先跑树上的,最后拆环即可. #include<bits/stdc++.h> #define N 100005 typedef ...

  2. luogu3651 展翅翱翔之时 (はばたきのとき)[基环树+贪心]

    考前随便做点水题愉♂悦身心 有助于退役 这题意思其实就是说要把外向基环树森林改成一个环的最小代价. 依照套路,先对每棵基环树的树做dp,这里因为要是环,要把所有的树都拆成链,然后连接.所以考虑以最小代 ...

  3. [CodePlus 2017 11月赛&洛谷P4058]木材 题解(二分答案)

    [CodePlus 2017 11月赛&洛谷P4058]木材 Description 有 n棵树,初始时每棵树的高度为 Hi ,第 i棵树每月都会长高 Ai.现在有个木料长度总量为 S的订单, ...

  4. 洛谷八月月赛Round1凄惨记

    个人背景: 上午9:30放学,然后因为学校举办读书工程跟同学去书城选书,中午回来开始打比赛,下午又回老家,中间抽出一点时间调代码,回家已经8:50了 也许是7月月赛时“连蒙带骗”AK的太幸运然而因同学 ...

  5. 最小生成树 & 洛谷P3366【模板】最小生成树 & 洛谷P2820 局域网

    嗯... 理解生成树的概念: 在一幅图中将所有n个点连接起来的n-1条边所形成的树. 最小生成树: 边权之和最小的生成树. 最小瓶颈生成树: 对于带权图,最大权值最小的生成树. 如何操作? 1.Pri ...

  6. (bzoj1337 || 洛谷P1742 最小圆覆盖 )|| (bzoj2823 || 洛谷P2533 [AHOI2012]信号塔)

    bzoj1337 洛谷P1742 用随机增量法.讲解:https://blog.csdn.net/jokerwyt/article/details/79221345 设点集A的最小覆盖圆为g(A) 可 ...

  7. 洛谷 p6858 深海少女与胖头鱼 洛谷月赛 期望dp

    洛谷10月月赛 2 t2 深海少女与胖头鱼 题目链接 参考资料:洛谷10月赛2讲评ppt; 本篇题解考完那天就开始写,断断续续写到今天才写完 本题作为基础的期望dp题,用来学习期望dp还是很不错的 ( ...

  8. 莫队 [洛谷2709] 小B的询问[洛谷1903]【模板】分块/带修改莫队(数颜色)

    莫队--------一个优雅的暴力 莫队是一个可以在O(n√n)内求出绝大部分无修改的离线的区间问题的答案(只要问题满足转移是O(1)的)即你已知区间[l,r]的解,能在O(1)的时间内求出[l-1, ...

  9. (洛谷P2512||bzoj1045) [HAOI2008]糖果传递 || 洛谷P4016 负载平衡问题 || UVA11300 Spreading the Wealth || (洛谷P3156||bzoj3293) [CQOI2011]分金币

    bzoj1045 洛谷P4016 洛谷P2512 bzoj3293 洛谷P3156 题解:https://www.luogu.org/blog/LittleRewriter/solution-p251 ...

随机推荐

  1. 2017-2018-1 20155320 《信息安全系统设计基础》第四周学习总结(课堂实践补交+myhead与mytail加分项目)

    2017-2018-1 20155320 <信息安全系统设计基础>第四周学习总结(课堂实践补交+myhead与mytail实现) 课堂实践内容 1 参考教材第十章内容 2 用Linux I ...

  2. spring源码-aop源码-5.1

    一.aop的源码部分还是有点复杂的,但是为了更好的理解,我这里会省去很多不必要的逻辑实现过程.主要方向还是更好的理解整体代码的实现过程. 二.说明重点:aop的过程主要过程有两点:第一点,发现正确和适 ...

  3. django中的路由控制详解

    一 Django中路由的作用 二 简单的路由配置 三 有名分组 四 路由分发 五 反向解析 六 名称空间 七 django2.0版的path 一 Django中路由的作用 URL配置(URLconf) ...

  4. javaweb(十四)——JSP原理

    一.什么是JSP? JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术. JSP这门技术的最大的特点在于,写jsp就像在写h ...

  5. TW实习日记:第十天

    今天任务很简单,就是出品项目的时间轴显示页面和动态路由设置.其实时间轴页面很快就做完了,在做完处理完数据之后,然而有很多细节需要打磨,这就又考验了我面向搜索引擎编程的能力,根据需求百度了很多css的样 ...

  6. Eclipse用java.util.Scanner时出现Resource leak: 'in' is never closed

    Resource leak: 'in' is never closed : 直译为资源泄漏,‘in’一直没被关闭. 由于声明了数据输入扫描仪(Scanner in),从而获得了配置内存,但是结束时却没 ...

  7. PLSQL事务

    1 使用set transaction设置事务属性 2 只读事务 set transaction read only 3 读写事务 set transaction write; 4 在进行数据统计分析 ...

  8. Spark任务执行期间写临时文件报错导致失败

    spark任务在执行期间,有时候会遇到临时目录创建失败,导致任务执行错误. java.io.IOException: Failed to create local dir in -- spark执行过 ...

  9. Centos7部署Kubernetes集群(单工作节点)+配置dashboard可视化UI

    目标:docker+kubernetes+cadvosor+dashboard 一:物理硬件 两台虚拟机(centos7):一台做为主节点(master),一台做为工作节点(node) [root@M ...

  10. 【BUG】12小时制和24小时制获取当天零点问题

    [BUG]12小时制和24小时制获取当天零点问题 最近在写定时服务的时候,要获取当天的零点这个时间,但是是这样获取的 DateTime dt = DateTime.Parse(DateTime.Now ...