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

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.




學(xué)習(xí)了 fura2 的代碼——本來(lái)只是想偷懶拷貝一下元素表的,一不小心看到了代碼,于是。。。

因?yàn)閷W(xué)習(xí)了代碼,感覺(jué)思路還是挺簡(jiǎn)單的,動(dòng)態(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);  // 超時(shí)
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 閱讀(1535) 評(píng)論(1)  編輯 收藏 引用 所屬分類(lèi): ACM

Feedback

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

來(lái)踩一下~~  回復(fù)  更多評(píng)論   


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            一区二区三区四区五区在线 | 欧美高清视频一二三区| 欧美一区二区免费| 国产一区视频在线观看免费| 久久婷婷国产综合精品青草| 久久久久久伊人| 亚洲人成网站影音先锋播放| 亚洲日本va在线观看| 欧美韩国日本综合| 亚洲欧美亚洲| 久久久水蜜桃av免费网站| 亚洲精品免费一二三区| 亚洲午夜日本在线观看| 影音先锋日韩精品| 亚洲精品日韩一| 国产美女一区二区| 欧美激情亚洲视频| 国产精品国产三级国产普通话蜜臀 | 亚洲手机在线| 伊人久久大香线蕉av超碰演员| 亚洲国产综合91精品麻豆| 国产精品久久久一区二区| 麻豆精品精品国产自在97香蕉| 欧美精品 日韩| 久久爱另类一区二区小说| 裸体素人女欧美日韩| 午夜亚洲伦理| 国产欧美一区在线| 欧美大秀在线观看| 国产精品日韩欧美一区二区| 欧美高清在线视频| 国产欧美日本| 一区二区欧美日韩| 亚洲精品视频在线看| 欧美在线欧美在线| 亚洲综合视频在线| 欧美1区免费| 久久综合色播五月| 国产精品亚洲美女av网站| 亚洲激情一区二区| 伊人狠狠色j香婷婷综合| 亚洲影院在线| 亚洲免费视频在线观看| 欧美 日韩 国产在线| 久久人人97超碰精品888| 国产精品视频内| 亚洲精品乱码久久久久久蜜桃91 | 六月天综合网| 免费不卡在线观看| 国产亚洲视频在线| 亚洲欧美日韩天堂| 亚洲欧美日韩国产综合在线| 欧美日韩视频专区在线播放 | 你懂的亚洲视频| 国内精品久久久久国产盗摄免费观看完整版| 亚洲精选一区二区| 日韩一级在线观看| 欧美国产日韩在线观看| 亚洲激情综合| 一本色道久久综合亚洲二区三区| 久久一区二区精品| 免费观看成人| 亚洲高清一区二区三区| 狼狼综合久久久久综合网| 女生裸体视频一区二区三区| 韩国一区电影| 久久久人人人| 亚洲国产你懂的| 日韩午夜三级在线| 欧美日韩精品一区二区三区四区 | 日韩视频免费观看高清在线视频| 日韩一级欧洲| 国产精品久久亚洲7777| 亚洲影院一区| 麻豆freexxxx性91精品| 亚洲高清免费视频| 欧美激情一区二区三区蜜桃视频 | 精品av久久707| 久久婷婷av| 亚洲日本成人网| 亚洲一区欧美| 国产免费一区二区三区香蕉精| 亚洲欧美日韩另类| 美女网站久久| 一区二区精品在线| 国产伦精品一区二区三区免费| 欧美在线免费视屏| 亚洲国产日韩精品| 午夜精品国产更新| 亚洲第一区在线| 欧美国产一区二区在线观看| 一本色道久久综合| 久久麻豆一区二区| 9久re热视频在线精品| 国产欧美午夜| 欧美va亚洲va日韩∨a综合色| 99精品国产在热久久下载| 欧美一区二视频| 亚洲免费精品| 国产一区二区0| 欧美日本不卡视频| 久久久99精品免费观看不卡| 亚洲精品视频一区二区三区| 久久gogo国模啪啪人体图| 亚洲精品欧美在线| 国模私拍一区二区三区| 欧美另类在线播放| 久久久精品网| 亚洲在线观看| 91久久在线播放| 久久久久久久高潮| 一区二区三区欧美在线观看| 激情伊人五月天久久综合| 欧美视频亚洲视频| 欧美电影在线播放| 久久精品国产清高在天天线| 一级成人国产| 亚洲精品国产日韩| 免费观看成人www动漫视频| 欧美中在线观看| 亚洲午夜女主播在线直播| 最新日韩在线视频| 激情欧美亚洲| 国产日韩在线播放| 国产精品人人爽人人做我的可爱| 欧美精品二区| 欧美高清在线一区二区| 久久偷窥视频| 久久精品国产v日韩v亚洲| 亚洲一区中文| 一区二区三区日韩精品| 一区二区三区日韩欧美| 亚洲免费观看高清完整版在线观看| 欧美刺激性大交免费视频 | 亚洲美女av在线播放| 亚洲第一精品夜夜躁人人躁| 在线免费观看日本欧美| 伊人成人在线| 亚洲国产小视频在线观看| 在线观看国产欧美| 在线日韩精品视频| 在线国产亚洲欧美| 亚洲福利视频免费观看| 亚洲第一毛片| 亚洲毛片一区二区| 99riav久久精品riav| 亚洲一二三区视频在线观看| 亚洲一区二区三区乱码aⅴ蜜桃女| 亚洲亚洲精品在线观看| 午夜精品久久久久久| 欧美一区三区三区高中清蜜桃| 久久精品国产精品亚洲综合 | 日韩一区二区精品| 亚洲一级二级| 久久成人av少妇免费| 久久亚洲国产精品日日av夜夜| 老司机午夜精品| 亚洲国产婷婷香蕉久久久久久| 亚洲精品在线观| 亚洲一卡二卡三卡四卡五卡| 欧美在线三级| 欧美大片免费久久精品三p | 另类激情亚洲| 欧美日韩国产一级| 国产欧美日韩免费| 在线色欧美三级视频| 中国成人在线视频| 久久久久久久久综合| 亚洲国产黄色| 亚洲伊人观看| 久久综合九色欧美综合狠狠| 欧美日韩hd| 韩国av一区二区三区四区| 亚洲区免费影片| 午夜精品久久久久| 亚洲第一在线综合在线| 宅男66日本亚洲欧美视频| 久久精品免费电影| 欧美日韩一区二区视频在线| 国内一区二区三区| 一本久久青青| 麻豆91精品| 美女黄毛**国产精品啪啪| 国产精品毛片va一区二区三区| 伊人成人网在线看| 欧美一区二区三区婷婷月色| 欧美激情中文不卡| 欧美一区日本一区韩国一区| 欧美日本一区二区高清播放视频| 国产中文一区| 亚洲欧美怡红院| 亚洲经典自拍| 久久人人精品| 国产一区在线看| 亚洲一区二区三区在线视频| 欧美华人在线视频| 久久久综合精品| 国产日韩成人精品| 亚洲欧美久久久久一区二区三区| 亚洲高清三级视频|