2021CCPC网络赛重赛-题解
Posted iuk11
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2021CCPC网络赛重赛-题解相关的知识,希望对你有一定的参考价值。
(自己可能真的是个废物,理不出逻辑,错在小细节,不敢开新题,新题更没把握)
难过周末。
1004
题意:
定义一个函数
f
(
x
)
=
k
f(x)=k
f(x)=k,k是第一个大于x的质数。
然后给定x的值,问
(
f
(
x
)
+
f
(
f
(
x
)
)
)
/
2
(f(x)+f(f(x)))/2
(f(x)+f(f(x)))/2下取整的结果是不是质数,如果是质数就输出YES
,否则输出NO
因为f(x)
与f(f(x))
均为质数,且为相邻的两个质数,除2外所有的质数均为奇数,且除了x=1
时得到的值为2 3
,其它情况下均可以得到两个不连续的质数,那么加和除以二的结果一定在这两个质数中间,两质数中间的数均为合数,且结果向下取整一定为整数,所有只要不是2 3
一组的质数,其它相邻两个质数和除以二的结果一定为合数。
#include<iostream>
#include<algorithm>
#include<string>
#include<cstring>
using namespace std;
int main(){
ios::sync_with_stdio(false);
int t;
long long x;
cin>>t;
while(t--){
cin>>x;
if(x==1) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
return 0;
}
1006
题意就是:
前缀为nunhehheh,后缀为若干个a(不包括0个),给定一个字符串,问有多少个满足条件的子序列。
分析:
先倒序维护一个在当前位置a有多少个的数组。
再动态维护出一个
d
p
[
i
]
[
j
]
dp[i][j]
dp[i][j],表示在第i位以第j个操作数 结尾的子序列个数。
o
p
p
=
"
@
n
u
n
h
e
h
h
e
h
"
opp="@nunhehheh"
opp="@nunhehheh",第一位空出,防止
i
=
0
i=0
i=0时数组越界。
每次在第i位上记录(该位满足的a的组合数,乘以,该位有多少个满足前缀要求的子序列)
设n为当前位后面的a的数量:
C
n
1
+
C
n
2
+
.
.
.
+
C
n
n
=
2
n
−
1
C_{n}^{1}+C_{n}^{2}+...+C_{n}^{n}=2^n-1
Cn1+Cn2+...+Cnn=2n−1
#include<iostream>
#include<algorithm>
#include<string>
#include<cstring>
using namespace std;
const int mod=998244353;
const int N=1e5+100;
typedef long long ll;
ll nua[N];
ll dp[12];
string opp="@nunhehheh";
ll qpow(int a,int b){
ll res=1;
while(b){
if(b&1) res=res*a%mod;
a=1LL*a*a%mod;
b>>=1;
}
return res;
}
int main(){
ios::sync_with_stdio(false);
int t;
cin>>t;
while(t--){
memset(nua,0,sizeof(nua));
memset(dp,0,sizeof(dp));
string str;
cin>>str;
int n=str.size();
str="@"+str;
for(int i=n;i>=1;i--){
nua[i]=nua[i+1]+(str[i]=='a');
}
ll ans=0,temp=0;
for(int i=1;i<=n;i++){
for(int j=9;j>=2;j--){
dp[j]=(dp[j]+(str[i]==opp[j])*dp[j-1])%mod;
}
dp[1]=(dp[1]+(str[i]==opp[1]))%mod;;
ans=(ans+(dp[9]-temp+mod)%mod*(qpow(2,nua[i])-1+mod)%mod)%mod;
temp=dp[9]%mod;
}
cout<<ans<<endl;
}
return 0;
}
以上是关于2021CCPC网络赛重赛-题解的主要内容,如果未能解决你的问题,请参考以下文章
CCPC网络赛2021中国大学生程序设计竞赛(CCPC)- 网络选拔赛(重赛) 签到题5题
2021中国大学生程序设计竞赛(CCPC)- 网络选拔赛(重赛) Jumping Monkey(并查集,逆向考虑)