仙人掌(cactus)

Time Limit:1000ms Memory Limit:64MB

题目描述

LYK 在冲刺清华集训(THUSC) !于是它开始研究仙人掌,它想来和你一起分享它最近
研究的结果。

如果在一个无向连通图中任意一条边至多属于一个简单环 (简单环的定义为每个点至多
经过一次) ,且不存在自环,我们称这个图为仙人掌。
LYK 觉得仙人掌还是太简单了,于是它定义了属于自己的仙人掌。
定义一张图为美妙的仙人掌, 当且仅当这张图是一个仙人掌且对于任意两个不同的点 i,j,
存在一条从 i 出发到 j 的路径,且经过的点的个数为|j-i|+1 个。
给定一张 n 个点 m 条边且没有自环的图,LYK 想知道美妙的仙人掌最多有多少条边。

数据保证整张图至少存在一个美妙的仙人掌。

输入格式(cactus.in)

第一行两个数 n,m 表示这张图的点数和边数。
接下来 m 行,每行两个数 u,v 表示存在一条连接 u,v 的无向边。

输出格式(cactus.out)

一个数表示答案

输入样例

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)。

思路:

  仙人掌可以简化为一个线段覆盖问题

  说白了就是每个点只能被一条线段覆盖(不包括线段两边的点)

  不能被更多的线段覆盖

  所以我们可以在预处理所有的边后进行一次贪心取边

  来,上代码:

#include<cstdio>
#include<iostream>
#include<algorithm>using namespace std;struct node {int from,to;
};
struct node edge[300001];int n,m,num=0,pd[200001],jkl;
int from,to,tmp,ans=0,cur=-1;char ch;void qread(int &x)
{x=0,jkl=1;ch=getchar();while(ch>'9'||ch<'0'){if(ch=='-')jkl=-1;ch=getchar();}while(ch>='0'&&ch<='9'){x=x*10+(int)(ch-'0');ch=getchar();}x*=jkl;
}void edge_add(int from,int to)
{num++;edge[num].to=to;edge[num].from=from;
}bool cmp1(struct node a,struct node b){return a.from>b.from;}bool cmp(struct node a,struct node b){return a.to<b.to;}int main()
{qread(n),qread(m);for(int i=1;i<=m;i++){qread(from),qread(to);if(from>to) tmp=from,from=to,to=tmp;//if(pd[to]==0&&from==to-1) ans++,pd[to]=1;//else edge_add(from,to);if(from+1==to) continue;edge_add(from,to);}sort(edge+1,edge+num+1,cmp1);sort(edge+1,edge+num+1,cmp);for(int i=1;i<=num;i++){if(edge[i].from>=cur){cur=edge[i].to;ans++;}}cout<<ans+n-1<<endl;return 0;
}

转载于:https://www.cnblogs.com/IUUUUUUUskyyy/p/6046323.html

仙人掌(cactus)相关推荐

  1. 仙人掌[cactus]

    目测图论 结果是区间覆盖 (╯‵□′)╯︵┻━┻ 尊重一下你的名字好吗 因为美妙的仙人掌的性质 我们可以知道对于任意一个点i i和i+1一定直接相连 这样就产生了一条链 根据美妙的仙人掌的性质 接下来 ...

  2. 点仙人掌(cactus)

    时间限制: 1 Sec 内存限制: 512 MB 题目描述 在一个没有重边和自环的无向图中,如果无向图是连通的,且每个点至多属于一个简单环,那么称这个图是一个点仙人掌. 上方三个都是点仙人掌,而下方两 ...

  3. 使用 Python 开发一个恐龙跑跑小游戏,玩起来

    作者 | 周萝卜 来源 | 萝卜大杂烩 相信很多人都玩过 chrome 浏览器上提供的恐龙跑跑游戏,在我们断网或者直接在浏览器输入地址"chrome://dino/"都可以进入游戏 ...

  4. 使用Python开发一个恐龙跳跳小游戏,玩起来

    相信很多人都玩过 chrome 浏览器上提供的恐龙跑跑游戏,在我们断网或者直接在浏览器输入地址"chrome://dino/"都可以进入游戏 今天我们就是用 Python 来制作一 ...

  5. 使用Python开发一个恐龙跑跑小游戏,玩起来

    相信很多人都玩过 chrome 浏览器上提供的恐龙跑跑游戏,在我们断网或者直接在浏览器输入地址"chrome://dino/"都可以进入游戏 今天我们就是用 Python 来制作一 ...

  6. [经典收藏]花语大全

    桔梗花的花语是--真诚不变的爱 白玫瑰的花语是--我足以与你相配 熏衣草的花语是--等待爱情 红色的风信子的花语是--让人感动的爱 时钟花的花语是--爱在你身边 狗尾巴草的花语–暗恋 油桐花的花语是- ...

  7. 我的世界常用命令和物品名称

    显示玩家坐标: /gamerule showcoordinates true 是显示玩家坐标的指令 区域填充: /fill 坐标 坐标 物品 物品大全: https://minecraft.52pk. ...

  8. [BZOJ]1023: [SHOI2008]cactus仙人掌图

    Time Limit: 1 Sec  Memory Limit: 162 MB Description 如果某个无向连通图的任意一条边至多只出现在一条简单回路(simple cycle)里,我们就称这 ...

  9. [SHOI2008]cactus仙人掌图

    Description 如果某个无向连通图的任意一条边至多只出现在一条简单回路(simple cycle)里,我们就称这张图为仙人掌图(cactus).所谓简单回路就是指在图上不重复经过任何一个顶点的 ...

  10. 【刷题】BZOJ 1023 [SHOI2008]cactus仙人掌图

    Description 如果某个无向连通图的任意一条边至多只出现在一条简单回路(simple cycle)里,我们就称这张图为仙人掌图(cactus).所谓简单回路就是指在图上不重复经过任何一个顶点的 ...

最新文章

  1. poj 3740 Easy Finding
  2. php service原理,轻松搞懂WebService工作原理
  3. jee websocket搭建总结
  4. android 解决java.nio.BufferOverflowException 异常
  5. 小程序开发(10)-之热力图解决方案、手绘图
  6. C#面向对象--命名空间
  7. php日期数组,关于php日期数组的用法汇总
  8. 经验贴-基于Vc++开发IIS7以及IIS6的万能筛选器
  9. html图标与文字对齐,如何实现css图标与文字对齐
  10. plsql以及instantclient下载安装配置使用
  11. DSP技术及应用 知识点整理
  12. 一款好用的绘制组织结构图的软件-亿图组织结构图
  13. [转]Ceph:OpenStack标配Linux PB级分布式文件系统详解
  14. html 表格横向排列,excel表格数据如何实现横向排列-Excel表格怎样把多列横向数据按照顺序改为纵向排列......
  15. 文本上划线_如何在Word中对文本进行上划线
  16. 生日祝福html_集体生日会|生活明朗,万物可爱,我们一起长大
  17. idea打开多个文件多排显示
  18. 比较好的python培训班
  19. 等一个不爱你的人,就像在机场等一艘船。
  20. 流氓软件(突然出现的提示框)

热门文章

  1. 计算机配件投标书范本,2021年计算机投标书格式范本.doc
  2. insert 语句的选择列表包含的项多于插入列表中的项_30 种 MySQL 常用 SQL 查询语句优化方法...
  3. c语言编写过几天是星期几,计算任何一天是星期几的C语言源代码.
  4. 服务器响应401,如果服务器返回401响应,则重定向到登录页面(Redirect to login page if server returns 401 response)...
  5. mysql自增主键批量_Mysql批量插入随机数据改进版_设置表主键为自增,免得主键冲突...
  6. python实现多智能体一致性_多智能体深度学习算法MADDPG的PARL实践
  7. python设计题60元按商品的比例平分_团体程序设计天梯赛-练习集(5分题集)Python 3...
  8. 跨服务器、跨数据库、多表联合查询
  9. flush privileges提示Table 'mysql.servers' doesn't exist解决办法
  10. varnish mysql_Varnish+nginx+mysql+php 环境搭建(四) 转载(lamppr)