ABC297 CDE 题解 -fangyanli

fangyanli 2023-08-17 14:35:47 1

C题

题意:给你一个二维的字符矩阵,如果在同一行上出现,将其更改为 ,输出最终的矩阵

思路:按照题意直接替换

代码

#include<bits/stdc++.h>
using namespace std;
string s[100001];
int n,w;
int main(){
	cin>>n>>w;
	for(int i=1;i<=n;i++){
		cin>>s[i];
	}
	for(int i=1;i<=n;i++){
		for(int j=0;j<w-1;j++){
			if(s[i][j]=='T'&&s[i][j+1]=='T'){
				s[i][j]='P';
				s[i][j+1]='C';
			}
		}
	}
	for(int i=1;i<=n;i++){
		cout<<s[i]<<endl;
	}
}

D题

题意:有,两数,进行如下操作

思路:辗转相除法

代码

马蜂最好的一次
#include<bits/stdc++.h>
#define end ;
#define l (
#define r )
#define mod %
#define is =
#define add +
#define div /
#define off -
#define Left_arrow >>
#define int long long
using namespace std end
int n,m,ans end
signed main l r {
	cin Left_arrow n Left_arrow m end
	if l n>m r swap l n,m r end
	while l m mod n r {
		ans is ans add m div n end
		m is m mod n end
		swap l n,m r end
	}
	cout<<ans add l m off n r div n end
}

E题

题意:有 个数在数组 中,这些大小为 A 个整数各有无限个,请求出将这些数任意组合后所得和的第 小值

思路:使用set,每次用最小值加上A中的每个数后再塞回去,执行次后的最小值就是答案

代码

#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,k,a[1000001];
set<int> s;
signed main(){
	ios::sync_with_stdio(0);
	cin.tie(0);cout.tie(0);
    cin>>n>>k;
    for(int i=1;i<=n;i++){
    	cin>>a[i];
    	s.insert(a[i]);
	}
	k--;
	while(k--){
		int h=*s.begin();
		s.erase(s.begin());
		for(int i=1;i<=n;i++){
			s.insert(h+a[i]);
		}
	}
	cout<<*s.begin();
}
{{ vote && vote.total.up }}