青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

coreBugZJ

此 blog 已棄。

Nuclear Fusion,Codeforces Beta Round #65 (Div. 2) ,E

E. Nuclear Fusion
time limit per test
3 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output



There is the following puzzle popular among nuclear physicists.

A reactor contains a set of n atoms of some chemical elements. We shall understand the phrase "atomic number" as the number of this atom's element in the periodic table of the chemical elements.

You are allowed to take any two different atoms and fuse a new one from them. That results in a new atom, whose number is equal to the sum of the numbers of original atoms. The fusion operation can be performed several times.

The aim is getting a new pregiven set of k atoms.

The puzzle's difficulty is that it is only allowed to fuse two atoms into one, it is not allowed to split an atom into several atoms. You are suggested to try to solve the puzzle.



Input

The first line contains two integers n and k (1 ≤ k ≤ n ≤ 17). The second line contains space-separated symbols of elements of n atoms, which are available from the start. The third line contains space-separated symbols of elements of k atoms which need to be the result of the fusion. The symbols of the elements coincide with the symbols from the periodic table of the chemical elements. The atomic numbers do not exceed 100 (elements possessing larger numbers are highly unstable). Some atoms can have identical numbers (that is, there can be several atoms of the same element). The sum of numbers of initial atoms is equal to the sum of numbers of the atoms that need to be synthesized.



Output

If it is impossible to synthesize the required atoms, print "NO" without the quotes. Otherwise, print on the first line «YES», and on the next k lines print the way of synthesizing each of k atoms as equations. Each equation has the following form: "x1+x2+...+xt->yi", where xj is the symbol of the element of some atom from the original set, and yi is the symbol of the element of some atom from the resulting set. Each atom from the input data should occur in the output data exactly one time. The order of summands in the equations, as well as the output order does not matter. If there are several solutions, print any of them. For a better understanding of the output format, see the samples.



Sample test(s)
Input
10 3
Mn Co Li Mg C P F Zn Sc K
Sn Pt Y
Output
YES
Mn+C+K->Sn
Co+Zn+Sc->Pt
Li+Mg+P+F->Y

Input
2 1
H H
He
Output
YES
H+H->He

Input
2 2
Bk Fm
Cf Es
Output
NO


Note

The reactions from the first example possess the following form (the atomic number is written below and to the left of the element):

To find a periodic table of the chemical elements, you may use your favorite search engine.

The pretest set contains each of the first 100 elements of the periodic table at least once. You can use that information to check for misprints.




學習了 fura2 的代碼——本來只是想偷懶拷貝一下元素表的,一不小心看到了代碼,于是。。。

因為學習了代碼,感覺思路還是挺簡單的,動態(tài)規(guī)劃。。

 1 #include <iostream>
 2 #include <cstring>
 3 #include <string>
 4 #include <map>
 5 
 6 using namespace std;
 7 
 8 const int N = 20;
 9 
10 int main() {
11         int n, n2, n21, k, i, j, s, t, nt;
12         static int sum[ 1<<N ], f[ 1<<N ], p[ 1<<N ];
13         string  nuclearA[ N ], nuclearB[ N ];
14         int numberA[ N ], numberB[ N ];
15 
16         map< stringint > number;
17         string nuclear[] = {
18                 "H","He","Li","Be","B","C","N","O","F","Ne","Na","Mg","Al","Si","P","S","Cl","Ar",
19                 "K","Ca","Sc","Ti","V","Cr","Mn","Fe","Co","Ni","Cu","Zn","Ga","Ge","As","Se","Br",
20                 "Kr","Rb","Sr","Y","Zr","Nb","Mo","Tc","Ru","Rh","Pd","Ag","Cd","In","Sn","Sb","Te",
21                 "I","Xe","Cs","Ba","La","Ce","Pr","Nd","Pm","Sm","Eu","Gd","Tb","Dy","Ho","Er","Tm",
22                 "Yb","Lu","Hf","Ta","W","Re","Os","Ir","Pt","Au","Hg","Tl","Pb","Bi","Po","At","Rn",
23                 "Fr","Ra","Ac","Th","Pa","U","Np","Pu","Am","Cm","Bk","Cf","Es","Fm"
24         };
25         for ( i = 0; i < sizeof(nuclear)/sizeof(nuclear[0]); ++i ) {
26                 number[ nuclear[ i ] ] = i + 1;
27         }
28 
29         cin >> n >> k;
30         n2 = ( 1 << n );
31         n21 = n2 - 1;
32         for ( i = 0; i < n; ++i ) {
33                 cin >> nuclearA[ i ];
34                 numberA[ i ] = number[ nuclearA[ i ] ];
35         }
36         for ( i = 0; i < k; ++i ) {
37                 cin >> nuclearB[ i ];
38                 numberB[ i ] = number[ nuclearB[ i ] ];
39         }
40 
41         memset( sum, 0sizeof(sum) );
42         for ( s = 0; s < n2; ++s ) {
43                 for ( j = 0; j < n; ++j ) {
44                         if ( s & (1<<j) ) {
45                                 sum[ s ] += numberA[ j ];
46                         }
47                 }
48         }
49 
50         memset( f, -1sizeof(f) );
51         f[ 0 ] = 0;
52         for ( s = 0; s < n2; ++s ) {
53                 i = f[ s ];
54                 if ( (i==-1|| (i>=k) ) {
55                         continue;
56                 }
57                 t = (s^n21);
58                 for ( j = t; j >= 0--j ) {
59                         // nt = (j&t);  // 超時
60                         nt = j = (j&t);
61                         if ( sum[ nt ] == numberB[ i ] ) {
62                                 f[ nt | s ] = i + 1;
63                                 p[ nt | s ] = s;
64                         }
65                 }
66         }
67 
68         if ( f[ n21 ] < k ) {
69                 cout << "NO" << endl;
70         }
71         else {
72                 cout << "YES" << endl;
73                 s = n21;
74                 string str;
75                 while ( s > 0 ) {
76                         i = f[ s ] - 1;
77                         t = p[ s ];
78                         str = "";
79                         for ( j = 0; j < n; ++j ) {
80                                 if ( ((s&(1<<j))!=0&& ((t&(1<<j))==0) ) {
81                                         str += nuclearA[ j ];
82                                         str += "+";
83                                 }
84                         }
85                         str.erase( str.length()-1 );
86                         str += "->";
87                         str += nuclearB[ i ];
88                         cout << str << endl;
89                         s = t;
90                 }
91         }
92 
93         return 0;
94 }
95 

posted on 2011-03-31 19:55 coreBugZJ 閱讀(1545) 評論(1)  編輯 收藏 引用 所屬分類: ACM

Feedback

# re: Nuclear Fusion,Codeforces Beta Round #65 (Div. 2) ,E 2011-04-01 14:15 英雄哪里出來

來踩一下~~  回復  更多評論   


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            红桃av永久久久| 欧美激情视频网站| 欧美精品在线视频| 久久久蜜桃一区二区人| 欧美日韩在线播放| 亚洲国产精品欧美一二99| 国产亚洲激情视频在线| 99精品国产福利在线观看免费| 在线欧美视频| 欧美影院在线播放| 久久精品国产69国产精品亚洲| 欧美日韩一区二区三区四区在线观看| 欧美不卡视频一区发布| 国产一区二区三区四区在线观看| 一区二区日本视频| 亚洲香蕉成视频在线观看 | 一本色道**综合亚洲精品蜜桃冫| 亚洲黄色高清| 老牛嫩草一区二区三区日本 | 久久精品天堂| 国产精品一卡| 性亚洲最疯狂xxxx高清| 欧美久久视频| 91久久黄色| 日韩视频在线一区二区三区| 免费在线一区二区| 亚洲国产cao| 亚洲日本一区二区| 欧美国产日韩精品| 亚洲人成在线播放网站岛国| 亚洲精品一区二区三区在线观看| 免费黄网站欧美| 亚洲国产精品久久久久婷婷884| 亚洲国产一区二区在线| 欧美黄色一区| 99精品视频免费观看| 亚洲欧美国产精品桃花| 国产欧美一区二区精品性 | 久久综合九色九九| 亚洲第一中文字幕| 一区二区激情小说| 国产精品亚洲а∨天堂免在线| 亚洲欧美成人一区二区在线电影| 欧美中文在线观看国产| 激情成人中文字幕| 久久综合综合久久综合| 最新69国产成人精品视频免费| 在线视频亚洲一区| 国产欧美va欧美不卡在线| 久久久久久国产精品mv| 亚洲国产精品一区二区第一页| 亚洲视频在线二区| 国产一区二区三区久久久久久久久| 久久久女女女女999久久| 亚洲国产综合在线| 欧美亚洲一区二区在线| 在线观看日韩av电影| 欧美日韩国产在线播放| 亚洲综合三区| 亚洲电影在线播放| 欧美一区二区精品久久911| 亚洲电影毛片| 国产精品乱码妇女bbbb| 久久人人97超碰国产公开结果| 日韩视频在线一区二区三区| 久久久国产午夜精品| 99这里有精品| 国产一区亚洲| 欧美午夜a级限制福利片| 久久亚洲私人国产精品va| 99综合视频| 欧美大片在线看免费观看| 亚洲欧美精品伊人久久| 91久久在线观看| 国产欧美日韩一区二区三区| 欧美寡妇偷汉性猛交| 欧美在线视频导航| 夜夜嗨av一区二区三区网站四季av| 久久久久91| 亚洲欧美中文日韩在线| 亚洲精品一区二区三区婷婷月| 国产日韩精品在线| 欧美午夜精品久久久久久浪潮| 久久亚洲精品网站| 欧美一区日本一区韩国一区| 一区二区av在线| 亚洲国产精品视频| 欧美成人免费在线| 久久夜色精品国产亚洲aⅴ| 午夜一区二区三区不卡视频| 夜夜嗨av一区二区三区网站四季av | 亚洲精品激情| 怡红院av一区二区三区| 国产亚洲福利社区一区| 国产精品久久精品日日| 欧美日韩黄视频| 欧美黄色成人网| 能在线观看的日韩av| 久久在线91| 另类国产ts人妖高潮视频| 久久久91精品| 久久精品卡一| 欧美一区二区三区在线看| 午夜精彩国产免费不卡不顿大片| 一区二区欧美在线| 在线视频欧美日韩| 一区二区三区回区在观看免费视频| 亚洲精品少妇网址| 亚洲乱码日产精品bd| 亚洲精品一级| 亚洲伦伦在线| 艳女tv在线观看国产一区| 9久re热视频在线精品| 亚洲最新在线| 亚洲欧美亚洲| 久久久一区二区三区| 鲁大师影院一区二区三区| 免费成人美女女| 欧美精品日韩三级| 欧美日韩一区二区在线观看视频| 欧美体内谢she精2性欧美| 国产精品久久久久久久久久免费| 欧美亚洲第一区| 国产手机视频一区二区| 黄色av日韩| 亚洲精品人人| 亚洲综合首页| 久久aⅴ乱码一区二区三区| 久久久伊人欧美| 亚洲福利视频一区| 一区二区三区导航| 香蕉成人啪国产精品视频综合网| 久久精品噜噜噜成人av农村| 麻豆91精品| 欧美日韩一区精品| 国产视频在线一区二区| 亚洲欧洲一区二区天堂久久 | 久久久久国产精品一区三寸| 久久只有精品| 欧美日韩一区二区在线观看视频| 国产精品手机在线| 在线精品视频在线观看高清| 一本一本久久a久久精品牛牛影视| 午夜国产精品视频| 欧美jizzhd精品欧美巨大免费| 亚洲人成网站影音先锋播放| 国产精品99久久久久久www| 久久久久国产精品麻豆ai换脸| 欧美久久成人| 狠狠色综合日日| 亚洲一区国产视频| 免费美女久久99| 亚洲视频一起| 欧美国产成人精品| 国产亚洲午夜高清国产拍精品| 亚洲精品一区二区网址| 久久精品视频网| 日韩一区二区免费高清| 久久久久久网址| 国产精品视频一二三| 亚洲精品视频在线看| 久久三级福利| 亚洲午夜一区| 欧美日韩爆操| 亚洲激情第一页| 久久免费国产精品1| 亚洲视频在线观看一区| 欧美精品一区二区三区在线看午夜 | 欧美三级小说| 亚洲精品视频在线观看免费| 久久久久免费视频| 亚洲伊人观看| 欧美日韩一区国产| 亚洲毛片在线| 欧美激情亚洲另类| 久久久久久穴| 国模 一区 二区 三区| 午夜在线不卡| 亚洲图片欧美午夜| 欧美日韩情趣电影| 在线亚洲免费| 亚洲区一区二区三区| 欧美成人免费在线| 亚洲国产精品v| 欧美 日韩 国产在线| 久久久天天操| 一区免费观看| 免费黄网站欧美| 久久久久久伊人| 亚洲第一视频网站| 欧美不卡视频一区发布| 久久午夜精品| 亚洲黄色视屏| 亚洲国产精品成人一区二区| 男男成人高潮片免费网站| 亚洲三级免费电影| 91久久在线播放| 欧美日韩色综合| 亚洲欧美综合一区| 午夜在线视频一区二区区别|