AtCoder ABC348 A-D题解

比赛链接:ABC348

Problem A:

签到。

#include <bits/stdc++.h>
using namespace std;
int main(){
	int N;
	cin>>N;
	for(int i=1;i<=N;i++){
		if(i%3==0)
			cout<<'x'<<endl;
		else
			cout<<'o'<<endl;
	}
	return 0;
}

Problem B:

枚举即可。

#include <bits/stdc++.h>
using namespace std;
int X[maxn],Y[maxn];
int main(){
	int N;
	cin>>N;
	for(int i=0;i<N;i++)
		cin>>X[i]>>Y[i];
	for(int i=0;i<N;i++){
		int mx=0,ans=0;
		for(int j=0;j<N;j++){
			int dis=(X[i]-X[j])*(X[i]-X[j])+(Y[i]-Y[j])*(Y[i]-Y[j]);
			if(dis>mx){
				mx=dis;
				ans=j+1;
			}
		}
		cout<<ans<<endl;
	}
	return 0;
}

Problem C:

直接暴力开桶显然不可取,C_i\leq 10^9,所以用map记录。

#include <bits/stdc++.h>
using namespace std;
int A[maxn],C[maxn];
int main(){
	int N;
	cin>>N;
	map<int,int> beans;
	for(int i=1;i<=N;i++){
		cin>>A[i]>>C[i];
		if(beans.find(C[i])==beans.end())
			beans[C[i]]=INT_MAX;
		beans[C[i]]=min(beans[C[i]],A[i]);
	}
	int ans=-1;
	for(int i=1;i<=N;i++)
		ans=max(ans,beans[C[i]]);
	cout<<ans<<endl;
	return 0;
}

Problem D:

看起来有点唬人。

bfs即可。energy表示图上的能量值,cnt_{i,j}是走到{i,j}的能量。

#include <bits/stdc++.h>
using namespace std;
const int dx[]={0,0,-1,1};
const int dy[]={-1,1,0,0};
char A[MAX][MAX];
int energy[MAX][MAX],cnt[MAX][MAX];
int main(){
	int H,W;
	cin>>H>>W;
	for(int i=0;i<H;i++){
		for(int j=0;j<W;j++)
			cin>>A[i][j];
	}
	int N;
	cin>>N;
	for(int i=0;i<N;i++){
		int R,C,E;
		cin>>R>>C>>E;
		R--;
		C--;
		energy[R][C]=E;
	}
	memset(cnt,-1,sizeof(cnt));
	queue<pair<int,int>> que;
	for(int i=0;i<H;i++){
		for(int j=0;j<W;j++){
			if(A[i][j]=='S'){
				que.push(make_pair(i,j));
				cnt[i][j]=0;
			}
		}
	}
	while(!que.empty()){
		pair<int,int> u=que.front();
		que.pop();
		if(A[u.first][u.second]=='T'){
			cout<<"Yes"<<endl;
			return 0;
		}
		cnt[u.first][u.second]=max(cnt[u.first][u.second],energy[u.first][u.second]);
		for(int i=0;i<4;i++){
			int nx=u.first+dx[i];
			int ny=u.second+dy[i];
			if(0<=nx && nx<H && 0<=ny && ny<W && (cnt[u.first][u.second]-1)>cnt[nx][ny] && A[nx][ny]!='#'){
				cnt[nx][ny]=cnt[u.first][u.second]-1;
				que.push(make_pair(nx,ny));
			}
		}
	}
	cout<<"No"<<endl;
	return 0;
}

其实que可以写一个结构体。

好了,以上就是本期的全部内容了。我们下期再见!\(^o^)/~

友情提醒:本期的所有代码都有问题,请勿无脑Ctrl C+Ctrl V

  • 8
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值