[LuoguP4711]分子质量(小模拟+玛丽题)
……这个题我居然可以把他\(1A\)……真是让我不知其可\(qwq\)
\(emmmm\)好像发现了什么固定的套路(?)……
大概就是这种题总会有
1、读入数 方案:快读即可。
2、鬼畜的优先级 方案:只要代码敲不死,就往死里敲代码\(qwq\)——特判
3、“数 + 数据”的运算 方案:跟着感觉走……
\(emmm\)第三条是真的!不是水水!这道题里的关键部分(即小括号的判读以及运算)由于是后缀形式,所以需要多操作一下\(qwq\)但我并没有特别缜密的思考就给搞完了
诶?被你发现了?其实我就是来存个代码的\(qwq\),甚至连题目描述都没有……
#include <map>
#include <cstdio>
#include <cstring>
#include <iostream>
int flag = 0 ;
using namespace std ;
const int MAXN = 210 ;
map<string, double> a ;
string s, qwq ; int N, i ;
double ans, res, Last, j ;
inline void init(){
a["H"]=1; a["C"]=12; a["N"]=14; a["O"]=16;
a["F"]=19; a["Na"]=23; a["Mg"]=24; a["Al"]=27;
a["Si"]=28; a["P"]=31; a["S"]=32; a["Cl"]=35.5;
a["K"]=39; a["Ca"]=40; a["Mn"]=55; a["Fe"]=56;
a["Cu"]=64; a["Zn"]=65; a["Ag"]=108; a["I"]=127;
a["Ba"]=137; a["Hf"]=178.5; a["Pt"]=195; a["Au"]=197;
a["Hg"]=201;
}
inline int r_int(int x, int &q){
res = 0 ;
while(s[x] <= '9' && s[x] >= '0')
res = res * 10 + s[x] - 48, x ++ ;
q = x ;
return res ;
}
inline double r_char(int x, int &q){
double ret = 0, T ; bool mark = 0 ;
if(x && s[x - 1] == '(') flag ++, mark = 1 ;
while(x <= N && (s[x] > '9' || s[x] < '0') && s[x] != '~' ){
if(s[x] == '(') x += 1, ret += r_char(x, x) ;
if(s[x] == ')') {x ++ ; break ;}
if(s[x + 1] <= 'z' && s[x + 1] >= 'a')
{string now ; now = now + s[x] + s[x + 1]; x ++, ret += a[now], qwq = now ;}
else if(s[x] <= 'Z' && s[x] >= 'A') {string now ; now += s[x] ; qwq = now, ret += a[now] ;}
else if(s[x] == '_'){
x += 2, T = r_int(x, x) ;
if(!flag || mark)ret += a[qwq] * (T - 1) ;
else {
flag -- ;
ret += (T - 1) * Last ;
}
}
x ++ ;
}
q = x ; if(flag) Last = ret ;
return ret ;
}
int main(){
cin >> s ; N = s.size() ;init() ;
for(i = 0; i <= N ; i ++){
if(s[i] == '~') continue ;
j = r_int(i, i) ; if(!j) j = 1.0 ;
ans += r_char(i, i) * j ;
}
cout << ans ;
}
[LuoguP4711]分子质量(小模拟+玛丽题)的更多相关文章
- luoguP1186 玛丽卡 x
P1186 玛丽卡 题目描述 麦克找了个新女朋友,玛丽卡对他非常恼火并伺机报复. 因为她和他们不住在同一个城市,因此她开始准备她的长途旅行. 在这个国家中每两个城市之间最多只有一条路相通,并且我们知道 ...
- 1021 玛丽卡 - Wikioi
题目描述 Description麦克找了个新女朋友,玛丽卡对他非常恼火并伺机报复. 因为她和他们不住在同一个城市,因此她开始准备她的长途旅行. 在这个国家中每两个城市之间最多只有一条路相通,并且我们知 ...
- P1186 玛丽卡
题目描述 麦克找了个新女朋友,玛丽卡对他非常恼火并伺机报复. 因为她和他们不住在同一个城市,因此她开始准备她的长途旅行. 在这个国家中每两个城市之间最多只有一条路相通,并且我们知道从一个城市到另一个城 ...
- 【10.6校内测试】【小模拟】【hash+线段树维护覆盖序列】
一开始看到题就果断跳到T2了!!没想到T2才是个大坑,浪费了两个小时QAQ!! 就是一道小模拟,它怎么说就怎么走就好了! 为什么要用这么多感叹号!!因为统计答案要边走边统计!!如果每个数据都扫一遍20 ...
- Luogu P1186 玛丽卡 【最短路】By cellur925
题目描述 麦克找了个新女朋友,玛丽卡对他非常恼火并伺机报复. 因为她和他们不住在同一个城市,因此她开始准备她的长途旅行. 在这个国家中每两个城市之间最多只有一条路相通,并且我们知道从一个城市到另一个城 ...
- USACO 玛丽卡(最短路+枚举)
USACO 玛丽卡 麦克找了个新女朋友,玛丽卡对他非常恼火并伺机报复. 因为她和他们不住在同一个城市,因此她开始准备她的长途旅行. 在这个国家中每两个城市之间最多只有一条路相通,并且我们知道从一个城市 ...
- codevs 1021 玛丽卡(spfa)
题目描述 Description 麦克找了个新女朋友,玛丽卡对他非常恼火并伺机报复. 因为她和他们不住在同一个城市,因此她开始准备她的长途旅行. 在这个国家中每两个城市之间最多只有一条路相通,并且我们 ...
- codevs1021 玛丽卡
题目描述 Description 麦克找了个新女朋友,玛丽卡对他非常恼火并伺机报复. 因为她和他们不住在同一个城市,因此她开始准备她的长途旅行. 在这个国家中每两个城市之间最多只有一条路相通,并且我们 ...
- Codevs 1021 (玛丽卡)
题目描述 Description 麦克找了个新女朋友,玛丽卡对他非常恼火并伺机报复. 因为她和他们不住在同一个城市,因此她开始准备她的长途旅行. 在这个国家中每两个城市之间最多只有一条路相通,并且我们 ...
随机推荐
- HDU 2553(N皇后)(DFS)
http://acm.hdu.edu.cn/showproblem.php?pid=2553 i表示行,map[i]表示列,然后用DFS遍历回溯 可以参考这篇文章: http://blog.csdn. ...
- 原生Ajax(XMLHttpRequest)
一.什么是Ajax: 全称Asynchronous JavaScript and XML: 异步的 JavaScript 和 XML: 可以在不重新加载整个页面的情况下(偷偷发数据),与服务器交换数据 ...
- Win10安装docker步骤
最近使用docker部署spring boot项目,写篇文章记录下步骤. 1. 确保本机win10系统虚拟化已启动启动,否则需要去BIOS设置(方法可百度) 2. 到docker网站下载DockerT ...
- iview动态校验表单,获取值为undefined
场景:实际代码如下:https://run.iviewui.com/XPofr3YS 原因:在动态校验名称时,没法获取值,请教了大神后,发现原来是自己demo没理清楚 这里的prop="na ...
- oracle删除归档日志
查看归档模式: SQL> archive log list; Database log mode Archive Mode Automatic archival Enabled Archive ...
- JAVA中获取文件的大小和文件的扩展名
一.获取文件扩展名(该段代码来自博客园网站装男人的博客https://www.cnblogs.com/nanrenzhuang/archive/2013/05/19/6315546.html) pub ...
- JDK配置步骤
1.安装jkd1.6.0以上版本. 2.安装结束后,运行cmd.键入: java -version判断JDK是否安装成功,如下图所示. 3.首先需要到官网上下载JDK这款软件,本人下载的是jdk-6u ...
- ffmpeg 简介及使用
简介 ffmpeg [global_options] {[input_file_options] -i input_url} ... {[output_file_options] output_url ...
- 在 O(1) 时间删除链表结点(C 和 Python 实现)
(说明:本博客中的题目.题目详细说明及参考代码均摘自 “何海涛<剑指Offer:名企面试官精讲典型编程题>2012年”) 题目 给定单向链表的头指针和一个结点指针,定义一个函数在 O(1) ...
- 1.bootstrap基础简介
一·基础简介 1.Bootstrap,来自 Twitter,是一个用于快速开发 Web 应用程序和网站的前端框架,是目前最受欢迎的前端框架. Bootstrap 是基于 HTML.CSS.JavaSc ...