abc251_a

题目翻译

有一个字符串,输出这个字符串交替的前 $6$ 位。

题目思路

判断长度。

AC 代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
    string s;
    cin>>s;
    if(s.size()==1)cout<<s<<s<<s<<s<<s<<s<<endl;
    if(s.size()==2)cout<<s<<s<<s<<endl;
    if(s.size()==3)cout<<s<<s<<endl;
    return 0;
}

abc251_b

题目翻译

有 $n$ 个数,最多选 $3$ 个,和正好凑到 $w$ 及以下的有几个。

题目思路

$n\leqslant 300$,枚举即可。

AC 代码

#include<bits/stdc++.h>
using namespace std;
bool b[3000001];
int main()
{
    int n,w;
    long long ans=0;
    cin>>n>>w;
    int a[n+1];
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
    }
    for(int i=1;i<=n;i++)
    {
        b[a[i]]=1;
    }
    for(int i=1;i<=n;i++)
    {
        for(int j=i+1;j<=n;j++)
        {
            b[a[i]+a[j]]=1;
        }
    }
    for(int i=1;i<=n;i++)
    {
        for(int j=i+1;j<=n;j++)
        {
            for(int k=j+1;k<=n;k++)
            {   
                b[a[i]+a[j]+a[k]]=1;
            }
        }
    }
    for(int i=1;i<=w;i++)
    {
        if(b[i]==1)ans++;
    }
    cout<<ans<<endl;
    return 0;
}

abc251_c

题目翻译

有个 OJ,每个人交了个内容为 $s_i$ 的代码,获得 $t_i$ 分数。后交的相同代码判为抄袭。

问没有抄袭的代码里,分数最高的是谁。

题目思路

用一个 set 存每个人的代码,如果插入后大小不变,就是前面有相同的,那么就不算分。否则,计算分数。

AC 代码

#include<bits/stdc++.h>
using namespace std;
set<string>s;
int main()
{
    int n,maxx=-1,ans=-1;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        string str;
        int score;
        cin>>str>>score;
        int sz=s.size();
        s.insert(str);
        if(s.size()!=sz)
        {
            if(score>maxx)
            {
                maxx=score;
                ans=i;
            }
        }
    }
    cout<<ans<<endl;
    return 0;
}

abc251_d

题目翻译

B 题题面相反,给出 $w$,问造一个数组,满足选三个正好是等于所有 $\leqslant w$ 的。

题目思路

这个 $w$ 最多 $7$ 位,但 $<w$ 只有 $6$ 位。

我们把这个数设为 $\overline{abcdef}$,然后分成 $\overline{ab}$、$\overline{cd}$、$\overline{ef}$。

每个都有 $99$ 种可能,加上 $10^6$,一共 $298$ 个。

AC 代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
    cout<<298<<endl;
    for(int i=1;i<=99;i++)
    {
        cout<<i<<" ";   
    }
    for(int i=1;i<=99;i++)
    {
        cout<<i*100<<" ";   
    }
    for(int i=1;i<=99;i++)
    {
        cout<<i*100*100<<" ";   
    }
    cout<<1000000<<endl;
    return 0;
}
最后修改:2023 年 04 月 20 日
v我50吃疯狂星期四