zoukankan      html  css  js  c++  java
  • 洛谷 P3670 [USACO17OPEN]Bovine Genomics S奶牛基因组(银)

    题目描述

    Farmer John owns NN cows with spots and NN cows without spots. Having just completed a course in bovine genetics, he is convinced that the spots on his cows are caused by mutations in the bovine genome.

    At great expense, Farmer John sequences the genomes of his cows. Each genome is a string of length MM built from the four characters A, C, G, and T. When he lines up the genomes of his cows, he gets a table like the following, shown here

    for N=3N=3:

    Positions: 1 2 3 4 5 6 7 ... M
    
    Spotty Cow 1: A A T C C C A ... T
    Spotty Cow 2: G A T T G C A ... A
    Spotty Cow 3: G G T C G C A ... A
    
    Plain Cow 1: A C T C C C A ... G
    Plain Cow 2: A G T T G C A ... T
    Plain Cow 3: A G T T C C A ... T

    Looking carefully at this table, he surmises that positions 2 and 4 are sufficient to explain spottiness. That is, by looking at the characters in just these two positions, Farmer John can predict which of his cows are spotty and which are not (for example, if he sees G and C, the cow must be spotty).

    Farmer John is convinced that spottiness can be explained not by just one or two positions in the genome, but by looking at a set of three distinct positions. Please help him count the number of sets of three distinct positions that can each explain spottiness.

    FJ有n头有斑点的牛和n头没有斑点的牛。由于他刚刚学完牛的基因学的课程,他想知道牛有没有斑点是否

    与牛的基因有关。

    FJ花了巨大的代价测出了每个牛的基因,每头牛的基因用一个长度为M的由“A,C,G,T”的串构成。FJ将这

    些串写成一个表/矩阵,就像图中这样

    (N=3的例子)

    FJ仔细的观察这个表,他发现通过观测2,4位置的字符串可以预测牛是否有斑点。

    (在这个例子中,假如他看到24位置是GC、AT或者AC就可以断定其有斑点,因为1号有斑点的牛24位置基因为AC,2号为AT,3号为GC,而且没有任何一头无斑点的牛的24位置出现过这三个串)

    FJ认为,1个或者两个位点是不能够区分品种的,必须是刚好3个位点。他想知道能用多少组三个本质不同的位置判断牛的斑点,{1,2,3}和{1,3,2}是本质相同的

    输入输出格式

    输入格式:

     

    The first line of input contains NN (1 leq N leq 5001N500) and MM (3 leq M leq 503M50). The next NN lines each contain a string of MMcharacters; these describe the genomes of the spotty cows. The final NN lines describe the genomes of the plain cows.

     

    输出格式:

     

    Please count the number of sets of three distinct positions that can explain spottiness. A set of three positions explains spottiness if the spottiness trait can be predicted with perfect accuracy among Farmer John's population of cows by looking at just those three locations in the genome.

     

    输入输出样例

    输入样例#1: 复制
    3 8
    AATCCCAT
    GATTGCAA
    GGTCGCAA
    ACTCCCAG
    ACTCGCAT
    ACTTCCAT
    输出样例#1: 复制
    22

    说明

    感谢@ 秘密观测者 的提供翻译

    思路:枚举

    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    int n,m,ans;
    char s[55];
    int map[1010][55],tmp[5][5][5];
    int work(char c){
        if(c=='A')    return 1;
        if(c=='T')    return 2;
        if(c=='G')    return 3;
        if(c=='C')    return 4;
    }
    int main(){
        scanf("%d%d",&n,&m);
        for(int i=1;i<=2*n;i++){
            scanf("%s",s);
            for(int j=0;j<m;j++)
                map[i][j+1]=work(s[j]);
        }
        for(int i=1;i<=m-2;i++)
            for(int j=i+1;j<=m-1;j++)
                for(int k=j+1;k<=m;k++){
                    bool flag=0;
                    memset(tmp,0,sizeof(tmp));
                    for(int l=1;l<=n;l++)
                        tmp[map[l][i]][map[l][j]][map[l][k]]=1;
                    for(int l=n+1;l<=2*n;l++)
                        if(tmp[map[l][i]][map[l][j]][map[l][k]]){ flag=1;break; }
                    if(!flag)    ans++;
                }
        cout<<ans;
    }
    细雨斜风作晓寒。淡烟疏柳媚晴滩。入淮清洛渐漫漫。 雪沫乳花浮午盏,蓼茸蒿笋试春盘。人间有味是清欢。
  • 相关阅读:
    ASP.NET Core应用程序容器化、持续集成与Kubernetes集群部署(一)(转载)
    Python黑帽编程1.1虚拟机安装和配置 Kali Linux 2016
    kali linux 2016.1 滚动更新源
    使用you-get下载视频网站视频或其他
    asp.net core开发环境准备
    Python黑客编程基础3网络数据监听和过滤
    debian(kali Linux) 安装net Core
    嗅探、中间人sql注入、反编译--例说桌面软件安全性问题
    Python黑客编程2 入门demo--zip暴力破解
    kali linux Python开发环境初始化
  • 原文地址:https://www.cnblogs.com/cangT-Tlan/p/8025277.html
Copyright © 2011-2022 走看看