2021辽宁省大学生程序设计竞赛(热身赛)完结
Posted 辉小歌
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2021辽宁省大学生程序设计竞赛(热身赛)完结相关的知识,希望对你有一定的参考价值。
为马上要来的ccpc省赛做准备,打一下其他省的热身赛玩玩
A: a+b+c【签到】
https://ac.nowcoder.com/acm/contest/22351/A
#include<bits/stdc++.h>
using namespace std;
int main(void)
{
int t; cin>>t;
while(t--)
{
long long int a,b,c; cin>>a>>b>>c;
cout<<a+b+c<<endl;
}
}
B: 辽宁的记忆【签到】
https://ac.nowcoder.com/acm/contest/22351/B
#include<bits/stdc++.h>
using namespace std;
int main(void)
{
int t; cin>>t;
while(t--)
{
long long int a; cin>>a;
cout<<a+1946<<endl;
}
}
C: 爱书人的资料查询【KMP】
https://ac.nowcoder.com/acm/contest/22351#question
本想直接暴力,加O2等优化看可不可以莽过去。后来不行,那直接KMP板子走一波。
#include<bits/stdc++.h>
using namespace std;
int t,n;
string s[50],w;
long long int solve()
{
for(int i=0;i<n;i++) s[i]="*"+s[i];
w="*"+w;//让其下标从1开始,便于写
long long int ans=0;
for(int k=0;k<n;k++)
{
string a=s[k];
string b=w;
int ne[50]={0};
int len1=a.size()-1;
int len2=b.size()-1;
for(int i=2,j=0;i<=len1;i++)
{
while(j&&a[i]!=a[j+1]) j=ne[j];
if(a[i]==a[j+1]) j++;
ne[i]=j;
}
for(int i=1,j=0;i<=len2;i++)
{
while(j&&b[i]!=a[j+1]) j=ne[j];
if(b[i]==a[j+1]) j++;
if(j==len1)
{
ans++;
j=ne[j];
}
}
}
return ans;
}
int main(void)
{
cin>>t;
while(t--)
{
scanf("%d",&n);
for(int i=0;i<n;i++) cin>>s[i];
cin>>w;
long long int cnt=solve();
printf("%d\\n",cnt);
}
return 0;
}
D: 巧克力蛋糕【签到】
https://ac.nowcoder.com/acm/contest/22351/D
任意俩条边交一个点。故
C
n
2
C_n^2
Cn2种可能
#include<bits/stdc++.h>
using namespace std;
int main(void)
{
int t; cin>>t;
while(t--)
{
long long int n; cin>>n;
cout<<n*(n-1)/2<<endl;
}
}
E:香辣牛肉面【数论】
https://ac.nowcoder.com/acm/contest/22351/E
详细的题解
通过分析你会发现它本质求的一个[1,n]所有数的约数个数之和的问题
O(n)的做法 过不去得加速
#include<iostream>
using namespace std;
int main()
{
int n,cnt=0;
cin>>n;
for(int i=1;i<=n;i++)//[1,n]中的所有数含有约数i的有n/i个(向下取整)
cnt+=n/i;
cout<<cnt<<endl;
return 0;
}
加速法:(O(开根号n))可以过
#include<bits/stdc++.h>
using namespace std;
typedef long long int LL;
int main()
{
int t; cin>>t;
while(t--)
{
LL n,ans=0;
scanf("%lld",&n);
for(LL i=1,j;i<=n;i=j+1)//节约时间
{
j=n/(n/i);
ans+=(n/i)*(j-i+1);
}
printf("%lld\\n",ans);
}
return 0;
}
以上是关于2021辽宁省大学生程序设计竞赛(热身赛)完结的主要内容,如果未能解决你的问题,请参考以下文章
2021年中国大学生程序设计竞赛 女生专场 - 热身赛 Problem C. 口算训练(质因子分解)
2021年中国大学生程序设计竞赛 女生专场 - 热身赛 Problem C. 口算训练(质因子分解)