Description

原始生物的遗传密码是一个自然数的序列K=(a1,...,an)。原始生物的特征是指在遗传密码中连续出现的数对(l,r),即存在自然数i使得l=ai且r=ai+1。在原始生物的遗传密码中不存在(p,p)形式的特征。

求解任务:

请设计一个程序:

·读入一系列的特征。

·计算包含这些特征的最短的遗传密码。

·将结果输出

Input

第一行是一个整数n ,表示特征的总数。在接下来的n行里,每行都是一对由空格分隔的自然数l 和r ,1 <= l,r <= 1000。数对(l, r)是原始生物的特征之一。输入文件中的特征不会有重复。

Output

唯一一行应该包含一个整数,等于包含了PIE.IN中所有特征的遗传密码的最小长度。

Sample Input

12

2 3

3 9

9 6

8 5

5 7

7 6

4 5

5 1

1 4

4 2

2 8

8 6

Sample Output

15

注:

PIE.IN中的所有特征都包含在以下遗传密码中:

(8, 5, 1, 4, 2, 3, 9, 6, 4, 5, 7, 6, 2, 8, 6)

Solution

将限制建成边,于是题目的意思就变成了对于每一个联通块,找一个路径最短的欧拉回路/欧拉路径

欧拉路径还有最短的说法?!不可能的,所以肯定是定值。最短这个含义是体现在加边上的

考虑一个联通块,如果其本身是存在一个欧拉回路,即奇度数点为0,那么贡献就是边数加一

否则,奇度数点一定是大于0的偶数 \(x\),我们要加一些边使得图存在欧拉路径,还要让加的边最少,所以就是找 \(x-2\) 个点,两两连边,使图存在欧拉路径,这样的贡献就是加了边后的边数

最后依次考虑每个联通块就好了

  1. #include<bits/stdc++.h>
  2. #define ui unsigned int
  3. #define ll long long
  4. #define db double
  5. #define ld long double
  6. #define ull unsigned long long
  7. const int MAXN=1000+10;
  8. int n,in[MAXN],out[MAXN],lt,ans,euler[MAXN],cnt,e,beg[MAXN],nex[MAXN*MAXN<<1],to[MAXN*MAXN<<1],vis[MAXN],app[MAXN];
  9. template<typename T> inline void read(T &x)
  10. {
  11. T data=0,w=1;
  12. char ch=0;
  13. while(ch!='-'&&(ch<'0'||ch>'9'))ch=getchar();
  14. if(ch=='-')w=-1,ch=getchar();
  15. while(ch>='0'&&ch<='9')data=((T)data<<3)+((T)data<<1)+(ch^'0'),ch=getchar();
  16. x=data*w;
  17. }
  18. template<typename T> inline void write(T x,char ch='\0')
  19. {
  20. if(x<0)putchar('-'),x=-x;
  21. if(x>9)write(x/10);
  22. putchar(x%10+'0');
  23. if(ch!='\0')putchar(ch);
  24. }
  25. template<typename T> inline void chkmin(T &x,T y){x=(y<x?y:x);}
  26. template<typename T> inline void chkmax(T &x,T y){x=(y>x?y:x);}
  27. template<typename T> inline T min(T x,T y){return x<y?x:y;}
  28. template<typename T> inline T max(T x,T y){return x>y?x:y;}
  29. inline void insert(int x,int y)
  30. {
  31. to[++e]=y;
  32. nex[e]=beg[x];
  33. beg[x]=e;
  34. }
  35. inline void dfs(int x)
  36. {
  37. vis[x]=1;
  38. chkmin(euler[cnt],in[x]==out[x]?1:0);
  39. for(register int i=beg[x];i;i=nex[i])
  40. if(!vis[to[i]])dfs(to[i]);
  41. }
  42. int main()
  43. {
  44. read(n);
  45. for(register int i=1;i<=n;++i)
  46. {
  47. int u,v;read(u);read(v);app[u]=app[v]=1;
  48. in[v]++;out[u]++;
  49. insert(u,v);insert(v,u);
  50. chkmax(lt,u);chkmax(lt,v);
  51. }
  52. for(register int i=1;i<=lt;++i)
  53. if(!vis[i]&&app[i])euler[++cnt]=1,dfs(i);
  54. for(register int i=1;i<=lt;++i)
  55. if(app[i])ans+=max(in[i],out[i]);
  56. for(register int i=1;i<=cnt;++i)ans+=euler[i];
  57. write(ans,'\n');
  58. return 0;
  59. }

【刷题】BZOJ 2935 [Poi1999]原始生物的更多相关文章

  1. bzoj 2935 [Poi1999]原始生物——欧拉回路思路!

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2935 有向图用最小的路径(==总点数最少)覆盖所有边. 完了完了我居然连1999年的题都做不 ...

  2. BZOJ 2935/ Poi 1999 原始生物

    [bzoj2935][Poi1999]原始生物   2935: [Poi1999]原始生物 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 145  So ...

  3. 【bzoj2935】[Poi1999]原始生物

    2935: [Poi1999]原始生物 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 145  Solved: 71[Submit][Status][D ...

  4. BZOJ2935: [Poi1999]原始生物(欧拉回路)

    2935: [Poi1999]原始生物 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 150  Solved: 71[Submit][Status][D ...

  5. 【刷题】BZOJ 2407 探险

    Description 探险家小T好高兴!X国要举办一次溶洞探险比赛,获奖者将得到丰厚奖品哦!小T虽然对奖品不感兴趣,但是这个大振名声的机会当然不能错过! 比赛即将开始,工作人员说明了这次比赛的规则: ...

  6. 【刷题】BZOJ 4543 [POI2014]Hotel加强版

    Description 同OJ3522 数据范围:n<=100000 Solution dp的设计见[刷题]BZOJ 3522 [Poi2014]Hotel 然后发现dp的第二维与深度有关,于是 ...

  7. 【刷题】BZOJ 4316 小C的独立集

    Description 图论小王子小C经常虐菜,特别是在图论方面,经常把小D虐得很惨很惨. 这不,小C让小D去求一个无向图的最大独立集,通俗地讲就是:在无向图中选出若干个点,这些点互相没有边连接,并使 ...

  8. 【刷题】BZOJ 4176 Lucas的数论

    Description 去年的Lucas非常喜欢数论题,但是一年以后的Lucas却不那么喜欢了. 在整理以前的试题时,发现了这样一道题目"求Sigma(f(i)),其中1<=i< ...

  9. BZOJ第一页刷题计划

    BZOJ第一页刷题计划 已完成:67 / 90 [BZOJ1000]A+B Problem:A+B: [BZOJ1001][BeiJing2006]狼抓兔子:最小割: [BZOJ1002][FJOI2 ...

随机推荐

  1. MSF里MS17_010利用模块笔记

    1.   auxiliary/scanner/smb/smb_ms17_010      //扫描检测漏洞辅助模块 扫描结果这里可以看到 2,3,4这几台主机存在此漏洞! 2.     auxilia ...

  2. 20155239吕宇轩《网络对抗》Exp3 免杀原理与实践

    20155239吕宇轩<网络对抗>Exp3 免杀原理与实践 实验过程 Kali使用上次实验msfvenom产生后门的可执行文件,上传到老师提供的网址http://www.virscan.o ...

  3. mfc Unicode转 ASNI ,WCHAR 转 CHAR

    知识点: 宽字符转多字节字符 多字节字符转宽字符 什么是ANSI,什么又是UNICODE呢?其实这是两种不同的编码方式标准,ANSI中的字符采用8bit,而UNICODE中的字符采用16bit 在VC ...

  4. CS190.1x-ML_lab3_linear_reg_student

    这次作业主要是有关监督学习,数据集是来自UCI Machine Learning Repository的Million Song Dataset.我们的目的是训练一个线性回归的模型来预测一首歌的发行年 ...

  5. Window下mysql环境配置问题整理

    Window下mysql环境配置问题整理 参考如下链接. 无需安装解压版mysql包 创建选项配置 首次启动服务 用mysqld初始化目录 安装后设置和测试 启动服务错误信息 管理员模式打开cmd m ...

  6. JQ_One()函数特效

    先看一个例子,当点击 p 元素时,增加该元素的文本大小,代码如下:<script type="text/javascript" src="http://keleyi ...

  7. [T-ARA][놀아볼래?][要玩吗]

    歌词来源:http://music.163.com/#/song?id=22704479 作曲 : 赵英秀/김태현 [作曲 : 赵英秀/k/gim-Tae-hyeon] 作词 : 安英民 [作词 : ...

  8. 互评Final版本——二次元梦之队——“I Do”

    基于NABCD评论作品,及改进建议 1.根据(不限于)NABCD评论作品的选题; (1)N(Need,需求) 当今的许多科技大佬从少年时代就已经开始了自己的编程生涯,我国许多人也意识到了拥有编程能力的 ...

  9. 爬虫项目之NABC

    Need 在如今的互联网市场上相关的网络爬虫软件已然很多,要想赢得客户,高效.稳定.创新都必不可少的. 我们初步阅读和运行了上一届团队的项目,决定从以下几个方面修改和完善创新这一项目: 1.改善对爬取 ...

  10. linux第三章学习笔记

    第三章 进程管理 进程是Unix操作系统抽象概念中最基本的一种. 进程管理是所有操作系统的心脏所在. 一.进程 1. 进程是处于执行期的程序.除了可执行程序代码,还包括打开的文件.挂起的信号.内核内部 ...