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