CodeForces 314B. Sereja and Periods 思维+简单dp

原创 2016年08月29日 12:54:25

题目


题意:给出不超过100长度的两个字符串a、c,以及两个正整数b、d(b,d<=1e7),求最大的q使得ab()(bd)q


这个题我的思考角度不大好,唉…
令dp[x]表示c串的第x字符开始匹配,匹配完一个字符串a后,能够匹配多少个整字符串c,并且nex[x]代表下次开始匹配的位置。

状态选取的好…之前一直想的是匹配完一个字符串c后消耗多少a,除了还要考虑下次匹配开始a的位置,还需要考虑b和d…

#include<cstdio>
#include<string>
#include<cstring>
#include<iostream>
#include<cmath>
#include<algorithm>
#include<vector>
using namespace std;

#define all(x) (x).begin(), (x).end()
#define for0(a, n) for (int (a) = 0; (a) < (n); (a)++)
#define for1(a, n) for (int (a) = 1; (a) <= (n); (a)++)
#define mes(a,x,s)  memset(a,x,(s)*sizeof a[0])
#define mem(a,x)  memset(a,x,sizeof a)
#define ysk(x)  (1<<(x))
typedef long long ll;
typedef pair<int, int> pii;
const int INF =0x3f3f3f3f;
const int maxn=100    ;

int b,d,lenA,lenC;
string a,c;
int dp[maxn+10],nex[maxn+10];

void cope(int x)
{
   dp[x]=0;nex[x]=x;int use=0;
   while(use<lenA)
   {
       if(a[use ]==c[nex[x]] )
       {
           if(++nex[x]==lenC)
           {
               dp[x]++;nex[x]=0;
           }
       }
       use++;
   }

}
int main()
{
   std::ios::sync_with_stdio(false);
   while(cin>>b>>d)
   {
       cin>>a>>c;lenA=a.length(),lenC=c.length();
       for0(i,lenC)  cope(i);
       int x=0,num=0;
       for0(i,b)
       {
           num+=dp[x];
           x=nex[x];
       }
       num/=d;
       cout<<num<<endl;
   }
   return 0;
}

CodeForces 314 B.Sereja and Periods 思维+简单dp【转】

Let's introduce the designation , where x is a string, n is a positive integer and operation " + " i...

【codeforces 314C】Sereja and Subsequences

【题目链接】:http://codeforces.com/problemset/problem/314/C【题意】 让你从n个元素的数组中选出所有的不同的非递减子数列; 然后计算比这个子数列小...

Codeforces_352B_Jeff and Periods(排序)

题型:简单题 题意: 有n个数,a1, a2, ..., an,现在想要找到所有的x,x满足: 1、x出现在这n个数中; 2、每一次出现的x的下标要满足等差数列。 按升序求出所有的x...

Codeforces Round #204 (Div. 2) B - Jeff and Periods

B. Jeff and Periods time limit per test 1 second memory limit per test 256 megabytes ...

CF - 368B. Sereja and Suffixes - 哈希+思维

1.题目描述: B. Sereja and Suffixes time limit per test 1 second memory limit per test 2...

Codeforces 426 B Sereja and Mirroring【暴力枚举+模拟】水题

B. Sereja and Mirroring time limit per test 1 second memory limit per test 256 megabytes ...

Codeforces 368B Sereja and Suffixes 线段树按值建树

传送门:点击打开链接 B. Sereja and Suffixes time limit per test 1 second memory limit per test 256 megaby...

codeforces 401B - Sereja and Contests

题目链接:http://codeforces.com/problemset/problem/401/B 题目大意:正在做第x场比赛,之前做过k场,判断之前最少和最多错过了几场比赛,连续的场次可能是同...

CodeForces 425B Sereja and Table

题意: 一个充满0和1的矩形 最多将k个数字翻转 问 最少翻转几个数字可以使所有0或1的连通块都是矩形 如果不可能输出-1 思路: 首先 如果确定了一行 那么整个矩形就确定了 因为在最后...

Codeforces Round #235 (Div. 2)B. Sereja and Contests

B. Sereja and Contests time limit per test 1 second memory limit per test 256 megabytes ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:CodeForces 314B. Sereja and Periods 思维+简单dp
举报原因:
原因补充:

(最多只允许输入30个字)