[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 麦克找了个新女朋友,玛丽卡对他非常恼火并伺机报复. 因为她和他们不住在同一个城市,因此她开始准备她的长途旅行. 在这个国家中每两个城市之间最多只有一条路相通,并且我们 ...
随机推荐
- C++ STL:stack和queue
http://blog.csdn.net/wallwind/article/details/6858634 http://blog.csdn.net/chao_xun/article/details/ ...
- HDFS学习
HDFS体系结构 HDFS采用了主从(Master/Slave)结构模型,一个HDFS集群包括一个名称节点(NameNode)和若干个数据节点(DataNode)(如图所示).名称节点作为中心服务器, ...
- js for循环中点击事件中无法获取每一个i值的问题
好像是第二次遇到这个问题,必须要总结一下!! <!DOCTYPE html> <html> <head> <meta charset="utf-8& ...
- springcloud 实战 feign使用中遇到的相关问题
springcloud 实战 feign使用中遇到的相关问题 1.使用feign客户端调用其他微服务时,session没有传递成功,sessionId不一样. /** * @author xbchen ...
- 【SPOJ】MGLAR10 - Growing Strings
Gene and Gina have a particular kind of farm. Instead of growing animals and vegetables, as it is us ...
- JavaWeb学习总结(八):HttpServletRequest对象
一.HttpServletRequest介绍 HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,通过这个对象 ...
- react常用命令
npm install -g create-react-appcreate-react-app my-appcd my-app/ 启动项目:npm start 安装依赖:npm install 编译: ...
- Android内存管理-OnTrimMemory
Application中有两个与内存管理相关的方法:onLowMemory()和 onTrimMemory(int level),源码如下 @CallSuper public void onLowMe ...
- 一次spring aop 切面的问题
最新项目有个新需求,要在已经写好的controller里面 加上传入参数的验证,由于有多个 controller而且验证每个都要调用其他的服务,故决定采用spring的aop方式. 1.添加aop的验 ...
- jsonp和ajax的区别
一.Ajax工作原理 相当于在用户和服务器之间加了—个中间层(AJAX引擎),使用户操作与服务器响应异步化.对于用户请求ajax引擎会做一些数据验证和数据处理,不是所有请求都提交给服务器,当需要从服务 ...