zoukankan      html  css  js  c++  java
  • Codeforces Round #597 (Div. 2) C dp


    设dpi为前面长度为i的字符串的所有可能组合,如果 s[i]==s[i-1]并且s[i]∈{u,n}
    那么dp[i]=dp[i-1]+dp[i-2]否则dp[i]=dp[i-1],最后结果就是dp[s[i].length]


    #include<bits/stdc++.h>
    #include<string.h>
    using namespace std;
    #define rep(i,j,k) for(LL i=(j); i<(k); ++i)
    #define pb push_back
    #define PII pair<LL,LL>
    #define PLL pair<long long, long long>
    #define ini(a,j) memset(a,j,sizeof a)
    #define rrep(i,j,k) for(LL i=j; i>=k; --i)
    #define fi first
    #define se second
    #define LL long long
    #define beg begin()
    #define ed end()
    #define all(x) x.begin(),x.end()
    const LL mod= 1e9+7;
    const unsigned int N = 1e5+10;
    string s;
    LL dp[N];
    int main(int argc, char const *argv[])
    {
    	// #define DEBUG
        	#ifdef DEBUG
    		freopen("1.dat","r",stdin);
    		freopen("ans.dat","w",stdout);
    	#endif
    	LL _=1;
    	ios::sync_with_stdio(false);
    	cin.tie(0);
    	cout.tie(0);
    	// cin>>_;
    	while(_--){
    		cin>>s;
    		if(count(all(s),'m')!=0||count(all(s),'w')!=0)
    			cout<<0<<endl;
    		else{
    			int n = s.length();
    			dp[0]=1;
    			dp[1]=1;
    			// for(int i=)
    			rep(i,1,n)
    			{
    				if(s[i]=='n'&&s[i-1]=='n')
    					dp[i+1]=dp[i]+dp[i-1];
    				else if(s[i]=='u'&&s[i-1]=='u')
    					dp[i+1]=dp[i]+dp[i-1];
    				else
    					dp[i+1]=dp[i];
    				dp[i+1] %= mod;
    			}
    			cout<<dp[n]%mod<<endl;
    		}
    	}
    	return 0;
    }
    
  • 相关阅读:
    caffe中的sgd,与激活函数(activation function)
    image retrieval数据集
    八卦
    caffe的损失函数
    caffe的输入
    rcnn spp_net hcp
    js实现幻灯片播放图片示例代码
    Checbox的操作含已选、未选及判断代码
    shell中case的用法学习笔记
    linux bash shell中case语句的实例
  • 原文地址:https://www.cnblogs.com/Crossea/p/12975962.html
Copyright © 2011-2022 走看看