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

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 的代碼——本來只是想偷懶拷貝一下元素表的,一不小心看到了代碼,于是。。。

因為學習了代碼,感覺思路還是挺簡單的,動態規劃。。

 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>
            亚洲欧美日韩国产精品| 久久久久久久性| 亚洲日本久久| 欧美精品啪啪| 亚洲网站在线观看| 亚洲一区免费网站| 国产精品日日做人人爱| 欧美一区二区三区免费观看| 亚洲欧美卡通另类91av| 国产日韩在线看| 久热国产精品| 欧美国产精品中文字幕| 亚洲一区二区三区免费观看 | 怡红院精品视频| 欧美成人午夜免费视在线看片| 老司机久久99久久精品播放免费| 亚洲精品中文字幕有码专区| 一区二区三区视频免费在线观看| 国产欧美短视频| 欧美顶级艳妇交换群宴| 欧美日韩免费看| 久久久www成人免费精品| 久久伊人亚洲| 亚洲尤物影院| 久久九九99视频| 一区二区三区产品免费精品久久75| 亚洲一区二区三区在线播放| 伊人久久婷婷色综合98网| 亚洲黄色有码视频| 国产欧美精品一区| 亚洲国产成人91精品| 国产精品视频网址| 亚洲高清一区二| 国产欧美日韩激情| 亚洲精品老司机| 精品成人免费| 亚洲图片在线观看| 亚洲欧洲一区二区三区在线观看| 亚洲视频一二区| 亚洲精品婷婷| 久久亚洲精品一区| 午夜一区不卡| 欧美片第1页综合| 模特精品在线| 国产欧美日韩在线观看| 亚洲精品字幕| 亚洲精品久久久久久久久久久久 | 欧美在线观看天堂一区二区三区| 一本色道久久88综合日韩精品| 欧美与黑人午夜性猛交久久久| 亚洲一区二区精品| 欧美日韩八区| 亚洲高清不卡在线观看| 狠狠做深爱婷婷久久综合一区| 一区二区黄色| 亚洲视频欧洲视频| 欧美高清免费| 亚洲激情影视| 日韩视频中文| 欧美激情一区二区三区四区| 欧美国产三级| 亚洲人成高清| 欧美国产精品久久| 亚洲日本免费电影| 日韩一级黄色片| 欧美日韩999| 亚洲人成网站精品片在线观看| 亚洲国产精品一区二区www在线| 久久精品30| 美女视频黄a大片欧美| 激情欧美一区| 麻豆freexxxx性91精品| 欧美xart系列高清| 欧美激情一区二区| 亚洲精品午夜精品| 一区二区精品在线观看| 亚洲一区免费视频| 午夜一区不卡| 国产女优一区| 久久天天躁狠狠躁夜夜爽蜜月| 久久婷婷蜜乳一本欲蜜臀| 国产亚洲欧美一级| 久久人体大胆视频| 最新国产成人在线观看| 99国产精品久久| 国产精品久久久久久久久借妻| 亚洲一区二区精品在线观看| 久久gogo国模裸体人体| 国内久久视频| 欧美国产一区二区| 亚洲一区国产一区| 蜜桃av久久久亚洲精品| 亚洲免费电影在线| 国产精品视频yy9099| 久久久91精品国产| 日韩视频第一页| 欧美制服丝袜| 亚洲精品资源美女情侣酒店| 国产精品igao视频网网址不卡日韩 | 欧美日本不卡高清| 亚洲午夜精品在线| 老司机亚洲精品| 中文亚洲字幕| 狠狠色丁香久久婷婷综合_中| 嫩草成人www欧美| 亚洲夜晚福利在线观看| 欧美不卡福利| 欧美在线啊v一区| 亚洲精品一级| 国产亚洲成精品久久| 欧美成年视频| 欧美在线免费观看| 亚洲精品在线一区二区| 久久久久久久久久久久久久一区| 亚洲乱码国产乱码精品精| 国产精品视频导航| 欧美精品免费看| 欧美在线视频二区| 99re在线精品| 欧美二区在线播放| 久久国产欧美日韩精品| 亚洲精品视频在线看| 国产综合色产在线精品| 欧美人妖另类| 久久噜噜亚洲综合| 亚洲欧美一区二区原创| 亚洲美女中文字幕| 欧美高清视频在线| 久久精品日产第一区二区三区 | 国产精品视频在线观看| 欧美国产日韩精品免费观看| 欧美在线高清视频| 亚洲一区图片| 一区二区91| 亚洲精选视频在线| 亚洲国产精品成人综合色在线婷婷| 久久国产免费看| 欧美一区二区观看视频| 一区二区欧美视频| 亚洲美女毛片| 日韩一区二区电影网| 亚洲日本欧美| 最新精品在线| 亚洲精品自在久久| 亚洲精品国产精品久久清纯直播| 在线播放日韩| 亚洲第一在线综合网站| 一区二区三区在线不卡| 激情伊人五月天久久综合| 国产一区二区三区在线观看网站| 国产精品区一区| 国产精品一区二区欧美| 国产精品一卡二卡| 国产欧美精品日韩精品| 国产亚洲综合性久久久影院| 国产日韩在线一区二区三区| 国产日韩欧美成人| 国产精品夜夜夜一区二区三区尤| 国产精品系列在线| 国产一区二区精品久久| 狠狠色伊人亚洲综合网站色| 在线成人av| 日韩系列欧美系列| 亚洲一区二区动漫| 久久精品理论片| 欧美成在线视频| 日韩午夜精品视频| 亚洲愉拍自拍另类高清精品| 香蕉成人伊视频在线观看| 久久久国产一区二区| 免费观看成人www动漫视频| 欧美成人精品一区二区| 欧美日韩视频| 国产日韩欧美电影在线观看| 在线观看福利一区| 亚洲视频专区在线| 久久久国产成人精品| 亚洲福利小视频| 亚洲系列中文字幕| 久久影院午夜片一区| 国产精品chinese| 极品少妇一区二区| 一区二区三区精密机械公司| 久久精品30| 91久久久久久久久| 亚洲欧美综合v| 欧美成人精品在线视频| 国产精品视频导航| 亚洲国产一区二区三区在线播 | 亚洲一区二区三区免费在线观看| 欧美在线亚洲| 91久久久在线| 久久久99免费视频| 欧美性一区二区| 亚洲激情视频网站| 欧美一区2区视频在线观看 | 麻豆成人精品| 亚洲午夜精品国产| 欧美精品亚洲二区| 韩日欧美一区二区三区|