AtCoder Beginner Contest (ABC)394(ABCD)

news/2025/2/23 18:32:01

前言

很激动啊!!ABC第一次在限定的时间内写出四个题!!虽然离大佬们还差很多,中间走了不少弯路,但还是很激动啊!!加油加油!!每天进步一点点!!后面补完题也许会把剩下的发上来。

这一篇主要是总结当时比赛时的心路历程,解析可能不会写得太详细。

一、A - 22222

#include<bits/stdc++.h>
using namespace std;

typedef long long ll;

void solve()
{
	string s;
	cin>>s;
	for(int i=0;i<s.length();i++)
	{
		if(s[i]=='2')
		{
			cout<<2;
		}
	}
}

int main()
{
	solve();
	
	return 0;
}

 签到题,无需多言。枚举到2就输出即可。

二、B - cat

#include<bits/stdc++.h>
using namespace std;

typedef long long ll;

void solve()
{
	int n;
	cin>>n;
	string s;
	map<int,vector<string> >mp;
	for(int i=0;i<n;i++)
	{
		cin>>s;
		mp[s.length()].push_back(s);
	}
	
	string ans;
	for(map<int,vector<string> >::iterator iter=mp.begin();iter!=mp.end();iter++)
	{
		for(int i=0;i<iter->second.size();i++)
		{
			ans+=iter->second[i];
		}
	}
	cout<<ans;
}

int main()
{
	solve();
	
	return 0;
}

这个题当时是读完题脑子里就蹦出了可以用map的思路然后就直接写了,虽然感觉能优化。

就是用map来按长度排序,开个数组往长度对应下标存应该也行吧,题目好像说了长度都不相等。

三、C - Debug

#include<bits/stdc++.h>
using namespace std;

typedef long long ll;

void solve()
{
	string s;
	cin>>s;
	for(int i=0,j;i<s.length()-1;i++)
	{
		if(s[i]=='W'&&s[i+1]=='A')
		{
			s[i]='A';
			s[i+1]='C';
			j=i-1;
			while(j>=0&&s[j]=='W')
			{
				s[j]='A';
				s[j+1]='C';
				j--;
			}
		}
	}
	cout<<s;
}

int main()
{
	solve();
	
	return 0;
}

 这个题的思路就是顺序遍历,然后遇到WA就往前刷,就是纯暴力,不知道有没有别的办法。

四、D - Colorful Bracket Sequence

#include<bits/stdc++.h>
using namespace std;

typedef long long ll;

bool solve()
{
	string s;
	cin>>s;
	if(s.length()%2==1||s[0]==')'||s[0]==']'||s[0]=='>')
	{
		return false;
	}
	
	stack<int>stk;
	for(int i=0;i<s.length();)
	{
		stk.push(s[i++]);
		while((s[i]==')'&&stk.top()=='(')
            ||(s[i]==']'&&stk.top()=='[')
            ||(s[i]=='>'&&stk.top()=='<'))
		{
			stk.pop();
			i++;
		}
	}
	return stk.empty();
}

int main()
{
	cout<<(solve()?"Yes":"No");
	
	return 0;
}

 这个题就花了不少心思,但回过头来想根本没那么复杂。

一开始我的思路也是直接暴力,就是一个一个删过去,然后喜提超时。

第二个思路是考虑嵌套类问题用递归解,具体可见我的这篇文章嵌套类问题的递归及N皇后问题,先不说由于本人太菜,递归写了好久才写出来,结果还是超时。(已红温)

最后才想到可以使用栈结构来维护前括号,这样只需要遍历一遍即可。

总结

思路还是要打开啊!不能总是像D题一样一直怼着一个思路想,要首先分析算法的时间复杂度,这个技巧一定要练好。然后就是写不出来的时候不要急,一定要把心静下来!加油!会越来越好!

END


http://www.niftyadmin.cn/n/5863667.html

相关文章

在Linux上安装和使用Docker

在Linux上安装和使用Docker&#xff1a;一步步指南 Docker是一种流行的容器化平台&#xff0c;它可以帮助开发者轻松构建、部署和运行应用程序。在本文中&#xff0c;我们将介绍如何在Linux系统上安装Docker&#xff0c;并提供一些常用的Docker命令和使用说明。 1. 安装Docke…

深入剖析抽象工厂模式:设计模式中的架构利器

深入剖析抽象工厂模式&#xff1a;设计模式中的架构利器 在软件开发领域&#xff0c;设计模式是解决常见问题的通用方案&#xff0c;而抽象工厂模式作为创建型设计模式的重要一员&#xff0c;在构建复杂软件系统时发挥着关键作用。它为创建一系列相关或相互依赖的对象提供了一…

【Winform】深入理解C#中的异常处理:以WinForms应用程序为例

文章目录 前言一、示例背景二、异常处理分析三、异常处理的重要性结论 前言 在编程过程中&#xff0c;异常处理是一项至关重要的技能。它能够帮助我们优雅地处理运行时错误&#xff0c;从而增强程序的健壮性和用户体验。今天&#xff0c;我们将通过一个简单的WinForms应用程序…

uniapp h5端和app端 使用 turn.js

前提:添加页后,添加页与当前页会重叠在一起,不知道为什么,没有找到解决办法 1.h5端 <template><view class"container"><view id"flipbook"><view class"page page1">Page 1</view><view class"page pag…

【Blender】二、建模篇--06,曲线建模/父子级和蒙皮修改器

00:00:03,620 --> 00:00:09,500 前几节可能我们已经做了很多种类型的模型了 但是有一种类型 我们一直避开就是这种管道 1 00:00:10,050 --> 00:00:19,370 藤条头发啊 衣服架子啊这种弯弯绕绕的 需要一定柔软度的模型 那么这节课呢我们都来集中看一下曲线的模型 我们应该…

红帽7基于kickstart搭建PXE环境

Kickstart 文件是一种配置文件&#xff0c;用于定义 Linux 系统安装过程中的各种参数&#xff0c;如分区、网络配置、软件包选择等。system-config-kickstart 提供了一个图形界面&#xff0c;方便用户快速生成这些配置文件。 用户可以通过图形界面进行系统安装的详细配置&…

verilog笔记

Verilog学习笔记&#xff08;一&#xff09;入门和基础语法BY电棍233 由于某些不可抗拒的因素和各种的特殊原因&#xff0c;主要是因为我是微电子专业的&#xff0c;我需要去学习一门名为verilog的硬件解释语言&#xff0c;由于我是在某西部地区的神秘大学上学&#xff0c;这所…

网络运维学习笔记 019 HCIA-Datacom综合实验03

文章目录 综合实验3实验需求一&#xff1a;A公司网络规划二&#xff1a;B公司网络规划 配置一、ip、vlan、vlanif&#xff0c;stp、eth-trunkSW1SW2SW3R1 二、ospfSW1R1 三、NATR1ISP 四、拒绝ping允许httpSW1 五、右半部分vlan、dhcp、ospf、NATSW4R2 综合实验3 实验需求 一&…