比赛链接
A 最好的草
题目链接
这题标题好奇怪。
这题很简单,深搜。
但是一定要注意这点:每个草丛要么是单个“#”,要么是有公共边的相邻两个“#”。
说明一旦找到了就要break。
还有其他的亿些注意事项,平时都遇到了。
AC:
#include<iostream>
using namespace std;
int n,m,dx[4]={1,-1,0,0},dy[4]={0,0,-1,1};
char a[105][105];
void dfs(int x,int y){
a[x][y]='.';
for(int i=0;i<4;i++){
int xn=x+dx[i];
int yn=y+dy[i];
if(xn>=1&&yn>=1&&xn<=n&&yn<=m&&a[xn][yn]=='#'){
a[xn][yn]='.';
break;
}
}
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>a[i][j];
}
}
int sum=0;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(a[i][j]=='#'){
dfs(i,j);
sum++;
}
}
}
cout<<sum;
return 0;
}
C 水题大战(easy)
题目链接
这题的确很水
这题是简单题,没啥可说。
AC:
#include<iostream>
using namespace std;
int main(){
int t;
cin>>t;
for(int i=1;i<=t;i++){
int n;
cin>>n;
int a[n+1];
bool flag=true;
for(int i=1;i<=n;i++){
cin>>a[i];
if(a[i]==1){
flag=false;
}
}
if(flag){
cout<<"EASY"<<endl;
}else{
cout<<"HARD"<<endl;
}
}
return 0;
}
D 学生分组(group)
为啥每题都可以+1?(真这样的话,快做208200遍#15题)
这题是贪心+排序,每次都把sum+=a[i+1]-a[i]即可。
AC:
#include<iostream>
#include<algorithm>
using namespace std;
int main(){
int n;
cin>>n;
int a[n+1];
for(int i=1;i<=n;i++){
cin>>a[i];
}
sort(a+1,a+n+1);
int sum=0;
for(int i=1;i<=n;i+=2){
sum+=a[i+1]-a[i];
}
cout<<sum;
return 0;
}