AtCoder Beginner Contest 295

发布时间 2023-12-03 16:39:35作者: yufan1102

B - Bombs

题意:就是说有一种炸弹,能炸曼哈顿距离的障碍物,要你打印出炸完后的图

image

模拟

#include<bits/stdc++.h>
using namespace std;
char mp[50][50];
void solve(){
	int n,m;
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			cin>>mp[i][j];
		}
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			if(mp[i][j]!='.'&&mp[i][j]!='#'){
				char c=mp[i][j];
				mp[i][j]='.';
				int x=c-'0';
	            for(int a=1;a<=n;a++){
	            	for(int b=1;b<=m;b++){
	            	    if((abs(a-i)+abs(b-j))<=x){
	            	    	if(mp[a][b]=='#'){
	            	    		mp[a][b]='.';
							}
						}
					}
				}			
			}
		}
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			cout<<mp[i][j];
		}
		cout<<"\n";
	}
}
int main(){
	ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
	int t=1;
	//cin>>t;
	for(int i=1;i<=t;i++)solve();
	return 0;
} 

C - Socks

题意:有n个袜子,每个袜子有种类,我可以进行一次操作,把两个同种的袜子绑定,问你最多能进行多少次操作?

#include<bits/stdc++.h>
using namespace std;
void solve(){
	map<int,int>mp;
	int n;
	cin>>n;
	for(int i=1;i<=n;i++){
		int x;
		cin>>x;
		mp[x]++;
	}
	int ans=0;
	for(auto c:mp){
		int x=c.second;
		ans+=x/2;
	}
	cout<<ans;
}
int main(){
	ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
	int t=1;
	//cin>>t;
	for(int i=1;i<=t;i++)solve();
	return 0;
}