Logo 阿兹卡班的小天狼星的博客

博客

模拟赛ACD的AC方法

2023-05-03 11:34:31 By 阿兹卡班的小天狼星

比赛链接

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;
}

B我是70,F也是70,E看不懂。

评论

暂无评论

发表评论

可以用@mike来提到mike这个用户,mike会被高亮显示。如果你真的想打“@”这个字符,请用“@@”。