Week2:区分己烷的同分异构体
A-化学
题目内容:
化学很神奇,以下是烷烃基。
假设如上图,这个烷烃基有6个原子和5个化学键,6个原子分别标号1~6,然后用一对数字 a,b 表示原子a和原子b间有一个化学键。这样通过5行a,b可以描述一个烷烃基
你的任务是甄别烷烃基的类别。
原子没有编号方法,比如
1 2
2 3
3 4
4 5
5 6
和
1 3
2 3
2 4
4 5
5 6
是同一种,本质上就是一条链,编号其实是没有关系的,可以在纸上画画就懂了。
输入格式
输入第一行为数据的组数T(1≤T≤200000)。每组数据有5行,每行是两个整数a, b(1≤a,b≤6,a ≤b)。
数据保证,输入的烷烃基是以上5种之一。
输出格式
每组数据,输出一行,代表烷烃基的英文名
样例
输入:
2
1 2
2 3
3 4
4 5
5 6
1 4
2 3
3 4
4 5
5 6
输出:
n-hexane
3-methylpentane
解题思路
仔细观察图中给出的五个己烷的同分异构体的构造可以很容易看出,不同的己烷具有不同的树状结构,这道题我们可以通过计算每个己烷中的部分点的所有出边的数量来判断当前给出的己烷属于哪一种。
更通俗地来说,这五种己烷分别具有以下互相区分的特点:
- n_hexane:出边为2的点有4个。
- 2,3-dimethylbutane:出边为3的点有2个。
- 2,3-dimethylbutane:出边为4的点有1个。
至于2-methylpentane和3-methylpentane,他们都有1个出边为3的点,2个出边为1的点,和3个出边为1的点,显然不能像上面三个那样简单区分。
因此采取的策略是:
- 找出出边为3的那个点(因为出边为3的点只有一个)
- 遍历和这个点相连的三个点(出边为3嘛)
- 获取这三个点的出边之和
然后我们就会发现:
- 2-methylpentane出边为3的点所相连的三个点的出边之和为5,另一个为4。
很好,找到了特点,于是我们可以写出以下代码:
#include<iostream>
#include<vector>
#include<cstring>
#include<cstdio>using namespace std;vector<int> Point[7];//6个碳原子int key[6];//key[i]:有i个化学键的点的数量int main()
{int T;cin >> T;while (T--){memset(key, 0, sizeof key);for (int i = 1; i <= 6; i++){//归零操作Point[i].clear();}int a, b;for (int i = 0; i < 5; i++){cin >> a >> b;Point[a].push_back(b);Point[b].push_back(a);}for (int i = 1; i <= 6; i++){key[Point[i].size()]++;}if (key[2] == 4){printf("n-hexane\n");continue;}if (key[4] == 1){printf("2,2-dimethylbutane\n");continue;}if (key[3] == 2){printf("2,3-dimethylbutane\n");continue;}for (int i = 1; i <= 6; i++){if (Point[i].size() == 3){int subkey = 0;for (int j = 0; j < Point[i].size(); j++){subkey += Point[Point[i][j]].size();}if (subkey == 5){printf("3-methylpentane\n");}else{printf("2-methylpentane\n");}break;}}}return 0;
}
Week2:区分己烷的同分异构体相关推荐
- 【北邮国院大三下】Logistics and Supply Chain Management 物流与供应链管理 Week2
北邮国院大三电商在读,随课程进行整理知识点.仅整理PPT中相对重要的知识点,内容驳杂并不做期末突击复习用.个人认为相对不重要的细小的知识点不列在其中.如有错误请指出.转载请注明出处,祝您学习愉快. 编 ...
- WEEK2 区块链和分布式账本 Blockchains and Distributed Ledger
week还有一些遗留问题 一起来看一下 工作量证明 Proof of work 区块链其实就是一个基于互联网去中心化的账本,每个区块相当于一页账本,它记录了交易内容.因为比特币是一个去中心账本,会引发 ...
- Qt pro文件下跨平台宏的使用(windows/linux 以及x86 和 arm的区分)
#Qt pro文件下跨平台宏的使用(windows/linux 以及x86 和 arm的区分) 在pro文件中添加: #仅在linux 系统下, 硬件平台无关的内容 unix{HEADERS += \ ...
- 区分BundleVersion和BundleShortVersionString
区分BundleVersion和BundleShortVersionString 最近遇到了关于检查更新的版本问题了. 问题出在了Info.Plist配置中的两个字段,BundleVersion和Bu ...
- 区分json与jsonp
JSON(JavaScript Object Notation)和JSONP(JSON with Padding)虽然只有一个字母的差别,但其实他们根本不是一回事儿,下边简单区分概括一下: JSON是 ...
- [转]语音识别中区分性训练(Discriminative Training)和最大似然估计(ML)的区别...
转:http://blog.sina.com.cn/s/blog_66f725ba0101bw8i.html 关于语音识别的声学模型训练方法已经是比较成熟的方法,一般企业或者研究机构会采用HTK工具包 ...
- pytorch与keras_Keras vs PyTorch:如何通过迁移学习区分外星人与掠食者
pytorch与keras by Patryk Miziuła 通过PatrykMiziuła Keras vs PyTorch:如何通过迁移学习区分外星人与掠食者 (Keras vs PyTorch ...
- 学术 | 一种新的CNN网络可以更高效地区分自然图像生成图像
作者 | Weize Quan , Kai Wang, Dong-Ming Yan , Xiaopeng Zhang 译者 | linstancy 编辑 | Jane 出品 | AI 科技大本营 [导 ...
- 关于android设备唯一区分device id的取得
2019独角兽企业重金招聘Python工程师标准>>> 有些apk为了区分唯一设备,需要用到一个device id. 1. 取得设备的MAC address 如果用户没有通过w ...
最新文章
- Tcl与Design Compiler (三)——DC综合的流程
- java数组写入excel_求将java中数组内容逐条加进excel中的代码
- 福建师范大学计算机考研好考吗,福建师范大学考研难吗?一般要什么水平才可以进入?...
- druid 多数据源_SpringBoot+Mybatis+Druid+PageHelper 实现多数据源并分页
- random-生成随机数模块
- CMMI认证多少钱?
- 虚拟偶像大众化元年,如何挖掘蓝海市场|虚拟偶像公司2020年盘点
- 计算机二级考试科目vfp,计算机二级考试科目及内容
- cp正在写入文件导致文件内容不一致
- [noip模拟赛]算算数
- pip安装第三方包出现ssl错误的解决方法
- OpenStack高级控制服务之使用编配服务(Heat)实现自动化部署云主机
- 2021-10-16windows系统还原点创建/查看/配置/删除
- Artifact xxx:war exploded: Error during artifact deployment.See server log for details.
- 音频均衡器 matlab code,急求高手 设计声音均衡器 滤波器
- 互联网开发模式的经验之谈
- 推荐几个H5、app制作开发工具
- readtable matlab抬头,关于使用READ TABLE语句
- 苏宁从面试到入职历险记
- Unity之几何着色器--草随风摇曳