虫洞(conch)

【题目描述】

HZY 现在在数轴原点处,她想跑到 2000001 这个点上。听说各路 神犇暑假里都在健♂身,所有 HZY 也想不要只是简单地跑步,于是她 决定在这条数轴上造虫洞,具体的,每次可以任选两个[1, 2000000] 之中的实数点,将它们用虫洞连接起来(为了避免不必要的时空错乱, 这两个点不能是同一个点,并且如果一个点已经和其它的点通过虫洞 相连,那就不能选)。 这样一来,在 HZY 跑步的过程中,一旦碰到了某个虫洞的一个端 口,就会从另一个端口出来,继续向正方向跑。 现在 HZY 已经建造了 n 个虫洞。她还想再建造 m 个虫洞,使得她 在跑步过程中穿过虫洞的次数最多。

【输入格式】 从文件 conch.in 中读入数据。 第一行一个整数 n,第二行一个整数 m。 接下来 m 行每行两个整数 a, b( a < b )描述一个已有虫洞的两个端 点。

【输出格式】 输出到文件 conch.out 中。 一行一个数表示再建造 m 个虫洞之后,最多的穿越次数。

input
3
1
10 11
1 4
2 3
output
6

input
3
1
1 3
4 6
2 5
output
8

n,m<=1000000

sol:先暴力走一遍,对于每个走过的虫洞的入口标记为已访问,再把走过的地方也标记为已访问,然后再扫一遍,可以算出没访问的就是一个个的环,每个环有不同贡献,按贡献大小造虫洞,如果m有多的就XJB特判一下

#include <bits/stdc++.h>
using namespace std;
typedef int ll;
inline ll read()
{
ll s=;
bool f=;
char ch=' ';
while(!isdigit(ch))
{
f|=(ch=='-'); ch=getchar();
}
while(isdigit(ch))
{
s=(s<<)+(s<<)+(ch^); ch=getchar();
}
return (f)?(-s):(s);
}
#define R(x) x=read()
inline void write(ll x)
{
if(x<)
{
putchar('-'); x=-x;
}
if(x<)
{
putchar(x+''); return;
}
write(x/);
putchar((x%)+'');
return;
}
#define W(x) write(x),putchar(' ')
#define Wl(x) write(x),putchar('\n')
const int N=;
int n,m,Go[N],ans=,Sum[N];
bool Vis[N];
inline int Play(int Pos)
{
int res=;
for(;Pos<=&&(!Vis[Pos]);Pos++)
{
Vis[Pos]=;
if(Go[Pos])
{
Pos=Go[Pos]; res++;
}
}
return res;
}
int main()
{
freopen("conch.in","r",stdin);
freopen("conch.out","w",stdout);
int i;
R(n); R(m);
for(i=;i<=n;i++)
{
int a,b; R(a); R(b); Go[a]=b; Go[b]=a;
}
for(i=;i<=;i++)
{
Vis[i]=;
if(Go[i]) {i=Go[i]; ans++;}
}
for(i=;i<=;i++)
{
if(!Vis[i]) Sum[++*Sum]=Play(i);
}
sort(Sum+,Sum+*Sum+);
for(i=*Sum;i>=;i--)
{
if(m) {ans+=Sum[i]+; m--;}
}
if(m) ans+=(m<<)-(m&);
Wl(ans);
return ;
}
/*
input
3
1
10 11
1 4
2 3
output
6 input
3
1
1 3
4 6
2 5
output
8
*/

2019 7.6 T2 虫洞的更多相关文章

  1. [多校联考2019(Round 5 T2)]蓝精灵的请求(二分图染色+背包)

    [多校联考2019(Round 5)]蓝精灵的请求(二分图染色+背包) 题面 在山的那边海的那边住着 n 个蓝精灵,这 n 个蓝精灵之间有 m 对好友关系,现在蓝精灵们想要玩一个团队竞技游戏,需要分为 ...

  2. 2019.2.21 T2题解

    meet 大概思路就是 , 找出相交的路径 , 判断方向 , 分类讨论.. 假设已经找出了相交路径 ... 若方向相同 , 则找到相交路径上边权的最大值 , 若最大值>出发时间差 , 则可行. ...

  3. 2019.2.15 t2

    考虑倒过来计算最短路径长度,设dis[u]表示在最坏情况下,点u到最近的一 个出口的最短路,则p个出口的dis值都是0,答案即为dis[0]. #include <cstdio> #inc ...

  4. 2019.2.14 t2 程序调试

    代码: #include <cstdio> #include <iostream> #include <cstring> #include <algorith ...

  5. kick start 2019 round D T2题解

    题目大意:由N个房子围成一个环,G个人分别顺时针/逆时针在房子上走,一共走M分钟,每分钟结束,每个人顺/逆时针走到相邻的房子.对于每个房子都会记录最后时刻到达的人(可能是一群人).最终输出每个人会被几 ...

  6. [多校联考2019(Round 4 T2)][51nod 1288]汽油补给(ST表+单调栈)

    [51nod 1288]汽油补给(ST表+单调栈) 题面 有(N+1)个城市,0是起点N是终点,开车从0 -> 1 - > 2...... -> N,车每走1个单位距离消耗1个单位的 ...

  7. PYTHON-模块time&datetime+ 目录规范

    1.目录规范 ***** (1)文件夹的规范写法 bin 可执行文件 conf 配置文件 core 主要业务逻辑 db 数据文件 lib 库 (公共代码 第三方模块) log 日志文件 readme ...

  8. datatime 模块

    import datetime # 这个是一个包 里面包含 对时间的处理 对日期的处理datetime.date # 日期相关datetime.time # 时间相关 # 获取当前详细时间print( ...

  9. 蓝书3.3 SPFA算法的优化

    T1 最小圈 bzoj 1486 题目大意: 一个环的权值平均值为定义为一个这个环上所有边的权值和除以边数 求最小的环的权值平均值 思路: 二分一个值 把所有边减去这个值 判断是否有负环 #inclu ...

随机推荐

  1. springboot实现上传并解析Excel

    添加pom依赖 <!-- excel解析包 --> <!-- https://mvnrepository.com/artifact/org.apache.poi/poi --> ...

  2. Codeforces 1236A. Stones

    传送门 注意到两种操作都要消耗中间的石头,并且两种操作每次都会得到 $3$ 个石头 那么显然优先做操作二是最优的,因为操作二只会消耗中间堆的一个石头 如果有剩下再进行操作 $1$ ,那么可以保证总操作 ...

  3. 【原创】大叔问题定位分享(33)oozie提交任务报错ArithmeticException: / by zero

    oozie提交workflow后执行task报错: 2019-07-04 17:19:00,559 ERROR [RMCommunicator Allocator] org.apache.hadoop ...

  4. swagger2 Could not resolve pointer: /definitions

    错误信息: Errors Resolver error at paths././query.post.parameters.20.schema.$ref Could not resolve refer ...

  5. js大神成长指路

    随着我的成长,我的兴趣也在不断地分化,他们似乎都是不相关的领域.我喜欢数学就像我喜欢历史一样.我的目标是成为一个多才多艺的人——一个学者——在许多领域都能成为杰出的人才.这是一项艰巨的任务.突然间,我 ...

  6. google 高清卫星照片

    rel: 如何下载 50 年前自己家乡的高清卫星照片 link: https://zhuanlan.zhihu.com/p/30953275

  7. Mybatis和hibernate的优缺点比较

    介绍: Hibernate :Hibernate 是当前最流行的ORM框架,对数据库结构提供了较为完整的封装. Mybatis:Mybatis同样也是非常流行的ORM框架,主要着力点在于POJO 与S ...

  8. web项目部署在centos 7验证码显示不出来解决方案

    今天把项目部署在centos7上,发现验证码显示不出来,看了一下tomcat日志 Exception in thread "http-nio-8080-exec-3" java.l ...

  9. 读书笔记《SpringBoot编程思想》

    目录 一. springboot总览 1.springboot特性 2.准备运行环境 二.理解独立的spring应用 1.应用类型 2.@RestController 3.官网创建springboot ...

  10. Win7系统开机速度慢怎么解决?

    Win7系统使用时间长了,我们就会发现电脑的开机启动速度变慢了,其实除了关闭相应的启动项之外,我们还可以对电脑进行相关的系统配置,来使电脑能够更加快速的启动.下面好系统重装助手就来告诉你怎么解决Win ...