洛谷 P3102 [USACO14FEB]秘密代码Secret Code
P3102 [USACO14FEB]秘密代碼Secret Code
題目描述
Farmer John has secret message that he wants to hide from his cows; the message is a string of length at least 2 containing only the characters A..Z.
To encrypt his message, FJ applies a sequence of "operations" to it, where an operation applied to a string S first shortens S by removing either some (but not all) of the initial characters or some (but not all) of the final characters from S, after which the original string S is attached either at the beginning or end. For example, a single operation to the string ABC could result in eight possible strings:
AABC ABABC BCABC CABC ABCA ABCAB ABCBC ABCC Given the final encrypted string, please count the number of possible ways FJ could have produced this string using one or more repeated operations applied to some source string. Operations are treated as being distinct even if they give the same encryption of FJ's message. For example, there are four distinct separate ways to obtain AAA from AA.
Print your answer out modulo 2014.
農民約翰收到一條的消息,記該消息為長度至少為2,只由大寫字母組成的字符串S,他通過一系列操作對S進行加密。
他的操作為,刪除S的前面或者后面的若干個字符(但不刪光整個S),并將剩下的部分連接到原字符串S的前面或者后面。如對于S=‘ABC’,共有8總可能的操作結果:
AABC
ABABC
BCABC
CABC
ABCA
ABCAB
ABCBC
ABCC
給出加密后的目標字符串,請計算共有多少種加密的方案。
對于同字符的字符串,加密方案不止一種,比如把AA加密成AAA,共有4種加密方案。將你的答案mod 2014后輸出。
輸入輸出格式
輸入格式:?
- Line 1: A single encrypted string of length at most 100.
?
輸出格式:?
- Line 1: The number of ways FJ could have produced this string with one or more successive operations applied to some initial string of length at least 2, written out modulo 2014. If there are no such ways, output zero.
?
輸入輸出樣例
輸入樣例#1:ABABA 輸出樣例#1:
8
說明
Here are the different ways FJ could have produced ABABA:
1. Start with ABA -> AB+ABA 2. Start with ABA -> ABA+BA 3. Start with AB -> AB+A -> AB+ABA 4. Start with AB -> AB+A -> ABA+BA 5. Start with BA -> A+BA -> AB+ABA 6. Start with BA -> A+BA -> ABA+BA 7. Start with ABAB -> ABAB+A 8. Start with BABA -> A+BABA #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #define mod 2014 using namespace std; char s[120]; int dp[120][120],f[120][120][120]; int main(){scanf("%s",s+1);int len=strlen(s+1);for(int i=1;i<=len;i++)for(int j=1;j<=len;j++)for(int k=1;i+k-1<=len&&j+k-1<=len&&s[i+k-1]==s[j+k-1];k++)f[i][j][k]=1;for(int i=1;i<=len;i++)for(int j=1;j<=len;j++)dp[i][j]=1;for(int l=2;l<=len;l++)for(int i=1;i+l-1<=len;i++){int j=i+l-1;for(int k=1;k*2<l;k++){if(f[i][i+k][k]) dp[i][j]=(dp[i][j]+dp[i+k][j])%mod;if(f[i][j-k+1][k]) dp[i][j]=(dp[i][j]+dp[i+k][j])%mod;if(f[i][j-k+1][k]) dp[i][j]=(dp[i][j]+dp[i][j-k])%mod;if(f[j-2*k+1][j-k+1][k]) dp[i][j]=(dp[i][j]+dp[i][j-k])%mod;}}cout<<dp[1][len]-1; }?
轉載于:https://www.cnblogs.com/cangT-Tlan/p/7569629.html
總結
以上是生活随笔為你收集整理的洛谷 P3102 [USACO14FEB]秘密代码Secret Code的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java获取response数据_Jav
- 下一篇: elastic search java_