zoukankan      html  css  js  c++  java
  • BZOJ 2935/ Poi 1999 原始生物

    【bzoj2935】【Poi1999】原始生物

     

    2935: [Poi1999]原始生物

    Time Limit: 3 Sec  Memory Limit: 128 MB
    Submit: 145  Solved: 71
    [Submit][Status][Discuss]

    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)
     
     1 #include<cstdio>
     2 //#include<iostream>
     3 #include<cstring>
     4 #include<algorithm>
     5 #include<cmath>
     6 #include<queue>
     7 #define INF 0x3f3f3f3f
     8 #define re register
     9 #define Ii inline int
    10 #define Il inline long long
    11 #define Iv inline void
    12 #define Ib inline bool
    13 #define Id inline double
    14 #define ll long long
    15 #define Fill(a,b) memset(a,b,sizeof(a))
    16 #define R(a,b,c) for(register int a=b;a<=c;++a)
    17 #define nR(a,b,c) for(register int a=b;a>=c;--a)
    18 #define Min(a,b) ((a)<(b)?(a):(b))
    19 #define Max(a,b) ((a)>(b)?(a):(b))
    20 #define Cmin(a,b) ((a)=(a)<(b)?(a):(b))
    21 #define Cmax(a,b) ((a)=(a)>(b)?(a):(b))
    22 #define abs(a) ((a)>0?(a):-(a))
    23 #define D_e(x) printf("&__ %d __&
    ",x)
    24 #define D_e_Line printf("-----------------
    ")
    25 using namespace std;
    26 const int N=1001;
    27 Ii read(){
    28     int s=0,f=1;char c;
    29     for(c=getchar();c>'9'||c<'0';c=getchar())if(c=='-')f=-1;
    30     while(c>='0'&&c<='9')s=s*10+(c^'0'),c=getchar();
    31     return s*f;
    32 }
    33 Iv print(int x){
    34     if(x<0)putchar('-'),x=-x;
    35     if(x>9)print(x/10);
    36     putchar(x%10^'0');
    37 }
    38 int fa[N],deg[N],vis[N],tag[N];
    39 Ii Find(int x){
    40     return x==fa[x]?x:fa[x]=Find(fa[x]);
    41 }
    42 int main(){
    43     int m=read(),n=1000;
    44     R(i,1,n)fa[i]=i;//Father
    45     R(i,1,m){
    46         int u=read(),v=read();
    47         ++deg[u],--deg[v],//Out- In
    48         vis[u]=1,vis[v]=1,
    49         fa[Find(u)]=Find(v);//Union
    50     }
    51     int sum=0;
    52     R(i,1,n)
    53         if(deg[i])
    54             tag[Find(i)]=1,//In the same tag
    55             sum+=abs(deg[i]);
    56     int k=0;
    57     R(i,1,n)
    58         if(vis[i]&&Find(i)==i&&!tag[i])
    59             ++k;//Totol tags
    60     print(k+(sum>>1)+m);
    61     return 0;
    62 }
    63 /*
    64 5
    65 1 3
    66 3 4
    67 2 4
    68 4 7
    69 4 6
    70 
    71 
    72 6
    73 1 2
    74 1 3
    75 1 6
    76 2 3
    77 3 4
    78 2 5
    79 */
    View Code
  • 相关阅读:
    Promise
    ajax基础
    flex布局的盒子模型
    css3核心模块
    响应式开发
    HTML5标签及表单
    JS面向对象编程
    JS面向对象的编程
    ES5构造函数与ES6类
    类欧几里得算法
  • 原文地址:https://www.cnblogs.com/bingoyes/p/10303043.html
Copyright © 2011-2022 走看看