SMU Summer 2024 Contest Round 5

1.Robot Takahashi

原题链接:

http://162.14.124.219/contest/1009/problem/A

将体重从小到大排序,再正序计算0的个数的前缀和,倒序计算1的个数后缀和,遍历X的位置找出最大值,注意如果相邻两体重不相同再计数

查看代码

#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,m,sx,sy,fx,fy;
struct node{
    int p;
    int q;
}a[1000000];
int q0[1000000],h1[1000000];
string s;
bool cmp(node x,node y)
{
    return x.p<y.p;
}
signed main()
{
    cin>>n;
    cin>>s;
    int res=1;
    for(int i=1;i<=n;i++) {
        cin >> a[i].p;
        a[i].q=s[i-1]-'0';
    }
    sort(a+1,a+n+1,cmp);
    for(int i=1;i<=n;i++)
    {
        q0[i]=q0[i-1]+(a[i].q==0?1:0);
    }
    for(int i=n;i>=1;i--)
    {
        h1[i]=h1[i+1]+(a[i].q==1?1:0);
    }
    int ma=0;
    for(int i=0;i<=n;i++)
    {
        if(a[i].p!=a[i+1].p)
        ma=max(q0[i]+h1[i+1],ma);
    }
    cout<<ma;
    return 0;
}

2.Connect 6

原题链接:

http://162.14.124.219/contest/1009/problem/B

在每个点遍历4个方向的6个位置,判断其中是否存在少于等于2个空白点,只要存在一个符合条件的就输出Yes

查看代码
 #include<bits/stdc++.h>
using namespace std;
int n,m;
int dx[4]={0,1,1,-1},dy[4]={1,0,1,1};
signed main(){
    cin>>n;
    vector<string> s(n);
    for(int i=0;i<n;i++)
    {
        cin>>s[i];
    }
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<n;j++)
        {
            for(int k=0;k<4;k++)
            {
                int x=i,y=j;
                int biao=0;
                for(int g=0;g<6;g++)
                {
                    if (x >= n || x < 0 || y >= n || y < 0)
                    {
                        biao =999;
                        break;
                    }
                    if(s[x][y]=='.')biao++;
                    x+=dx[k],y+=dy[k];
                }
                if(biao<=2)
                {
                    cout<<"Yes"<<endl;
                    return 0;
                }
            }
        }
    }
    cout<<"No"<<endl;
    return 0;
}
posted @ 2024-07-19 14:40  伊芙加登  阅读(6)  评论(0编辑  收藏  举报