Shockers (思维+模拟)

VLOOKUP_fixed.py 立即下载

Shockers

Valentin participates in a show called "Shockers". The rules are quite easy: jury selects one letter which Valentin doesn't know. He should make a small speech, but every time he pronounces a word that contains the selected letter, he receives an electric shock. He can make guesses which letter is selected, but for each incorrect guess he receives an electric shock too. The show ends when Valentin guesses the selected letter correctly.

Valentin can't keep in mind everything, so he could guess the selected letter much later than it can be uniquely determined and get excessive electric shocks. Excessive electric shocks are those which Valentin got after the moment the selected letter can be uniquely determined. You should find out the number of excessive electric shocks.


Input

The first line contains a single integer n (1 ≤ n ≤ 105) — the number of actions Valentin did.

The next n lines contain descriptions of his actions, each line contains description of one action. Each action can be of one of three types:

  1. Valentin pronounced some word and didn't get an electric shock. This action is described by the string ". w" (without quotes), in which "." is a dot (ASCII-code 46), and w is the word that Valentin said.
  2. Valentin pronounced some word and got an electric shock. This action is described by the string "! w" (without quotes), in which "!" is an exclamation mark (ASCII-code 33), and w is the word that Valentin said.
  3. Valentin made a guess about the selected letter. This action is described by the string "? s" (without quotes), in which "?" is a question mark (ASCII-code 63), and s is the guess — a lowercase English letter.

All words consist only of lowercase English letters. The total length of all words does not exceed 105.

It is guaranteed that last action is a guess about the selected letter. Also, it is guaranteed that Valentin didn't make correct guesses about the selected letter before the last action. Moreover, it's guaranteed that if Valentin got an electric shock after pronouncing some word, then it contains the selected letter; and also if Valentin didn't get an electric shock after pronouncing some word, then it does not contain the selected letter.

Output

Output a single integer — the number of electric shocks that Valentin could have avoided if he had told the selected letter just after it became uniquely determined.

Examples
Input
5
! abc
. ad
. b
! cd
? c
Output
1
Input
8
! hello
! codeforces
? c
. o
? d
? h
. l
? e
Output
2
Input
7
! ababahalamaha
? a
? b
? a
? b
? a
? h
Output
0
Note

In the first test case after the first action it becomes clear that the selected letter is one of the following: a, b, c. After the second action we can note that the selected letter is not a. Valentin tells word "b" and doesn't get a shock. After that it is clear that the selected letter is c, but Valentin pronounces the word cd and gets an excessive electric shock.

In the second test case after the first two electric shocks we understand that the selected letter is e or o. Valentin tries some words consisting of these letters and after the second word it's clear that the selected letter is e, but Valentin makes 3 more actions before he makes a correct hypothesis.

In the third example the selected letter can be uniquely determined only when Valentin guesses it, so he didn't get excessive electric shocks.

根据所给的情况,选手要猜出所给的字母。
“. word”:选手说出的单词中不包含该字母
“! word”:选手说出的单词中包含该字母
“? letter”:选手猜了某一个字母,这个行为只在最后一次是正确的
在最后一次之前,每有一个‘!‘或‘?‘,选手都会被电一次。在某个时刻起,答案就唯一确定了,问从那个时刻起到最后,选手被电了多少次?

思路:如果一串字符被电击了,那么这一串中一定包含那个被选中的字母,我们并不好判断,但是可以肯定的是除去这一字符串中所包含的字母全是未被选中,我们通过标记未被选中的字母,最终看啥时候未被选中的字母我们已经标记了25个说明我们找出了那个被选中的,在这之后的感叹号和问号(猜的未被选中的字符)都是多余出来的电击

code:

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int maxn = 1e5+10;
char s[maxn];
int safe[30],nowsafe[30];
int main(){
    int n,i,j,flag = 0,ans = 0;
    char c;
    cin >> n;
    while(n--){
        cin >> c >> s;
        int len = strlen(s);
        if(c == '!'){
            if(flag == 1) ans++;//flag=1说明已经确定了字母,再电击就是多余的
            else{//如果还没判断出来
                fill(nowsafe,nowsafe+26,1);//假设全部安全
                for(i = 0; i < len; i++){
                    nowsafe[s[i]-'a'] = 0;
                }//因为还无法判断,就把这一串中包含的字母都不安全
                for(i = 0; i < 26; i++){
                    if(nowsafe[i] == 1)
                        safe[i] = 1;//因为只有一个被选中的字母,所以除了被电击的字符串中的字母其他字母一定不是被选中的也就是安全的
                }
             }
        }
        else if(c == '.'){
            for(int i = 0; i < len; i++){
                safe[s[i]-'a'] = 1;//没有电击的字符串中的字母一定都是没被选中的所以都是安全的
            }
        }
        else{//问号
            if(flag == 1 && safe[s[0]-'a'] == 1)
                ans++;//如果已经确定了被选中字母,并且猜的不是被选中的,得到的电击是多余的
            safe[s[0]-'a'] = 1;//因为除了最后一个问号,前面猜测全不对,所以把它设为安全
        }
        int num = 0;
        for(int i = 0; i < 26; i++){
            if(safe[i] == 1) num++;
        }
        if(num == 25) flag = 1;
    }
    cout << ans << endl;
    return 0;
}


MATLAB实现了UR5机械臂在可变有效载荷条件下的增益调度稳健滑动模式轨迹跟踪控制。.zip 1.版本:matlab2014a/2019b/2024b 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 立即下载

相关推荐

agent-browser(Rust)

「agent-browser(Rust)」是开发工具/插件(Rust)。项目简介:Browser automation CLI for AI agents可直接使用,适合日常开发提效与学习借鉴。

Codeforces Round #454 - Div. 1 - (A)

A. Shockers time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output Valentin participates in a show called "Shocker

Orz 390

用C#实现面向对象编程之继承和多态概念的示例程序

这是文章《面向对象编程之继承和多态》的配套示例程序。在学习面向对象编程时都学习到三个概念:封装、继承、多态。封装已经讲解过,可以翻一下本博客的发表记录。所谓的继承,就是父类已经实现的属性、方法等,子类也跟着有,无需重复实现。所谓的多态,就是父类只定义的属性、方法等的名称、数据类型、参数,具体由子类实现。

【codeforces907C - Shockers】模拟

Valentin participates in a show called “Shockers”. The rules are quite easy: jury selects one letter which Valentin doesn’t know. He should make a small speech, but every time he pronounces a word that

Lesroad 531

ScreenInk 0.0.1.exe

ScreenInk 0.0.1.exe

外盘期货历史高频tick数据涵盖CME、ICE等交易所的主要品种,包含能源、贵金属、农产品、股指和外汇期货 数据字段有交易日期、精确到毫秒的时间、成交价格、成交量、持仓量以及买卖方向标识 部分品种还提

外盘期货历史高频tick数据涵盖CME、ICE等交易所的主要品种,包含能源、贵金属、农产品、股指和外汇期货。数据字段有交易日期、精确到毫秒的时间、成交价格、成交量、持仓量以及买卖方向标识。部分品种还提供盘口五档或十档挂单数据。所有数据按交易日压缩打包,解压后为CSV格式,便于直接读取分析。 数据源:CMES金融数据库

906A - Shockers

题意:题意不是很好懂,一个人参加演讲活动,每次说出一句话,最后找出那个非法字符,如果说的话里有非法字符,就要遭受电击,如果确定了那个非法字符,然后猜了其他字母也要电击。!代表说的话里有非法字母,.代表说的话里没有非法子母,?代表每次猜的字母,每次猜一个。让我们求出这个人遭受的电击。 题解: 模拟,就是思路一定要清晰,在某个时刻一定能够唯一确定那个非法字母,不然会晕的。花了很多时间,才彻底弄懂的。

memory_qianxiao的博客 475

三相PWM整流器双闭环控制仿真模型(Simulink仿真实现)

内容概要:本文详细介绍了三相PWM整流器双闭环控制的Simulink仿真模型,重点实现电压外环与电流内环的协同控制策略,通过仿真验证系统在稳态与动态工况下的运行性能。模型涵盖主电路拓扑结构、PWM调制技术、坐标变换(如abc/dq变换)、PI控制器设计及双闭环控制逻辑的实现,能够实现单位功率因数运行、直流侧电压稳定控制以及网侧电流正弦化等目标。同时,文档进一步拓展至VOC(虚拟同步发电机控制)与SVPWM调制相结合的高级控制策略,提升了系统的动态响应能力与控制灵活性。; 适合人群:具备电力电子技术与电力系统基础知识,熟悉Simulink仿真环境的电气工程及相关专业的本科生、研究生、科研人员及工程技术人员。; 使用场景及目标:①深入理解三相PWM整流器的工作原理及其双闭环控制策略的设计方法;②掌握基于Simulink的电力电子系统建模、仿真与控制系统调试技术;③为后续研究电压源换流器(VSC)、虚拟同步控制(VOC)、微电网并网控制等先进电力电子控制技术奠定理论与实践基础。; 阅读建议:建议结合经典电力电子教材与本仿真模型同步学习,重点关注PI控制器参数整定、坐标变换模块的搭建逻辑以及系统稳定性分析方法,有条件者可进一步将仿真结果对接实际硬件平台进行实验验证,以深化对控制策略工程应用的理解。

cf 906A Shockers

一 原题 C. Shockers time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output Valentin participates in a show calle

max_kibble的博客 378

基于蚁群算法的多配送中心的车辆调度问题的研究(Matlab代码实现)

内容概要:本文聚焦于基于蚁群算法的多配送中心车辆调度问题,通过构建数学模型将复杂的物流路径规划问题转化为可计算的组合优化问题,并采用仿生智能优化算法——蚁群算法进行求解,旨在实现配送路径的最优配置,从而降低运输成本、提升配送效率。研究利用Matlab平台完成了算法的设计、实现与仿真验证,详细阐述了算法的关键参数设置、信息素更新机制、路径构造过程及收敛性分析,并结合具体算例证明了该方法在解决多配送中心车辆路径问题上的有效性与实用性。同时,文档还展示了智能优化算法在物流调度、路径规划等领域的广泛应用前景,提供了丰富的科研方向和技术拓展参考。; 适合人群:具备一定Matlab编程能力,从事运筹优化、智能算法研究或物流系统设计的研究生及科研人员;对车辆路径问题(VRP)及其多中心、多车型等变体问题有研究兴趣的高年级本科生或工程技术人员。; 使用场景及目标:①解决实际物流系统中多配送中心环境下的车辆调度优化问题;②深入理解并掌握蚁群算法在NP-hard类组合优化问题中的建模思路与编程实现技巧;③为毕业论文、科研项目或工程实践提供可复用的算法框架与代码基础;④推动智能优化算法在智慧物流、城市配送等实际场景中的应用落地。; 阅读建议:建议读者结合文中提供的网盘资源(如完整代码、测试数据集)动手复现算法过程,对比不同参数对收敛性能的影响,并尝试将该算法拓展至带时间窗(VRPTW)、多车型或多目标等更复杂的调度场景中,以深化对智能优化机制的理解与应用能力。

【3D应力敏感度分析拓扑优化】【基于p-范数全局应力衡量的3D敏感度分析】基于伴随方法的有限元分析和p-范数应力敏感度分析(Matlab代码实现)

内容概要:本文围绕“基于p-范数全局应力衡量的3D应力敏感度分析”展开,系统介绍了结合伴随方法的有限元分析与p-范数应力敏感度分析的Matlab代码实现。该方法旨在解决传统拓扑优化中局部应力集中难以有效处理的问题,通过引入p-范数将多个局部应力约束聚合为一个光滑、可微的全局应力指标,从而在优化过程中实现对整体结构应力水平的有效控制。文中详细阐述了三维有限元建模流程、基于伴随法的敏度推导过程及其数学原理,并提供了模块化、可读性强的Matlab实现代码,支持对复杂三维结构进行高性能的拓扑优化设计,兼顾结构轻量化与强度可靠性。; 适合人群:具备有限元分析基础、结构力学知识、优化算法理论及Matlab编程能力的研究生、科研人员和工程技术人员,特别适用于从事航空航天、机械制造、土木工程等领域结构优化与强度设计的相关从业者。; 使用场景及目标:①解决传统拓扑优化中因忽略局部应力而导致结构失效的风险,提升设计方案的安全性;②应用于高端装备、飞行器、汽车零部件等对重量与强度均有严苛要求的轻量化设计场景;③通过提供的Matlab代码快速验证算法有效性,支持科研复现、教学演示以及工程原型开发。; 其他说明:所提供的Matlab代码结构清晰、注释详尽,便于理解与二次开发,建议使用者结合具体工程案例进行参数调优,尤其应注意p-范数中p值的选择对优化结果的影响——过大会导致数值不稳定,过小则削弱全局化效果,需在精度与稳定性之间取得平衡。

Codeforces 906A Shockers (模拟)

  A. Shockers time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output Valentin participates in a show called "Shockers". The rules are q...

知与谁i的博客 655

【顶级EI复现】基于KKT条件与分段解析优化的双有源桥DC-DC变换器软开关协同最小应力闭环控制方法(Simulink仿真实现)

内容概要:本文围绕“基于KKT条件与分段解析优化的双有源桥DC-DC变换器软开关协同最小应力闭环控制方法”展开,结合Simulink仿真实现,深入研究了双有源桥(DAB)变换器在扩展移相(EPS)调制策略下的高效运行机制。通过引入KKT最优性条件建立数学模型,对功率传输过程中的电压与电流应力进行分段解析优化,实现了软开关条件下的最小化器件应力控制。文章系统阐述了闭环控制系统的设计架构,涵盖状态反馈、相位调节策略及动态响应优化等关键技术,并在宽电压输入范围内验证了该方法在降低开关损耗、提升能量转换效率和增强系统稳定性方面的显著优势,属于电力电子领域高水平(EI级别)研究成果的复现与深化。; 适合人群:具备电力电子、自动控制或电气工程等相关专业背景,熟悉Simulink仿真工具,正在从事新能源发电、电动汽车、电力变换器研发工作的研究生、科研人员及工程技术人员。; 使用场景及目标:① 掌握双有源桥变换器的工作原理及其在EPS调制下的控制特性;② 学习如何应用KKT条件对非线性电力电子系统进行优化建模与求解;③ 理解软开关实现与最小应力控制的协同设计机制;④ 借助Simulink仿真平台复现并拓展高水平学术成果,提升科研创新能力与工程实践能力。; 阅读建议:建议读者结合所提供的Simulink仿真模型,逐步剖析控制逻辑与优化算法的实现细节,重点关注KKT条件的推导过程与分段解析策略的应用,同时可通过调整系统参数开展对比实验,深入理解DAB变换器在不同工况下的动态行为与优化性能。

Codeforces Round #454 Div. 2 A B C (暂时)

A. Masha and bears 题意 人的体积为\(V\),车的大小为\(size\),人能钻进车的条件是\(V\leq size\),人对车满意的条件是\(2V\geq size\). 现知道 熊爸爸能钻进最大的车并且满意 熊妈妈能钻进中等的车并且满意 熊宝宝能钻进最小的车并且满意 Masha能钻进最小的车并且只对它满意 给定四人的体积(保证\(V1\gt V2\gt V3\...

ahu12345678的博客 173

阻尼器磁流变阻尼器MR Damper非线性(阻尼、滞回)特性研究(Matlab代码实现)

内容概要:本文聚焦于磁流变阻尼器(MR Damper)的非线性动力学特性研究,重点针对其典型的阻尼力与滞回行为开展建模与仿真分析。通过建立能够准确描述其强非线性、迟滞特性的数学模型,并利用Matlab进行数值仿真,系统地再现了阻尼器在不同激励条件下的动态响应特性。研究不仅涵盖模型的理论构建,还包括仿真代码的实现与验证,旨在揭示磁流变阻尼器的核心工作机制,为其在振动抑制、半主动控制系统(如车辆悬架、建筑抗震)中的应用提供高精度的仿真依据与技术支持。; 适合人群:具备力学基础、自动控制理论知识及Matlab编程能力的研究生、科研人员及相关领域工程师,特别适用于从事智能材料器件建模、结构健康监测、车辆工程或振动控制等方向的技术研发人员; 使用场景及目标:①深入理解并复现磁流变阻尼器的非线性与滞回动力学行为;②支撑学位论文、科研项目中的仿真建模与结果验证环节;③为后续设计高性能控制器(如PID、模糊逻辑、滑模控制等)提供精确的被控对象模型基础; 阅读建议:建议结合所提供的Matlab代码逐模块调试与分析,重点关注模型参数变化对滞回曲线形态的影响,深入理解理论模型与仿真实现之间的对应关系,注重将建模过程与物理机制相结合,提升在智能材料系统建模与科研仿真方面的综合能力。

从单应矩阵到实际距离:Apriltag测距完整实现指南

本文提供了基于Apriltag实现高精度视觉测距与姿态估计的完整指南。详细阐述了从相机标定、单应矩阵分解到欧拉角与距离计算的完整流程,并深入探讨了四个解的歧义选择、工程实践中的滤波优化与多Tag融合等关键问题,旨在帮助开发者在机器人、AR等应用中实现稳定可靠的距离检测与姿态估计。

n7o8p的博客 558

Codeforces Round #454 (Div. 2, based on Technocup 2018 Elimination Round 4) A-C

这套题有史以来做的最恶心的一套题,没有之一; A题,讲的不明不白的。到底是区间还是这4个数,没有说明白, 交了7遍 全都是WA on test 4;因为一直认为就是这4个数里面选择 ,恶心, 实际要求是在区间里选定某个值; 暴力枚举!!!!!!! A: A. Masha and Bears time limit per test 2 seconds ...

weixin_30244889的博客 178

排除 AcroForm 中 JavaScript 脚本的 Bug

本文介绍了Acrobat JavaScript脚本故障排除的基本方法。首先应检查控制台窗口的错误报告,通过具体示例演示了5类常见错误:语法错误(如缺少大括号)、未终止字符串、未定义变量、运算符混淆及变量作用域问题,并逐步给出修复方案。文章还提供了调试流程UML图和实用经验总结,强调关注细节(如分隔符匹配)、正确使用运算符和变量作用域等要点。最后建议采用系统化调试方法,包括关闭/重新打开表单等完整性测试。

小猫三两只。 1500
上一篇: Hungry Student Problem (水题)
下一篇: Div. 64(简单暴力)
Guuuuuu老师儿
博客等级 码龄9年 259粉丝 718原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值