首页 > 其他分享 >AtCoder Beginner Contest 342

AtCoder Beginner Contest 342

时间:2024-02-26 19:00:12浏览次数:28  
标签:std AtCoder Beginner map int cin long 342 define

AtCoder Beginner Contest 342

比赛链接

开学了,以后codeforces大概率只能补题了,但是atcoder还是可以做的

A - Yay!

思路

找出只出现一次的字符就可以

Code

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

void solve(){
	string s;
	cin>>s;
	std::map<char, int> mp;
	for(int i=0;i<s.size();i++){
		mp[s[i]]++;
	}
	for(auto x:mp){
		if(x.second==1){
			// cout<<x.first<<endl;
			// // return ;
			for(int i=0;i<s.size();i++){
				if(s[i]==x.first){
					cout<<i+1<<endl;
					return ;
					
				}
			}
			
		}
	}
}

signed main(){
	int t=1;
	while(t--) solve();
	return 0;

}

B - Which is ahead?

思路

简单,我们只需要用map映射一下他们的位置就可以了,最后按照题意进行查询即可

Code

#include<bits/stdc++.h>
using namespace std;
#define int long long 
#define all(x) x.begin()+1,x.end()


void solve(){
	int n;
	cin>>n;
	std::vector<int> a(n+1);
	std::map<int, int> mp;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		mp[a[i]]=i;
	}
	int q;
	cin>>q;
	while(q--){
		int x,y;
		cin>>x>>y;
		cout<<(mp[x]<mp[y]?x:y)<<endl;
	}
	return ;

}


signed main(){
	int t=1;
	while(t--) solve();
	return 0;

}

C - Many Replacement

思路

如果我们用map把原来的改成修改后的,这样做是不对的,因为我们会出现a-c-a这种情况是没办法改变的,要是每次遍历一遍字符串肯定会tle,但事实上小写英文的个数总共就26了,我们可以通过改这26给英文字母来进行修改

Code

#include<bits/stdc++.h>
using namespace std;
#define int long long 
#define all(x) x.begin()+1,x.end()
#define debug(x) cout<<"# "<<x<<" "

void solve(){
	int n;
	cin>>n;
	string s;
	cin>>s;
	int q;
	cin>>q;
	int f[26];
	for(int i=0;i<26;i++){
		f[i]=i;
	}

	while(q--){
		char x,y;
		cin>>x>>y;
		for(int i=0;i<26;i++){
			if(f[i]==x-'a'){
				f[i]=y-'a';
			}
		}
	}
	for(int i=0;i<n;i++){
		cout<<char('a'+f[s[i]-'a']);
	}
	return ;
	
}

signed main(){
	int t=1;
	while(t--) solve();
	return 0;

}

D - Square Pair

思路

我们可以记录一下每个数字抛去可以开方的因子最后需要与其他数字进行乘从而得到新的开方使之开方后是正整数的个数就可以,注意审题,i要小于j,所以是有顺序的

参考文章

Code


标签:std,AtCoder,Beginner,map,int,cin,long,342,define
From: https://www.cnblogs.com/du463/p/18033945

相关文章

  • AtCoder Beginner Contest 342
    D.SquarePair给你一个数组,最多2e5个元素,每个元素的范围是0到2e5问选出两个元素,乘积为完全平方数的情况有多少?(任选a[i]a[j],且满足i<j)一种思路是用map记录数组的元素,选出一个元素x后,枚举所有完全平方数,如果完全平方数可以整除选出的这个元素且整除的结果y在map......
  • Toyota Programming Contest 2024#2(AtCoder Beginner Contest 341)D - Only one of two
    目录链接题面题意题解代码总结链接D-Onlyoneoftwo题面题意求第\(k\)个只能被\(N\)或\(M\)整除的数题解\([1,x]\)中的能被\(n\)整除的数有\(\lfloor\frac{x}{n}\rfloor\)个\([1,x]\)中的能被\(m\)整除的数有\(\lfloor\frac{x}{m}\rfloor\)个\([1,x]\)中的能被\(n\)......
  • HUAWEI Programming Contest 2024(AtCoder Beginner Contest 342)
    HUAWEIProgrammingContest2024(AtCoderBeginnerContest342)A-Yay!代码:#include<bits/stdc++.h>usingnamespacestd;usingll=longlong;usingpii=pair<ll,ll>;#definefifirst#definesesecondusingi128=__int128_t;usingpiii=p......
  • Atcoder Beginner Contest 342 全题解
    A-Yay!题意给定字符串\(s\)已知该字符串中只有一个字符与其他字符不同求这个字符思想开一个数组\(cnt_i\)来记录\(s\)中每个字符出现的次数,一个数组\(first_i\)来记录\(s\)中每个字符第一次出现的下标。选择\(cnt_i=1\)的\(i\)输出\(first_i\)......
  • AtCoder Beginner Contest 342
    A-Yay!(abc342A)题目大意给定一个字符串,两个字符,其中一个只出现一次,找出它的下标。解题思路看第一个字符出现次数,如果是\(1\)则就是它,否则就是不是它的字符。神奇的代码#include<bits/stdc++.h>usingnamespacestd;usingLL=longlong;intmain(void){io......
  • At-abc342
    AtCoderBeginnerContest342(已更新:CD)C似曾相识的经典映射题……而只会map的蒟蒻成功又被卡住了简单的用map映射无法处理如r->a,a->r这样的多重映射,应该在先存下原本的信息,再作映射写到这突然悟了……再改改果然是没有悟一点(⊙﹏⊙),由于只处理26个字母,每次修改实时更......
  • ABC342总结
    ABC342总结A+B+C+D虽然有奖,但是一无所获,都排到2000名左右了。赛时快速通过前四题,但是第五题被题目迷惑,第六题思路混乱,第七题本来是能力范围之内(数据结构是chnoier的特长),但是没读题。E一个最短路,这是有提示的,但是有一个迷惑信息。题目让我们求从A最晚出发的时间能到达N,其......
  • Atcoder ABC 342 全题解
    闲话当我还是一个只会AB的小蒟蒻时,由于不会C又看不懂官方题解,只好看网上的题解。结果:ABC签到题不讲AB对着题意模拟即可。A有个好玩的做法,先看前两个,如果不同跟第三个比较,如果相同看后面哪个字母跟第一个不一样。C由于是将所有的$c_i$替换,所以可得同一个字母最......
  • AtCoder WTF 2019 B Multiple of Nine/南外集训 2024.2.23 T1
    给定\(q\)个区间\(\{[l_i,r_i]\}\),计算满足条件的长度为\(n\)的十进制数码串\(S\)的个数\(\bmod10^9+7\):\(\foralli\in[1,q],num(S[l_i,r_i])\equiv0\pmod9\)。其中\(num(T)\)表示数码串\(T\)代表的整数,\(T[a,b]\)表示子串\(T_aT_{a+1}\dotsT_b\)......
  • 山海经&&Atcoder Alternating String (线段树)
    前言:为什么把他们放在一起?因为我发现把pushup向上回溯放结构体类型函数里比较方便并且这两题确实也有相同思想山海经这题分三种情况左子树前缀和+右子树前缀和2.右子树后缀和与右总区间+左子树3.左区间最大子段与右区间最大子段与左后缀与右前缀特别要注意......