codeforces 906C

A. Shockers

introduction

这道题要充分理解题意和输入的意思。

method

可以用集合的思想的做
集合\(A\)表示可行的字母,初始是\(26\)个字母
集合\(B\)表示每一句操作的字符的集合
集合\(C\)表示猜过的字符的集合
每读入一个动作,
如果\(|A|>1\)我们做如下操作:
\[ A= \begin{cases} A\cap B, & \text{if $op$ is !} \\ A\setminus B, & \text{if $op$ is .}\\ update \ C, A\setminus C,&\text{if $op$ is ?} \end{cases}\\ op \in \{!, . , ?\} \]
如果\(|A|=1\):
统计多余的次数

tips

  • set的初始化方法
  • set_intersectionset_difference的用法
  • 关闭cinstdio的同步
  • cin接受行末的\n

Q&A

conclusion

做这道题学到了很多新的知识,尝试使用STL中的set来解决问题。
如果WA是因为思路有问题,那么可以查看别人AC的代码的测试数据,可以作为判断问题的依据。为codeforces打call。

reference

https://ask.csdn.net/questions/63825
https://blog.csdn.net/kalilili/article/details/42177279
http://c.biancheng.net/view/537.html

code

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<string>
#include<vector>
#include<cmath>
#include<map>
#include<istream>
#include<cassert>
#include<set>
#include<iterator>
#define DEBUG(x) cout<<#x<<" = "<<x<<endl
using namespace std;
const int MAXN=1e5+10;
typedef long long ll;
vector<string>input;
set<char>cndt;
set<char>ask;
void fillcndt()
{for(int i=0;i<26 ;i++ ){cndt.insert('a'+i);}
}
int main()
{
//    freopen("in.txt","r",stdin);ios::sync_with_stdio(false);cin.tie(0);fillcndt();int n;(cin>>n).get();for(int ii=0;ii<n ;ii++ ){string t;getline(cin,t);input.push_back(t);}char ltr=input[n-1][2];int ans=0;for(int ii=0;ii<n-1 ;ii++ ){set<char>tmp;set<char>strst{input[ii].begin()+2,input[ii].end()};char &c=input[ii][0];if(cndt.size()>1){if(c=='!')set_intersection(cndt.begin(),cndt.end(),strst.begin(),strst.end(),inserter(tmp,tmp.begin()));else if(c=='.')set_difference(cndt.begin(),cndt.end(),strst.begin(),strst.end(),inserter(tmp,tmp.begin()));else if(c=='?'){ask.insert(input[ii][2]);set_difference(cndt.begin(),cndt.end(),ask.begin(),ask.end(),inserter(tmp,tmp.begin()));}cndt=tmp;}else if(c=='!'||c=='?'){assert(cndt.size()!=0);ans++;}}cout<<ans;
}

转载于:https://www.cnblogs.com/MalcolmMeng/p/10260657.html

codeforces 906C相关推荐

  1. CodeForces 906C(状态压缩 +BFS)

    题目链接 题意:某人举办了一个party,邀请了他的朋友来,他的朋友也邀请了他们的朋友.etc.然后某人并不认识他朋友的朋友,这样聊天很尬,所以就让邀请他不认识的人的朋友给某人介绍.假设通过朋友C介绍 ...

  2. CodeForces 375D Tree and Queries

    传送门:https://codeforces.com/problemset/problem/375/D 题意: 给你一颗有根树,树上每个节点都有其对应的颜色,有m次询问,每次问你以点v为父节点的子树内 ...

  3. 「日常训练」Bad Luck Island(Codeforces Round 301 Div.2 D)

    题意与分析(CodeForces 540D) 是一道概率dp题. 不过我没把它当dp做... 我就是凭着概率的直觉写的,还好这题不算难. 这题的重点在于考虑概率:他们喜相逢的概率是多少?考虑超几何分布 ...

  4. 【codeforces 812C】Sagheer and Nubian Market

    [题目链接]:http://codeforces.com/contest/812/problem/C [题意] 给你n个物品; 你可以选购k个物品;则 每个物品有一个基础价值; 然后还有一个附加价值; ...

  5. CodeForces 获得数据

    针对程序的输出可以看见 CodeForces :当输入.输出超过一定字符,会隐藏内容 所以:分若干个程序进行输入数据的获取 1. 1 for (i=1;i<=q;i++) 2 { 3 scanf ...

  6. codeforces水题100道 第二十七题 Codeforces Round #172 (Div. 2) A. Word Capitalization (strings)...

    题目链接:http://www.codeforces.com/problemset/problem/281/A 题意:将一个英文字母的首字母变成大写,然后输出. C++代码: #include < ...

  7. CodeForces 595A

    题目链接: http://codeforces.com/problemset/problem/595/A 题意: 一栋楼,有n层,每层有m户,每户有2个窗户,问这栋楼还有多少户没有睡觉(只要一个窗户灯 ...

  8. codeforces A. Jeff and Digits 解题报告

    题目链接:http://codeforces.com/problemset/problem/352/A 题目意思:给定一个只有0或5组成的序列,你要重新编排这个序列(当然你可以不取尽这些数字),使得这 ...

  9. Codeforces Round #506 (Div. 3)

    Codeforces Round #506 (Div. 3) 实习期间事不多,对div3 面向题解和数据编程了一波 A. Many Equal Substrings 题目链接 A题就是找后缀和前缀重合 ...

最新文章

  1. oracle数据字典表与视图
  2. SRAM BIST技术学习
  3. 网页Request Headers请求头和Response Headers响应头
  4. Idea中搭建Wildfly(JBoss)运行环境(Mac)
  5. laravel5.5 php7,ubuntu 16.04+nginx+mysql+php7.1+laravel5.5环境
  6. JSP断点续传多线程链接下载
  7. BZOJ1085:[SCOI2005]骑士精神——题解+IDA*粗略讲解
  8. 白话布隆过滤器BloomFilter
  9. MATLAB GUI 设全局变量的位置
  10. 计算机模拟水循环的过程,“SWAT主要作物水循环模拟方法详解”的学习及心得...
  11. javascript 判断为负数_JavaScript判断数字正负数
  12. 支付宝二维码可以抓包更改金额_支付宝到账铃声,金额可以随意改。
  13. 7、KSQL刨根问底和实战操作教程
  14. dd 命令用来测试硬盘读写速度
  15. 从程序员到项目经理(5):程序员加油站 -- 不是人人都懂的学习要点
  16. 微信公众号用户授权登录逻辑
  17. python元组拆包
  18. 【2022ROS系统melodic版本安装试错】
  19. mysql c dll_libmysql_c.dll,下载,简介,描述,修复,等相关问题一站搞定_DLL之家
  20. codeforces 1100D-Dasha and Chess

热门文章

  1. 计算机辅导资料,计算机基础辅导资料.doc
  2. 【java】窗口控件及字符串和异常的综合应用
  3. AI学习笔记(十五)自然语言处理基本概念
  4. 本周测试服务器角色转移系统仅开放转入,梦幻西游10月8日更新内容一览
  5. ssms 缺少索引信息_搜索引擎整合营销
  6. mysql 格式化 小数点后两位_MYSQL数据库mysql格式化小数保留小数点后两位(小数点格式化)...
  7. html 前端传入后台为object_浅谈Object.defineProperty()
  8. loss函数之MarginRankingLoss
  9. hdfs读写流程_必须掌握的分布式文件存储系统—HDFS
  10. LTE学习:CCE(2)