201912-3 化学方程式

他这个好像之和大写字母有关系;

小写字母跟着前面的的大写字母;

+和=代表要处理了;

()代表要乘了;

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring> 
#include<vector>
#include<set>
#include<stack>
using namespace std;
typedef long long ll;
const int N=3e5+10,mod=998244353;
char c[N]="+";//前面不用特判了; 后面后向加不了。。加了时候以后读入数据时好像没覆盖; 
int X[10000];struct po{int a,c;
};//a相当于判断a==-1是( / ) 大于零是字母; 
vector<po>s(N);//不知道栈可不可以索引。。。。 
int hh=-1;
stack<int>st;//括号序列的处理; bool isdig(char x){return x>='0'&&x<='9';}
bool islow(char x){return x>='a'&&x<='z';}
bool isbig(char x){return x>='A'&&x<='Z';}void CLEAR(int h,int K)
{while(hh>=0){int a=s[hh].a,c=s[hh].c;hh--;if(a==-1)continue;X[a]+=h*c*K;}return ;
}
int main()
{int t;scanf("%d",&t);while(t--){scanf("%s",c+1);int h=1,K=1;//h是等号左边还是右边;k是每个化学式的系数; for(int i=0;c[i];i++){char x=c[i];if(x=='=')CLEAR(h,K),h=-1,K=1;else if(x=='+')CLEAR(h,K),K=1;else if(x=='(')s[++hh]={-1,0},st.push(hh);else if(x==')')s[++hh]={-1,st.top()},st.pop();//这样找到每个括号左边的位置 放到c else if(isbig(x))s[++hh]={x-'A'+1,1};//+1是防止 Ag=Au 个数默认为1; else if(islow(x))s[hh].a=s[hh].a*30+x-'a'+1; //小写字母就跟在之前大写字母的后面; else if(isdig(x)){int v=0;bool H=(c[i-1]=='+'||c[i-1]=='=');//是分界限 while(isdig(c[i]))v=v*10+c[i]-'0',i++;i--;if(H){K=v;continue;}//赋系数; if(s[hh].a==-1){int l=s[hh].c,r=hh;for(int i=l;i<=r;i++)if(s[i].a!=-1)s[i].c*=v;//乘到里面; }s[hh].c=v; // 修改个数; }}CLEAR(h,K); bool flag=1;for(int i=0;i<1000;i++)if(X[i])flag=0;puts(flag?"Y":"N");memset(X,0,1000*sizeof(int));} return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/316209.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.NET Framework 4.8发布

原文地址&#xff1a;https://devblogs.microsoft.com/dotnet/announcing-the-net-framework-4-8/我们很高兴地宣布今天发布.NET Framework 4.8。它包含在Windows 10 May 2019更新中。.NET Framework 4.8也可在Windows 7和Windows Server 2008 R2 上使用。您可以从我们的 .NET下…

Deltix Round, Summer 2021 (open for everyone, rated, Div. 1 + Div. 2)

Deltix Round, Summer 2021 (open for everyone, rated, Div. 1 Div. 2) 题号题目知识点AA Variety of OperationsBTake Your Places!CCompressed Bracket SequenceDTake a GuessEEquilibriumFSports BettingGGates to Another WorldHDIY Tree

[NewLife.XCode]数据层缓存(网站性能翻10倍)

NewLife.XCode是一个有10多年历史的开源数据中间件&#xff0c;支持nfx/netcore&#xff0c;由新生命团队(2002~2019)开发完成并维护至今&#xff0c;以下简称XCode。整个系列教程会大量结合示例代码和运行日志来进行深入分析&#xff0c;蕴含多年开发经验于其中&#xff0c;代…

cf1556A. A Variety of Operations

cf1556A. A Variety of Operations 题意&#xff1a; 有两个数a&#xff0c;b一开始都是0&#xff0c;现在有三种操作&#xff1a; 给a和b都加ka加k&#xff0c;b减ka减k&#xff0c;b加k 问从a0&#xff0c;b0到ac&#xff0c;bd最少需要几步&#xff1f; 题解&#xff1a…

[NewLife.XCode]高级查询(化繁为简、分页提升性能)

NewLife.XCode是一个有10多年历史的开源数据中间件&#xff0c;支持nfx/netcore&#xff0c;由新生命团队(2002~2019)开发完成并维护至今&#xff0c;以下简称XCode。整个系列教程会大量结合示例代码和运行日志来进行深入分析&#xff0c;蕴含多年开发经验于其中&#xff0c;代…

cf1556B B. Take Your Places!

cf1556B B. Take Your Places! 题意&#xff1a; 有n个数&#xff0c;你可以将相邻两个数交换&#xff0c;使得奇偶性一样的数不相邻。问最少操作步数 题解&#xff1a; 最终排列无非是&#xff1a;奇&#xff0c;偶&#xff0c;奇…或者偶&#xff0c;奇&#xff0c;偶… …

微软云Azure训练营 | 八城联动,全球盛会

Global Azure Bootcamp是由微软发起、MVP参与组织的全球化学习交流活动。每年会挑选一个特定的时间&#xff0c;在同一天内&#xff0c;全球不同地区将同时开展。2019年全球Azure训练营&#xff08;Global Azure Bootcamp&#xff09;将于2019年4月27日在全球270多个城市同时举…

2021-09-211547G - How Many Paths?

#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <set> using namespace std; typedef long long ll;const int N4e510,M1e610,mod998244353;int h[N],hs[N],e[M],ne[M],idx0; // h 原图 hs新图 v…

cf1556Compressed Bracket Sequence

cf1556Compressed Bracket Sequencex 题意&#xff1a; 给你n个数&#xff0c;奇数位置上的数表示左括号的数量&#xff0c;偶数位置上的数表示右括号的数量。问有多少个[l,r]是满足括号匹配的 题解&#xff1a; 括号匹配也算是经典问题了 直接统计不好计算&#xff0c;我们…

长沙4月21日开发者大会暨.NET社区成立大会活动纪实

活动总结2019年4月21日是一个斜风细雨、微风和煦的美好日子&#xff0c;由长沙.NET技术社区、腾讯云云加社区、微软Azure云技术社区、中国.NET技术社区、长沙柳枝行动、长沙互联网活动基地&#xff08;唐胡子俱乐部&#xff09;等多家单位共同主办的长沙开发者技术大会暨长沙.N…

树上启发式合并 简单例题

U41492 树上数颜色 #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <set> #include <vector> #include <queue> using namespace std; typedef long long LL; typedef pair<int,int…

cf1556D. Take a Guess

cf1556D. Take a Guess 题意&#xff1a; 交互题 有n个数和k个询问&#xff0c;你最多只能询问2n次&#xff0c;可以询问任意两个位置数的or或者是and&#xff0c;然后输出这n个数的第k大数 题解&#xff1a; 先说个结论&#xff1a; x y (x or y) (x and y) (嘶&#x…

SQL Server AlwaysOn 集群 关于主Server IP与Listener IP调换的详细测试

1. 背景SQL Server 搭建AlwaysOn后&#xff0c;我们就希望程序连接时使用虚拟的侦听IP&#xff08;Listener IP&#xff09;&#xff0c;而不再是主Server 的IP。如果我们有采用中间件&#xff0c;则可以在配置中&#xff0c;直接用Listener IP 替换掉 Server IP&#xff0c;可…

1592E - Скучающий Бакри

首先把那式子转换成长度为偶数并且二进制有一段连续的一&#xff0c;大于这位的数量都是偶数 如果长度为奇数那么如果 and 是1&#xff0c;xor 一定是1&#xff1b;and 是0&#xff0c;xor可能是1&#xff1b;所以长度为奇数一定不可以。 那么长度为偶数的话&#xff0c;对二…

cf1556E. Equilibrium

cf1556E. Equilibrium 题意&#xff1a; 有a&#xff0c;b两组长度为n的数&#xff0c;现在你要通过操作将范围[l,r]中的a&#xff0c;b两组一样。每次操作你在[l,r]中选偶数个下标pos&#xff0c;{pos1,pos2,pos3…}&#xff0c;在奇数位上的下标给序列a对应的下标pos1加上1…

线段树动态开点 - - - > 线段树合并

逆序对 代码 P3224 [HNOI2012]永无乡 并查集线段树合并 ​​​​ 代码 P5494 【模板】线段树分裂 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<vector> #include<queue> #include<…

在 DotNetCore 3.0 程序中使用通用协议方式启动文件关联应用

问题描述在传统的基于 .NET Framework 的 WPF 程序中&#xff0c;我们可以使用如下代码段启动相关的默认应用&#xff1a;Copy# 启动默认文本编辑器打开 helloworld.txtProcess.Start("helloworld.txt");# 启动默认浏览器打开 https:Process.Start("https://hip…

cf451E. Devu and Flowers(产生不同多重集数量)

cf451E. Devu and Flowers 题意&#xff1a; 有n个箱子&#xff0c;第i个箱子里有ai朵花&#xff0c;同一个箱子里花的颜色一样&#xff0c;不同箱子里的花颜色不一样。现在在这些箱子里选出m朵花组成一束&#xff0c;求一共有多少种方案。要求任意两束花都不一样 题解&…

.NetCoreLinuxDockerPortainer踩坑历险记

最近有一个云服务器和数据库的迁移任务&#xff0c;踩坑爬坑无数次&#xff0c;觉得必须要记录一下。大家瓜子花生准备好&#xff0c;听我慢慢讲故事#手动笑哭#。故事背景公司是做电商业务的&#xff0c;在天猫有几家旗舰店数据量也很大。阿里有一个称为聚石塔的平台&#xff0…

F - Parenthesis Checking

​​​​​​​1 . ( - > 1 , ) - > -1; 先想前缀和&#xff0c;求出l&#xff0c;r中的最小值&#xff0c;如果最小值小于l-1的前缀和&#xff0c;那么说明有某个点的 ) 大于 ( 数量 不满足条件&#xff1b; 用线段树优化区间修改和区间查询&#xff1b; 2 . …