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模拟
题目定位及考察点
难度等级: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模拟
相关文章推荐
- 2015NCHU第一届ACM新生选拔赛I题题解
- 2015NCHU第一届ACM新生选拔赛赛题说明
- 2015NCHU第一届ACM新生选拔赛E题题解
- 2015NCHU第一届ACM新生选拔赛A题题解
- 2015NCHU第一届ACM新生选拔赛B题题解
- 2015NCHU第一届ACM新生选拔赛C题题解
- 2015NCHU第一届ACM新生选拔赛D题题解
- 2015NCHU第一届ACM新生选拔赛G题题解
- 2015NCHU第一届ACM新生选拔赛H题题解
- 2015NCHU第一届ACM新生选拔赛J题题解
- ACM新生选拔赛第三场题解
- 2016Hrbust软件学院ACM新生选拔赛(一)
- 2015苏州大学ACM-ICPC集训队选拔赛(1) 1008
- 虐题时间!关于PKU的ACM选拔赛
- 『NYIST』第九届河南省ACM竞赛队伍选拔赛[正式赛二]--Codeforces -35D. Animals
- 山东省第一届ACM省赛 C SDUT 2153 Clockwise
- 南邮2014程序设计新生赛暨蓝桥杯校内自主选拔赛
- 第一次ACM选拔赛
- 2010年山东省第一届ACM大学生程序设计竞赛——Greatest Number
- nyist——ACM新生牛刀小试 Round#1题解