仙人掌

来源:互联网 发布:php 在线直播 编辑:程序博客网 时间:2024/05/06 08:01

仙人掌

题目描述:
LYK 在冲刺清华集训( THUSC)!于是它开始研究仙人掌,它想来和你一起分享它最近研究的结果。
如果在一个无向连通图中任意一条边至多属于一个简单环(简单环的定义为每个点至多经过一次),且不存在自环,我们称这个图为仙人掌。
LYK 觉得仙人掌还是太简单了,于是它定义了属于自己的仙人掌。
定义一张图为美妙的仙人掌,当且仅当这张图是一个仙人掌且对于任意两个不同的点 i,j,存在一条从 i 出发到 j 的路径,且经过的点的个数为|j-i|+1 个。
给定一张 n 个点 m 条边且没有自环的图, LYK 想知道美妙的仙人掌最多有多少条边。
数据保证整张图至少存在一个美妙的仙人掌。
输入格式:
第一行两个数 n,m 表示这张图的点数和边数。
接下来 m 行,每行两个数 u,v 表示存在一条连接 u,v 的无向边。
输出格式:
一个数表示答案
输入样例:
4 6
1 2
1 3
1 4
2 3
2 4
3 4
输出样例:
4
样例解释:
选择边 1-2,1-3,2-3,3-4,能组成美妙的仙人掌,且不存在其它美妙仙人掌有超过 4 条边。
数据范围:
对于 20%的数据 n<=3。
对于 40%的数据 n<=5。
对于 60%的数据 n<=8。
对于 80%的数据 n<=1000。
对于 100%的数据 n<=100000 且 m<=min(200000,n*(n-1)/2)。
思路:
定义一张图为美妙的仙人掌,当且仅当这张图是一个仙人掌
且对于任意两个不同的点 i,j,存在一条从 i 出发到 j 的
路径,且经过的点的个数为|j-i|+1 个。
对于i和i+1要经过2个点即只能是这两个点之间直接有一条边
这n-1条连接i和i+1的边一定选 选完这些边之后正好满足了
任意两点之间的要求
现在即在保证是仙人掌的前提下多选边
接下来选的边要保证没有交集 因为现在已经选了i到i+1的边
其他的边会和现在已经选的边形成环 若选两个有交集的边
则不满足仙人掌的性质
所以问题就转化成了线段覆盖……

#include<iostream>#include<cstdio>#include<algorithm>using namespace std;const int maxn=200010;int n,m,tot,ans;struct node{    int x;    int y;    bool operator < (node tmp)const    {        return y<tmp.y;    }}a[maxn*2];int main(){    freopen("cactus.in","r",stdin);    freopen("cactus.out","w",stdout);    int x,y;    scanf("%d%d",&n,&m);    for(int i=1;i<=m;i++)    {        scanf("%d%d",&x,&y);        if(x>=y) swap(x,y);        if(x+1==y) continue;        a[++tot].x=x;a[tot].y=y;    }    sort(a+1,a+tot+1);    int end=-1;    for(int i=1;i<=tot;i++)    if(a[i].x>=end)    {        end=a[i].y;        ans++;    }    cout<<ans+n-1;    fclose(stdin);fclose(stdin);    return 0;}
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 脸上被打了紫了怎么办 王者荣耀队友太坑怎么办 大脸不想戴泳帽怎么办 脐带掉了有血怎么办 颈椎不小心扭了怎么办 遇不到合适的人怎么办 老爸不爱吃饭身体不好怎么办 小朋友在日本旅游生病怎么办 小朋友不吃饭装生病怎么办 带小朋友去苏梅岛生病了怎么办 练完舞蹈腿疼怎么办 过度运动后肌肉特别酸痛怎么办 锻炼把脚扭伤了怎么办 生完孩子变胖了怎么办 喝了啤酒肚子撑怎么办 小孩把口香糖吞进肚子怎么办 臂力器手柄坏了怎么办 30臂力棒掰不动怎么办 杯子盖子拧紧了打不开怎么办 深蹲以后腿软怎么办 小孩摔跤破皮了怎么办 手机qq账号密码忘了怎么办 刚满月宝宝喷奶怎么办 两个月的宝宝不爱吃奶怎么办 仓鼠走路画圈了怎么办 力气大但扳手腕不行怎么办 只睡了两个小时怎么办 微博账号被冻结了怎么办 微博一天多次解冻怎么办 肿瘤对化疗不敏感怎么办 2个月宝宝肺炎怎么办 小孩咳嗽2个月怎么办 两个月的小孩子气管炎怎么办? 小孩子两个月发烧38度怎么办 两个月的小孩子咳嗽怎么办 5个月宝宝吃奶少怎么办 26岁的1型糖尿病怎么办 睡前吃得太饱怎么办 胰岛素2小时>300怎么办 血清c肽测定高怎么办 体测蛋白质和骨骼肌偏高怎么办