/*
第一眼以为就是个区间覆盖
然后敲完提交60分0.0 然而觉得自己的做法很对
以为数据错了 后来发现XXX他的牛棚是一圈(牛过得挺好的啊 还能赏湖...)
然后枚举断开的点 可惜n=750 p=10000 这组数据TLE了 1.3秒的样子 90分
后来看题解说可以并查集 觉得好有道理的样子 0.0
下面是两次的代码
*/
#include<iostream>
#include<cstdio>
#include<algorithm>
#define maxn 10010
using namespace std;
struct node
{
int l,r;
}boy[maxn];
int cmp(const node &x,const node &y)
{
if(x.l==y.l)return x.r<y.r;
return x.l<y.l;
}
int n,p,k,ans,minn=;
int main()
{
scanf("%d%d",&n,&p);
int x,y;
for(int i=;i<=p;i++)
{
scanf("%d%d",&x,&y);
boy[i].l=x;boy[i].r=y;
}
for(k=;k<=n;k++)
{
ans=;
for(int i=;i<=p;i++)
{
if(boy[i].l<k)boy[i].l+=n;
if(boy[i].r<k)boy[i].r+=n;
if(boy[i].l>boy[i].r)swap(boy[i].l,boy[i].r);
}
sort(boy+,boy++p,cmp);
int ri=boy[].r,li=boy[].l;
for(int i=;i<=p;i++)
if(boy[i].l>ri)
{
ans=ans+ri-li;
li=boy[i].l;
ri=boy[i].r;
}
else ri=max(ri,boy[i].r);
ans=ans+ri-li;
minn=min(minn,ans);
}
printf("%d",minn);
return ;
}
/*
并查集
*/
#include<iostream>
#include<cstdio>
#include<cstring>
#define maxn 10010
using namespace std;
int fa[maxn],l[maxn],r[maxn],n,p,ans,Ans=;
int find(int x)
{
if(x!=fa[x])fa[x]=find(fa[x]);
return fa[x];
}
void unionn(int x,int y)
{
if(x>y)swap(x,y);
for(int i=x;i<y;i++)
if(find(i)!=find(i+))
{
ans++;
fa[find(i)]=find(i+);
}
}
int main()
{
cin>>n>>p;
for(int i=;i<=p;i++)
cin>>l[i]>>r[i];
for(int k=;k<=n;k++)
{
ans=;
for(int i=;i<=n*;i++)fa[i]=i;
for(int i=;i<=p;i++)
{
int tmp1=l[i],tmp2=r[i];
if(tmp1<k)tmp1=tmp1+n;
if(tmp2<k)tmp2=tmp2+n;
if(find(tmp1)!=find(tmp2))unionn(find(tmp1),find(tmp2));
}
Ans=min(Ans,ans);
}
cout<<Ans;
return ;
}

codevs1955光纤通信(并查集)的更多相关文章

  1. BZOJ 4199: [Noi2015]品酒大会 [后缀数组 带权并查集]

    4199: [Noi2015]品酒大会 UOJ:http://uoj.ac/problem/131 一年一度的“幻影阁夏日品酒大会”隆重开幕了.大会包含品尝和趣味挑战两个环节,分别向优胜者颁发“首席品 ...

  2. 关押罪犯 and 食物链(并查集)

    题目描述 S 城现有两座监狱,一共关押着N 名罪犯,编号分别为1~N.他们之间的关系自然也极不和谐.很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突.我们用"怨气值"( ...

  3. 图的生成树(森林)(克鲁斯卡尔Kruskal算法和普里姆Prim算法)、以及并查集的使用

    图的连通性问题:无向图的连通分量和生成树,所有顶点均由边连接在一起,但不存在回路的图. 设图 G=(V, E) 是个连通图,当从图任一顶点出发遍历图G 时,将边集 E(G) 分成两个集合 T(G) 和 ...

  4. bzoj1854--并查集

    这题有一种神奇的并查集做法. 将每种属性作为一个点,每种装备作为一条边,则可以得到如下结论: 1.如果一个有n个点的连通块有n-1条边,则我们可以满足这个连通块的n-1个点. 2.如果一个有n个点的连 ...

  5. [bzoj3673][可持久化并查集 by zky] (rope(可持久化数组)+并查集=可持久化并查集)

    Description n个集合 m个操作 操作: 1 a b 合并a,b所在集合 2 k 回到第k次操作之后的状态(查询算作操作) 3 a b 询问a,b是否属于同一集合,是则输出1否则输出0 0& ...

  6. [bzoj3123][sdoi2013森林] (树上主席树+lca+并查集启发式合并+暴力重构森林)

    Description Input 第一行包含一个正整数testcase,表示当前测试数据的测试点编号.保证1≤testcase≤20. 第二行包含三个整数N,M,T,分别表示节点数.初始边数.操作数 ...

  7. 【BZOJ-3673&3674】可持久化并查集 可持久化线段树 + 并查集

    3673: 可持久化并查集 by zky Time Limit: 5 Sec  Memory Limit: 128 MBSubmit: 1878  Solved: 846[Submit][Status ...

  8. Codeforces 731C Socks 并查集

    题目:http://codeforces.com/contest/731/problem/C 思路:并查集处理出哪几堆袜子是同一颜色的,对于每堆袜子求出出现最多颜色的次数,用这堆袜子的数目减去该值即为 ...

  9. “玲珑杯”ACM比赛 Round #7 B -- Capture(并查集+优先队列)

    题意:初始时有个首都1,有n个操作 +V表示有一个新的城市连接到了V号城市 -V表示V号城市断开了连接,同时V的子城市也会断开连接 每次输出在每次操作后到首都1距离最远的城市编号,多个距离相同输出编号 ...

随机推荐

  1. c# 無彈窗调用打印机

    using System; using System.Collections.Generic; using System.Text; using System.Configuration; using ...

  2. Zephyr-开发流程

    开发流程 前提1:检查你的Linux主机满足入门指南中规定的最低要求. 具体请参考 :  物联网操作系统-Zephyr 前提2: 确保SDK的环境变量和zephyr项目的环境变量. 终端执行: $ e ...

  3. go程序性能优化

    性能优化总结: 1 尽量避免频繁创建对象,即减少&{},new,make的使用2 数组可当切片用,当需要使用切片时,可考虑能使用数组来减少切片的创建3 当某类临时对象被多个协频繁程使用时,可用 ...

  4. 用nodejs,express,ejs,mongo,extjs实现了简单了网站后台管理系统

    源代码下载地址:http://download.csdn.net/detail/guoyongrong/6498611 这个系统其实是出于学习nodejs的目的而改写的系统. 原来的系统前端使用了ex ...

  5. [转]Getting (personal) tasks from the user profile.

    from http://blog.amtopm.be/2013/02/22/getting-personal-tasks-from-the-user-profile/ Getting (persona ...

  6. myclips常用快捷键

    -------------------------------------MyEclipse 快捷键1(CTRL)-------------------------------------Ctrl+1 ...

  7. PHP+Mysql-表单数据插入数据库及数据提取完整过程

    网站在进行新用户注册时,都会将用户的注册信息存入数据库中,需要的时候再进行提取.今天写了一个简单的实例. 主要完成以下几点功能: (1)用户进行注册,实现密码重复确认,验证码校对功能. (2)注册成功 ...

  8. VS2010中编写宏添加作者信息与函数注释

    这里所说的宏是指通过一系列键盘组合键和可以插入自定义内容.下面介绍怎么编写一个自己的宏: 1.在Visual Studio 2010中按Alt+F11打开宏IDE: 2.打开后选择添加模块: 3.在弹 ...

  9. Data 语义学(1)

    一.Data Member 的绑定(The binding of Data Member) extern float x; class Point3d { public: Point3d( float ...

  10. MPI Maelstrom(Dijkstra)

    http://poj.org/problem?id=1502 刷一道模板题稳定一下心情... Dijkstra求单源最短路,就是输入的时候注意下,是按下三角输入的(无向图),输入字符x表示i与j不通. ...