解法不唯一,但是还是set好理解而且用着爽,代码注释应该够详细了

#include<stdio.h>
#include<string.h>
#include<math.h>
#include<time.h>
#include<iostream>
#include<ctype.h>
#include<map>
#include<set>
#include<string>
#include<vector>
#include<algorithm>
#include<stdlib.h>
#include<queue>
#include<stack>
using namespace std;
set<string>s1;
set<string>s2;
set<string>::iterator tt;
char ss[];
char str[][];
int cc(char cs)//只检查字母数字,也就是存化学式,碰见+或者=就跳过去
{
if(isdigit(cs))
return ;
if(isalpha(cs))
return ;
return ;
}
int main()
{
int t,i,j,n,m,fla,k; while(~scanf("%d",&n))
{ s1.clear();
s2.clear(); for(i=;i<n;i++)
scanf("%s",str[i]);
scanf("%d",&m);
for(i=;i<m;i++)
{
scanf("%s",ss);
s1.insert(ss);
}
for(i=;i<n;i++)
{
fla=;//,每一次也就是每个化学方程式都是从左开始,判断是=号左侧还是右侧的,右侧生成物也得存入反应物里,也就是s1集合里边,左侧的话直接检测给的能用的反应物以及生成物集合s1里有没有就行了
for(j=;j<strlen(str[i]);j++)
{
if(fla)//右侧生成物
{
k=;
memset(ss,'\0',sizeof(ss));
while(cc(str[i][j]))
{
ss[k++]=str[i][j];
j++;
}
if(s1.find(ss)==s1.end())//s1里没有的话表示是新生成物,存到s2,同时存到s1也可以利用
s2.insert(ss);
s1.insert(ss);
}
else //左侧反应物
{
k=;
memset(ss,'\0',sizeof(ss));
while(cc(str[i][j]))
{
ss[k++]=str[i][j];
j++;
}
if(s1.find(ss)==s1.end()) break;//检查左侧,s1里不包含这个化学式表示并没有这个反应物,也就是没有这个化学方程式,直接跳过这个化学方程式就行。
}
if(str[i][j]=='=') fla=;//找到=就标记,开始循环判断右侧生成物
}
}
cout<<s2.size()<<endl;
for(tt=s2.begin();tt!=s2.end();tt++)
cout<<*tt<<endl;
}
}

NYOJ 542 试制品(第五届河南省省赛)的更多相关文章

  1. 试制品 (nyoj 542)

    模拟 a 反应物集合 ; b 生成物集合; c 存在的化合物或单质集合; ans 新生成化合物集合 1.如果反应无均在已生成的化合物集合中,则完成反应,将合成物加入c集合 2.对每个方程式的反应物进行 ...

  2. NYOJ 1277Decimal integer conversion (第九届河南省省赛)

    XiaoMing likes mathematics, and heis just learning how to convert numbers between different bases , ...

  3. 2014山东省“浪潮杯”第五届ACM省赛总结

    一次比赛做一次总结,弱菜又来总结了…… 我这种大四的又死皮赖来混省赛了,貌似就我和山大威海的某哥们(不详其大名)了吧.颁奖前和他聊天,得知他去百度了,真是不错,ORZ之. 比赛流水账: 题目目前不知道 ...

  4. 第八届河南省省赛 A.挑战密室

    挑战密室 时间限制: ms | 内存限制: KB 难度: 描述 R组织的特工Dr. Kong 为了寻找丢失的超体元素,不幸陷入WTO密室.Dr. Kong必须尽快找到解锁密码逃离,否则几分钟之后,WT ...

  5. nyoj 1238 最少换乘 (河南省第八届acm程序设计大赛)

    题目1238 题目信息 执行结果 本题排行 pid=1238" style="text-decoration:none; color:rgb(55,119,188)"&g ...

  6. 2021CCPC河南省省赛

    大一萌新,第一次打比赛,虽然是线下赛,但送气球的环节还是很赞的! 这里主要是补一下自己的弱项和考试时没有做出来的题目. 1002(链接之后再放,官方还没公开题目...) 先说一下第二题,这个题一看就是 ...

  7. 青岛理工大学第五届ACM交流赛 部分题解

    A:后缀维护si*pi的最小值,查询的时候二分,判断后缀和当前两个部分就行. #include <bits/stdc++.h> using namespace std; typedef l ...

  8. 山东省第五届ACM省赛

    题目链接:http://acm.sdut.edu.cn/sdutoj/contest_show.php?contest_id=1449 相关总结:http://www.cnblogs.com/mcfl ...

  9. 第四届河南省省赛 走迷宫 二分+DFS

    题目思路:使用二分查找路径中最大值和最小值之间的差值,从而确定出一组minn和maxn,对此组的minn和maxn经行DFS,如果可以找到一条路径,其中的最大值,最小值在minn~maxn的范围内,则 ...

随机推荐

  1. python_str 字符串的所有方法

    # _Author:huang# date: 2017/11/28 # 字符串 '''print("hello" * 3)print("hello world" ...

  2. IO流实例

    //字节流: import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;impor ...

  3. 不简单的工厂:实际体验 .NET Core 2.1 新生物 HttpClientFactory

    在 HttpClientFactory 出生之前,由于 HttpClient 臭名昭著的“dispose之后4分钟TCP连接才会被关闭”问题(详情),只能使用单例或静态的 HttpClient ,比如 ...

  4. Luogu 1071 - 潜伏者 - [字符串]

    题目链接:https://www.luogu.org/problemnew/show/P1071 题解: 模拟就完事儿了. 注意failed的情况有:出现一个 $f[x]$ 对应多个值:存在两个不同的 ...

  5. 安装配置Spark集群

    首先准备3台电脑或虚拟机,分别是Master,Worker1,Worker2,安装操作系统(本文中使用CentOS7). 1.配置集群,以下步骤在Master机器上执行 1.1.关闭防火墙:syste ...

  6. Web开发——HTML基础(HTML表格 <table>)

    参考: 表格属性参考:http://www.w3school.com.cn/tags/tag_table.asp 目录: 1.举例 2.表格 2.1 表格属性 2.2 表格的表头 2.3 表格中的空单 ...

  7. 关于for循环

    1.普通for循环 (遍历数组的索引值(下标),边界可以自己划定) var arr = [10, 20, 30];for(var i=0; i<arr.length; i++) console. ...

  8. java八大数据类型

    基本数据类型以值传递的方式进行传递,String以值传递的方式传递,其他的以地址的方式进行传递 分别是:byte  short  int  long  float  double char boole ...

  9. SpringBoot-将servlet容器变成undertow测试tomcat吞吐量

    将Servlet容器变成Undertow 默认情况下,Spring Boot 使用 Tomcat 来作为内嵌的 Servlet 容器 可以将 Web 服务器切换到 Undertow 来提高应用性能.U ...

  10. 使用Vivado初探ZedBoard的OLED驱动

    一.原理简介 Vivado版本:2016.2 OLED型号:128*32的UG-2832HSWEG04 ZedBoard的OLED部分电路原理图如下:(需要我们关心的是我用红色椭圆标注出来的3处,一共 ...