您的位置:首页 > 其它

2015NCHU第一届ACM新生选拔赛F题题解

2015-03-29 20:15 281 查看
F.Experimental simulation of molecular self-assembly
题目定位及考察点

难度等级:B

考察点:模拟、较复杂输入的处理

题意翻译

正式赛赛前,LYK收到通知——上海大学计算机学院有一场关于计算机模拟的讲座,于是他就跑去听了。听完以后不禁感叹重点大学就是好,可以有好的实验条件,要是自己学校也有这样的实验力量就好了。虽然大实验做不了,但简单的模拟总能做做嘛。现在他希望可以做一下分子自组装的实验模拟,只是不懂编程。聪明的ACMer,你可以帮帮他吗?

对于每一个实验来说,都是由一系列的实验步骤组成的。而每一个实验步骤对应于以下这样一个命令:A P Q V。A代表原子的元素种类,例如碳则为C、硅则为Si(数据保证元素种类都是单字符)。P代表原子A的价态,例如碳原子(C)的价态为+4。Q代表原子A将要结合的原子的标号,例如我现在要把一个碳原子与一个碳原子结合,而后者的标号是3,则Q的值为3。这里的原子标号是指,它在实验中的引入次序,更具体地说,假设第3组实验引入了原子A,则原子A的原子标号是3。约定,实验序数从1开始。V代表原子A与第Q号原子的结合价态,例如碳原子与碳原子形成单键的时候是+1价、形成双键的时候是+2价。

实验中原子间的结合基于初等化学,也就是说,只要两原子的可成键数量满足结合价态Q的要求,则该实验步骤可以成功进行;否则则失败。只要每一个实验步骤都可以成功进行的则该实验成功完成;反正只要任意一个步骤失败,该实验失败。

输入样例的第一行是一个整数n,代表实验的数量,n的范围在1到100之间。接下来每组样例的第一行是一个整数m,代表每个实验的步骤数,取值范围在1到1000之间。接下来的第一行包含2个以空格隔开的字符C和P,再接下来的m-1行,每行包含4个以空格隔开的字符A、P、Q、V(具体含义就是题目中所指的含义)。

输出每个实验能否成功完成。如果可以则输出Yes,否则输出No。

题解思路

这道题的关键在于原子之间的结合规则。题目说了,只要两原子的可成键数量满足结合价态的要求即可完成该实验步骤,所以说,如果被结合的原子的剩余成键数量大于等于结合价态,那么就可以成键了。于是,对于每一组命令,我们需要判断Q对应的原子剩余的可成键数量是否大于等于原子A的结合价态V,如果大于等于则可以进行,否则则不行。因此,我们需要记录每一个原子的剩余可成键数量(初始值为原子的价态P)。当原子之间成功结合的时候,则这两个原子的剩余可成键数量均减去结合价态V,这样就可以模拟原子可成键数量的变化了。

对新人的话

这道题的描述确实复杂了点,但事实上,很多模拟题的特点要么就是题目描述很长很复杂,要么就是代码量特别大,所以还是要锻炼锻炼这方面的能力的。

另外,非常需要注意数字与字符混合输入时候的处理,有的时候忘记了吃掉回车符,可能你输入的东西就完全变了,切记!

复制去Google翻译翻译结果
分子自组装的F.Experimental模拟
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: