电子科技大学第十一届ACM趣味程序设计竞赛第三场(正式赛)题解

比赛地址acm.uestc.edu.cn/contest/59/summary

A题 Lutece 2331 双十一

取个最小值的和即可。

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int m,n,q;
    cin>>n>>m;
    int a[101];
    for(int i=0;i<n;++i)
        a[i] = 101;
    for(int i=0;i<m;++i)
    {
        for(int j=0;j<n;++j)
        {
            cin>>q;
            if(q!=-1)
                a[j]=min(a[j],q);
        }
    }
    int sum=0;
    for(int i=0;i<n;++i)
        sum += a[i];
    cout<<sum;
    return 0;
}

B题 Lutece 2346 我们身边的狼

这题猜的结论,我也不知道为什么。

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int a;
    cin>>a;
    if(a%2)
        cout<<"YES";
    else
        cout<<"NO";
    return 0;
}

C题 Lutece 2337 %%BlackRed·Z

一个数n,模的最大值显然n-1,所以只要找sum-n即可。

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int n,a,sum=0;
    cin>>n;
    for(int i=0;i<n;++i)
    {
        cin>>a;sum+=a;
    }
    cout<<sum-n<<endl;
    return 0;
}

D题 Lutece 2329 炉石传说

数据量太小,直接暴力,0次旋风斩到全用旋风斩。

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int n,x,y;
    int a[5000];
    cin>>n>>x>>y;
    for(int i=0;i<n;++i)
        cin>>a[i];
    int is = 1;
    int tot = 0;
    int res = 0;
    for(int i=0;i<n;++i)
    {
        res += (a[i]+y-1)/y;
    }
    while(is)
    {
        is=0;
        ++tot;
        int sum = tot;
        for(int i=0;i<n;++i)
        {
            if(a[i])
            {
                is = 1;
                a[i] = a[i]-x>0?a[i]-x:0;
                sum += (a[i]+y-1)/y;
            }
        }
        res = min(res,sum);
    }
    cout<<res<<endl;
    return 0;
}

E题 Lutece 2326 大地的裂变

暴力。把所有的整数点标出来,然后扫一下。

#include <bits/stdc++.h>
using namespace std;
int res[110][11111];
int main()
{
    int n;
    int k[10010],b[10010];
    int sum[10010];
    memset(sum,0,sizeof(sum));
    cin>>n;
    for(int i=0;i<n;++i)
    {
        cin>>k[i]>>b[i];
        for(int x=0;x<101;++x)
            ++res[x][x*k[i]+b[i]];
    }
    for(int i=0;i<110;++i)
    {
        for(int j=0;j<11111;++j)
        {
            ++sum[res[i][j]];
        }
    }
    for(int i=2;i<=n;++i)
        cout<<sum[i]<<" ";
    return 0;
}

最后

好久没打了,有点生疏了

发表评论

电子邮件地址不会被公开。 必填项已用*标注