牛客白月赛3 题解

Posted 辉小歌

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了牛客白月赛3 题解相关的知识,希望对你有一定的参考价值。

感觉这次的挺难的,很多不会的。
还得加训啊。
https://ac.nowcoder.com/acm/contest/87#question

目录

音标【模拟】


模拟,暴力枚举就好了。

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int n,m,t;
int a[N];
int main(void)
 
	string s; 
    a['a'-'a']=1,a['e'-'a']=1,a['i'-'a']=1,a['o'-'a']=1,a['u'-'a']=1,a['y'-'a']=1;
    while(cin>>s)
    
	   for(int i=0;i<s.size();i++)
	   
		  for(int j=s[i]-'a';j>=0;j--)
		  
			 if(a[j])
			 
				    printf("%c",'a'+j);
				    break;
			 
		  
	   
       puts("");
    
	return 0;

躲藏【计数类DP】


f[i][j] 表示前i个 匹配前j个字符 出现的次数和

#include<bits/stdc++.h>
using namespace std;
const int N=1e5*2+10;
const long long int mod=2000120420010122;
typedef long long int LL;
LL f[N][4];
char s[N];
int main(void)

	while(cin>>s+1)
	
		int n=strlen(s+1);
		for(int i=1;i<=n;i++)
		
			s[i]=tolower(s[i]);
			f[i][1]=(f[i-1][1]+(s[i]=='c'))%mod;
			f[i][2]=(f[i-1][2]+(s[i]=='w')*f[i][1])%mod;
			f[i][3]=(f[i-1][3]+(s[i]=='b')*f[i][2])%mod;
			f[i][4]=(f[i-1][4]+(s[i]=='c')*f[i][3])%mod;
		
		cout<<f[n][4]<<endl;
	
	return 0;

以上是关于牛客白月赛3 题解的主要内容,如果未能解决你的问题,请参考以下文章

牛客白月赛8题解

牛客白月赛4 题解

牛客白月赛11题解

牛客白月赛12题解

牛客白月赛14题解

牛客白月赛32题解