bzoj 2935 [Poi1999]原始生物——欧拉回路思路!
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2935
有向图用最小的路径(==总点数最少)覆盖所有边。
完了完了我居然连1999年的题都做不出来了。
TJ:https://blog.csdn.net/u014609452/article/details/53705451
仔细一想,原来就是欧拉回路的连通块自然不用说,原来不是欧拉回路的连通块,我们在走路径的时候不时从一个点跳到另一个点,其实可以看作是给这两个点间连了一条边!
所以手动连一个欧拉回路。这样应该一定是最小的。
因为是欧拉回路,所以有点浪费。因为其实欧拉路就可以了,只是我们不会连成欧拉路罢了。
考虑把自己连的一条边当做路径的开始或结尾,这样就可以不走那条边,从而变成欧拉路。体现在答案上就是少了一个点,点数==删边前边数。
TJ的代码实现这一过程写得太好啦!无耻默写。
所以需要回顾!
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int N=;
int n,sum,deg[N+],fa[N+],ans;
bool tag[N+],vis[N+];
int find(int a){return fa[a]==a?a:fa[a]=find(fa[a]);}
int main()
{
for(int i=;i<=N;i++)fa[i]=i;
scanf("%d",&n);int x,y;ans=n;//原边数
for(int i=;i<=n;i++)
{
scanf("%d%d",&x,&y);
vis[x]=;vis[y]=;
deg[x]++;deg[y]--;
if(find(x)!=find(y))fa[find(x)]=find(y);
}
for(int i=;i<=N;i++)
if(vis[i]&°[i])tag[find(i)]=;
for(int i=;i<=N;i++)
if(vis[i]&&fa[i]==i&&!tag[i])ans++;//原欧拉回路+1
for(int i=;i<=N;i++)
sum+=(deg[i]>?deg[i]:-deg[i]);//补的边
ans+=sum/;
printf("%d",ans);
return ;
}
bzoj 2935 [Poi1999]原始生物——欧拉回路思路!的更多相关文章
- 【刷题】BZOJ 2935 [Poi1999]原始生物
Description 原始生物的遗传密码是一个自然数的序列K=(a1,...,an).原始生物的特征是指在遗传密码中连续出现的数对(l,r),即存在自然数i使得l=ai且r=ai+1.在原始生物的遗 ...
- bzoj2935 [Poi1999]原始生物——欧拉回路
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2935 考察欧拉回路性质的题目呢: TJ:https://blog.csdn.net/u014 ...
- BZOJ2935: [Poi1999]原始生物(欧拉回路)
2935: [Poi1999]原始生物 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 150 Solved: 71[Submit][Status][D ...
- BZOJ 2935/ Poi 1999 原始生物
[bzoj2935][Poi1999]原始生物 2935: [Poi1999]原始生物 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 145 So ...
- 【bzoj2935】[Poi1999]原始生物
2935: [Poi1999]原始生物 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 145 Solved: 71[Submit][Status][D ...
- BZOJ 2933([Poi1999]地图-区间Dp)
2933: [Poi1999]地图 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 7 Solved: 7 [ Submit][ Status] ...
- BZOJ.5288.[AHOI/HNOI2018]游戏(思路 拓扑)
BZOJ LOJ 洛谷 考虑如何预处理每个点能到的区间\([l,r]\). 对于\(i,i+1\)的一扇门,如果钥匙在\(i\)的右边,连边\(i\to i+1\),表示从\(i\)出发到不了\(i+ ...
- BZOJ.4820.[SDOI2017]硬币游戏(思路 高斯消元 哈希/AC自动机/KMP)
BZOJ 洛谷 建出AC自动机,每个点向两个儿子连边,可以得到一张有向图.参照 [SDOI2012]走迷宫 可以得到一个\(Tarjan\)+高斯消元的\(O((nm)^3)\)的做法.(理论有\(6 ...
- BZOJ.4052.[Cerc2013]Magical GCD(思路)
BZOJ \(Description\) 给定\(n\)个数的序列\(a_i\).求所有连续子序列中,序列长度 × 该序列中所有数的gcd 的最大值. \(n\leq10^5,\ a_i\leq10^ ...
随机推荐
- webpack 清理旧打包资源插件
当我们修改带hash的文件并进行打包时,每打包一次就会生成一个新的文件,而旧的文件并 没有删除.为了解决这种情况,我们可以使用clean-webpack-plugin 在打包之前将文件先清除,之后再打 ...
- Spring MVC(五)--控制器通过注解@RequestParam接受参数
上一篇中提到,当前后端命名规则不一致时,需要通过注解@RequestParam接受参数,这个注解是作用在参数上.下面通过实例说明,场景如下: 在页面输入两个参数,控制器通过注解接受,并将接受到的数据渲 ...
- JVM基础总结
- 《DSP using MATLAB》Problem 8.15
代码: %% ------------------------------------------------------------------------ %% Output Info about ...
- 微信小程序 拼团商品倒计时(拼团列表、拼团商品详情)
直接上图: 拼团列表.拼团详情-倒计时 //单个倒计时,适用用于单个商品的倒计时 js文件: //倒计时 function cou ...
- [CQOI2009]叶子的染色【性质+树形Dp】
Online Judge:Bzoj1304,Luogu P3155 Label:无根树,树形Dp 题目描述 给定一棵\(N\)个节点的无根树,它一共有\(K\)个叶子节点.你可以选择一个度数大于1的节 ...
- Windows API 第12篇 MoveFile
MoveFile可以移动文件,更名文件,移动目录(包括目录下的所有文件以及子目录).函数定义:BOOL MoveFile( LPCTSTR lpExistingFileName, // file n ...
- Python-爬虫实战 简单爬取豆瓣top250电影保存到本地
爬虫原理 发送数据 获取数据 解析数据 保存数据 requests请求库 res = requests.get(url="目标网站地址") 获取二进制流方法:res.content ...
- day45作业
利用 html + css 写一个最基本的页面 <!DOCTYPE html> <html lang="en"> <head> <meta ...
- LUOGU P2296 寻找道路 (noip 2014)
传送门 解题思路 首先建一张反图,从终点dfs出哪个点直接或间接相连,然后直接跑最短路,跑的时候判断一下所连的点是否与终点相连. 代码 #include<iostream> #includ ...