红薯4-23 笔试第三题
一、题意,找出长度为n的所有只包含r,g,b三个字符的所有字符串的任意长度子串包含的rgb子序列的个数。
题解:枚举子串左右边界,别的地方随便填,找出本子串里随便填的时候,rgb子序列的个数。
#include <bits/stdc++.h>
using namespace std;
const int mod = 1e9 + 7;
const int N = 1005;
int f[N][N][3];
typedef long long LL;
LL qpow(LL x, LL y){
LL res=1;
while(y){
if(y&1)res*=x;
res%=mod;
x=x*x%mod;
y>>=1;
}
return res;
}
int main(){
int n; cin >> n;
if(n<=2){
cout<<0<<endl;
}else if(n==3){
cout<<1<<endl;
}else{
for(int i=1;i<=n;++i){
for(int j=i;j<=n;++j){
f[i][j][0]=(3ll*f[i][j-1][0]+qpow(3,j-i))%mod;
f[i][j][1]=(3ll*f[i][j-1][1]+f[i][j-1][0])%mod;
f[i][j][2]=(3ll*f[i][j-1][2]+f[i][j-1][1])%mod;
}
}
LL ans=0;
for(int i=1;i<=n;++i){
for(int j=i;j<=n;++j){
ans+=f[i][j][2]*qpow(3,n-(j-i+1));
ans%=mod;
}
}
cout<<ans<<endl;
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
2020-04-23 牛客练习赛60-D