寒训测试一题解(题目来源:洛谷,atcoder,codeforces等)

文章详细介绍了AtCoderCards、PERKET、MergeSequences等编程题目及其解题思路,包括使用优先队列、暴力搜索和广搜算法。展示了相关代码片段,旨在帮助读者理解和解决类似问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

A - AtCoder Cards

B - PERKET

C - Merge Sequences

D - Call the ID Number

E - K Swap

F - 01迷宫

最后

本文主要目的是做记录🤪🌹

小伙伴们想搜的题目可能来自这里哦……

废话不多说,直入正题:

A - AtCoder Cards

思路:

&1:把不是atcoder的卡对比

&2:是的话比较两者卡牌    相差总@   即可

呵呵,值得一提的是:这个第一步(捂脸)

不知道有没有人和我一样加了这段代码:

加了这段代码会多wa两点,因为题目已经说了  “默认”第一步之后了(下图)

if(a[27]==0&&b[27]==0)//不能排序 
{
	for(i=0;str1[i]!='\0';i++)
	{
		if(str1[i]-str2[i]!=0) flag=0;
	}
}

 代码:

#include<iostream>
using namespace std;

char str1[200005],str2[200005];
int main()//a
{
	int i,flag=1,a[30]={0},b[30]={0};
	cin>>str1>>str2;
	for(i=0;str1[i]!='\0';i++)
	{
		if(str1[i]=='@') a[27]++;
		else a[str1[i]-'a']++;
		if(str2[i]=='@') b[27]++;
		else b[str2[i]-'a']++;
	}
 	for(i=0;i<26;i++)
    {
        if(a[i]!=b[i]&&i!=0&&i!=2&&i!=3&&i!=4&&i!=14&&i!=17&&i!=19) flag=0;
    }
	if((abs(a[0]-b[0])+abs(a[2]-b[2])+abs(a[3]-b[3])+abs(a[4]-b[4])+abs(a[14]-b[14])+abs(a[17]-b[17])+abs(a[19]-b[19]))>(a[27]+b[27])) flag=0;
	if(flag) cout<<"Yes";
	else cout<<"No";
	return 0;
}

B - PERKET

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值