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 \text{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

BestCoder Round #72 (div.2)

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\n",ggg1,ggg2);
     else
     printf("NO\n");

 }
 }
    return 0;
}

  

时间: 2024-12-28 23:55:09

hdu 5625的相关文章

hdu 5625 Clarke and chemistry

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 w

HDU 1058 Humble Numbers(离线打表)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1058 解题报告:输入一个n,输出第n个质因子只有2,3,5,7的数. 用了离线打表,因为n最大只有5842. 1 #include<stdio.h> 2 #define INT __int64 3 INT ans[5850] = { 4 0,1,2,3,4,5,6,7,8,9,10,12,14,15,16,18,20,21,24,25,27,28,30,32,35,36,40,42,45,48,4

HDU 6203 ping ping ping [LCA,贪心,DFS序,BIT(树状数组)]

题目链接:[http://acm.hdu.edu.cn/showproblem.php?pid=6203] 题意 :给出一棵树,如果(a,b)路径上有坏点,那么(a,b)之间不联通,给出一些不联通的点对,然后判断最少有多少个坏点. 题解 :求每个点对的LCA,然后根据LCA的深度排序.从LCA最深的点对开始,如果a或者b点已经有点被标记了,那么continue,否者标记(a,b)LCA的子树每个顶点加1. #include<Bits/stdc++.h> using namespace std;

HDU 5542 The Battle of Chibi dp+树状数组

题目:http://acm.hdu.edu.cn/showproblem.php?pid=5542 题意:给你n个数,求其中上升子序列长度为m的个数 可以考虑用dp[i][j]表示以a[i]结尾的长度为j的上升子序列有多少 裸的dp是o(n2m) 所以需要优化 我们可以发现dp的第3维是找比它小的数,那么就可以用树状数组来找 这样就可以降低复杂度 #include<iostream> #include<cstdio> #include<cstring> #include

hdu 1207 汉诺塔II (DP+递推)

汉诺塔II Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 4529    Accepted Submission(s): 2231 Problem Description 经典的汉诺塔问题经常作为一个递归的经典例题存在.可能有人并不知道汉诺塔问题的典故.汉诺塔来源于印度传说的一个故事,上帝创造世界时作了三根金刚石柱子,在一根柱子上从下往

[hdu 2102]bfs+注意INF

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2102 感觉这个题非常水,结果一直WA,最后发现居然是0x3f3f3f3f不够大导致的--把INF改成INF+INF就过了. #include<bits/stdc++.h> using namespace std; bool vis[2][15][15]; char s[2][15][15]; const int INF=0x3f3f3f3f; const int fx[]={0,0,1,-1};

HDU 3555 Bomb (数位DP)

数位dp,主要用来解决统计满足某类特殊关系或有某些特点的区间内的数的个数,它是按位来进行计数统计的,可以保存子状态,速度较快.数位dp做多了后,套路基本上都差不多,关键把要保存的状态给抽象出来,保存下来. 简介: 顾名思义,所谓的数位DP就是按照数字的个,十,百,千--位数进行的DP.数位DP的题目有着非常明显的性质: 询问[l,r]的区间内,有多少的数字满足某个性质 做法根据前缀和的思想,求出[0,l-1]和[0,r]中满足性质的数的个数,然后相减即可. 算法核心: 关于数位DP,貌似写法还是

HDU 5917 Instability ramsey定理

http://acm.hdu.edu.cn/showproblem.php?pid=5917 即世界上任意6个人中,总有3个人相互认识,或互相皆不认识. 所以子集 >= 6的一定是合法的. 然后总的子集数目是2^n,减去不合法的,暴力枚举即可. 选了1个肯定不合法,2个也是,3个的话C(n, 3)枚举判断,C(n, 4), C(n, 5) #include <bits/stdc++.h> #define IOS ios::sync_with_stdio(false) using name

hdu 6166 Senior Pan

地址:http://acm.split.hdu.edu.cn/showproblem.php?pid=6166 题目: Senior Pan Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 245    Accepted Submission(s): 71 Problem Description Senior Pan fails i