首页 > 其他分享 >CF1907B YetnotherrokenKeoard 题解

CF1907B YetnotherrokenKeoard 题解

时间:2024-04-10 17:46:55浏览次数:27  
标签:fr 题解 ll YetnotherrokenKeoard CF1907B del qd qx include

比较简单,建议评橙。

题面

思路

对于每个给定的字符串,用两个大根堆来分别记录小写字母与大写字母,注意这里记录时不要记录大写的 B 和小写的 b

每当出现一个 B 时,从记录大写字母的大根堆中取出目前最后录入的大写字母的位置,标记,接着弹出堆顶元素,标记。小写字母同理。

以上操作在遍历一遍字符串的情况下可以实现。

最后再遍历一遍字符串,输出未打标记的字符即可。大写的 B 和小写的 b不要输出

代码

记得多测清空!!!!!!

#include<iostream>
#include<cstdio>
#include<string>
#include<ctime>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<stack>
#include<climits>
#include<queue>
#include<map>
#include<set>
#include<sstream>
#include<cassert>
#define ll long long
#define fr(i , a , b) for(ll i = a ; i <= b ; ++i)
#define fo(i , a , b) for(ll i = a ; i >= b ; --i)
using namespace std;
priority_queue <ll> qx;
priority_queue <ll> qd;
//priority_queue <ll , vector<ll> , greater<ll>> q;
ll T;
char s[1000006];
signed main()
{
	// freopen("in.in" , "r" , stdin);
	// freopen("out.out" , "w" , stdout);
	scanf("%lld" , &T);
	while(T--)
	{
		while(!qx.empty())
		{
			qx.pop();
		}
		while(!qd.empty())
		{
			qd.pop();
		}
		scanf("%s" , s + 1);
		ll len = strlen(s + 1);
		fr(i , 1 , len)
		{
			qx.push(-i);
			qd.push(-i);
			if(s[i] >= 'a' && s[i] <= 'z' && s[i] != 'b')
			{
				qx.push(i);
			}
			else if(s[i] >= 'A' && s[i] <= 'Z' && s[i] != 'B')
			{
				qd.push(i);
			}
			if(s[i] == 'b')
			{
				ll del = qx.top();
				qx.pop();
				if(del >= 0)
				{
					s[del] = '!';
				}
				s[i] = '!';
			}
			if(s[i] == 'B')
			{
				ll del = qd.top();
				qd.pop();
				if(del >= 0)
				{
					s[del] = '!';
				}
				s[i] = '!';
			}
		}
		fr(i , 1 , len)
		{
			if(s[i] == '!')
			{
				continue;
			}
			cout << s[i];
		}
		cout << '\n';
	}
	return 0;
}

标签:fr,题解,ll,YetnotherrokenKeoard,CF1907B,del,qd,qx,include
From: https://www.cnblogs.com/xhqdmmz/p/18126529

相关文章

  • CF1891B Deja Vu 题解
    建议凭橙,思路橙,码量红到橙。题面。思路一,暴力直接依照题意模拟,复杂度\(O(tqn^2)\),看一眼数据范围,妥妥T飞,倒在第三个点。二,逐步优化看一眼数据发现,虽然\(q\)很大,但实际上\(x\)只有三十个值,因此首先预处理出从\(2^1\)到\(2^{30}\)的所有值,摘掉一个\(n\),复杂度\(O......
  • P9750 [CSP-J 2023] 一元二次方程 题解
    题面。直接依照题意模拟即可,注意细节。细节第一注意输出分式时分母为\(1\)不输出,分子为\(0\)直接输出零且不带正负号。第二约分时,\(gcd\)内的两个数应该都是非负实数。第三可以单独输出符号,注意别有多余的符号。第四当方程有两根且均是有理数时,要根据\(2a\)的正......
  • CF1815A Ian and Array Sorting 题解
    题面。直接进入主题吧。思路题目要求非递减序列,很明显,由题目给的操作,一定可以将这个序列的前\(n-1\)项能够满足是非递减序列,最后只需要比较第\(n\)项是否大于等于第\(n-1\)项即可。解释一下为什么。对于序列\(a\),从\(a_1\)开始到\(a_{n-1}\)结束,每次对\(a_i\)......
  • CF1909C Heavy Intervals 题解
    一种似乎更快抽象的解法?题面正文看这道题,给定序列\(l,r,c\),要求重构\(l,r,c\)使得\(\sum_{i=1}^n(r_i-l_i)\timesc_i\)最小。首先可以想到的就是尽量让小的\(r_i-l_i\)乘上大的\(c_i\)。这样子看来\(c_i\)几乎不需要更多的处理,仅需从小到大(或从大到小)排个序。来......
  • GitHub问题解决新突破,复旦大学MAGIS框架大幅超越GPT-4
    获取本文论文,请关注公众号【AI论文解读】回复:&nbsp;论文解读引言:GitHub问题解决的挑战与LLMs的潜力在软件开发的演进过程中,解决GitHub仓库中出现的问题是一个复杂的挑战。这不仅涉及到新代码的加入,还要维护现有功能的稳定运行。大型语言模型(LLMs)在代码生成和理解方......
  • Air Conditioner 题解
    [AirConditioner]题意简述题目链接。给定一个整数\(n\),每秒钟可以选择使\(n\)增加\(1\)或减少\(1\)或不改变,有\(M\)个询问,对于第\(i\)个询问,给定\(t_i,l_i,r_i\),表示询问在第\(t_i\)秒时,是否有\(n\in[l_i,r_i]\)。如果能满足所有的询问,输出YES,否则输出NO。......
  • Codeforces-182E 题解
    Vasyahasrecentlyboughtsomelandanddecidedtosurrounditwithawoodenfence.Hewenttoacompanycalled"Woodenboard"thatproduceswoodenboardsforfences.Vasyareadinthecatalogofproductsthatthecompanyhasatitsdisposal\(......
  • 20240410每日一题题解
    20240410每日一题题解Problem一只小猴买了若干个桃子。第一天他刚好吃了这些桃子的一半,又贪嘴多吃了一个;接下来的每一天它都会吃剩余的桃子的一半外加一个。第\(n\)天早上起来一看,只剩下\(1\)个桃子了。请问小猴买了几个桃子?输入一个正整数\(n\),表示天数。输出小猴买了多......
  • 分享30个外贸常见的问题解答
    顶易四月海关众筹活动实时参与人数已达1835,剩余名额不多。33国海关数据仅需300,一年只卖一次,需要续费/新购请抓紧时间!1、客户:我不会再为这笔订单支付更多的费用,也不接受其他条款。外贸人:下周交货期如果你能找得到其他供货商的话,我们很乐意把生产了一半的货送到另外一个供货......
  • 启动应用程序出现ieui.dll找不到问题解决
    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个ieui.dll文件(挑选合适的版本文件)把它放入......