zoukankan      html  css  js  c++  java
  • hdu 5625

    Clarke and chemistry

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)
    Total Submission(s): 63    Accepted Submission(s): 33


    Problem Description
    Clarke is a patient with multiple personality disorder. One day, Clarke turned into a junior student and took a chemistry exam.
    But he did not get full score in this exam. He checked his test paper and found a naive mistake, he was wrong with a simple chemical equation balancer.
    He was unhappy and wanted to make a program to solve problems like this.
    This chemical equation balancer follow the rules:
    Two valences AA combined by |A| elements and B combined by |B| elements.
    We get a new valence C by a combination reaction and the stoichiometric coefficient of C is 1 . Please calculate the stoichiometric coefficient a of A and b of B that aA + bB = C, a, b in ext{N}^* .
     

     

    Input
    The first line contains an integer T(1 le T le 10) , the number of test cases.
    For each test case, the first line contains three integers A, B, C(1 le A, B, C le 26) , denotes |A|, |B|, |C| respectively.
    Then A+B+C lines follow, each line looks like X c , denotes the number of element X of A, B, C respectively is c . (X is one of 26 capital letters, guarantee X of one valence only appear one time, 1 le c le 100 )
     

     

    Output
    For each test case, if we can balance the equation, print a and b . If there are multiple answers, print the smallest one, a is smallest then b is smallest. Otherwise print NO.
     

     

    Sample Input
    2
    2 3 5
    A 2
    B 2
    C 3
    D 3
    E 3
    A 4
    B 4
    C 9
    D 9
    E 9
    2 2 2
    A 4
    B 4
    A 3
    B 3
    A 9
    B 9
     
    Sample Output
    2 3 NO Hint: The first test case, $a=2, b=3$ can make equation right. The second test case, no any answer.
     

     

    Source
     
     
     http://bestcoder.hdu.edu.cn/contests/contest_chineseproblem.php?cid=671&pid=1001 中文题意
    枚举 a,b      代码长时间不写 手糙了
    今天02网上找模板水过 明天补看
    #include<iostream>
    #include<cstring>
    #include<cstdio>
    #include<map>
    #include<stack>
    #include<queue>
    #define LL __int64
    using namespace std;
    int t;
    int a,b,c;
    char ceshi[30]="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    char aa[30],bb[30],cc[30];
    int aaa[30],bbb[30],ccc[30];
    map<char,int> mp1;
    map<char,int> mp2;
    map<char,int> mp3;
    int main()
    {
     while(scanf("%d",&t)!=EOF)
     {
         for(int i=1;i<=t;i++)
     {
         mp1.clear();
         mp2.clear();
         mp3.clear();
         scanf("%d%d%d",&a,&b,&c);
         getchar();
         for(int j=1;j<=a;j++)
         {
             scanf("%c %d",&aa[j],&aaa[j]);
             mp1[aa[j]]=aaa[j];getchar();
         }
         for(int j=1;j<=b;j++)
         {
             scanf("%c %d",&bb[j],&bbb[j]);
             mp2[bb[j]]=bbb[j];getchar();
         }
         for(int j=1;j<=c;j++)
         {
             scanf("%c %d",&cc[j],&ccc[j]);
             mp3[cc[j]]=ccc[j];getchar();
         }
         int k=0,g=0,ans;
         int flag=0;
         int ggg1,ggg2;
         for(k=1;k<=99;k++)
         {
             for(g=1;g<=99;g++)
             {
                  ans=0;
                 for(int kk=0;kk<=25;kk++)
                 {
                     if(mp1[ceshi[kk]]*k+mp2[ceshi[kk]]*g==mp3[ceshi[kk]]&&mp3[ceshi[kk]]!=0)
                       ans++;
                 }
                 if(ans==c)
                  {
                      ggg1=k;
                      ggg2=g;
                     flag=1;
                     break;
                  }
             }
             if(flag)
                break;
         }
         if(flag)
         printf("%d %d
    ",ggg1,ggg2);
         else
         printf("NO
    ");
    
     }
     }
        return 0;
    }
    

      

  • 相关阅读:
    为linux命令添加别名
    ubuntu安装mongodb
    mysql保存中文乱码问题
    公倍数
    复制网站内容
    孪生素数
    迷宫问题
    递归连续数
    排列平方数
    基因牛
  • 原文地址:https://www.cnblogs.com/hsd-/p/5188375.html
Copyright © 2011-2022 走看看