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 314B - Sereja and Periods 很有思维的DP

题意:                   对于一个字符串规定这样一种运算..字符串s与整数k..[s,k]=s+s+s+...k个s..如[abc,2]=abcabc...现在给出w=[a,b],q...
  • kk303
  • kk303
  • 2013年08月08日 14:21
  • 1151

Codeforces #187 (Div. 1) B. Sereja and Periods && Hihocoder 1355 (字符串匹配倍增好题)

题目链接:http://codeforces.com/contest/314/problem/B 题意:给定一个两个字符串stra, strb,和两个数c1,c2,求stra * c1 中有多少个字...
  • kalilili
  • kalilili
  • 2016年08月07日 19:18
  • 366

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

题目题意:给出不超过100长度的两个字符串a、c,以及两个正整数b、d(b,d
  • yskyskyer123
  • yskyskyer123
  • 2016年08月29日 12:54
  • 493

CF 351D - Jeff and Removing Periods(离线 + 树状数组)

题目链接:Click here~~ 题意: 给一个长度为 n 的序列,Q 次询问,每次查询 [l,r] 中有多少个不同的数字,且是否存在一个数字,其出现的位置成等差数列。 解题思路: 接上篇...
  • dgq8211
  • dgq8211
  • 2013年10月13日 19:20
  • 1155

codeforces contest 315

http://codeforces.com/contest/315AB水题就不说了//---------------------------------------------------------...
  • qq_32707623
  • qq_32707623
  • 2016年11月02日 11:38
  • 104

Codeforceds 315D Sereja and Periods【思维+Dp】

D. Sereja and Periods time limit per test 1 second memory limit per test 256 megabytes ...
  • mengxiang000000
  • mengxiang000000
  • 2017年10月05日 12:45
  • 496

Posting only possible in periods 2002/11 and 2002/10 in company code 1000

在作PLM110的练习时,需要在库存中增加一些物料的库存数量,我用MB1C,movement type为561作了操作。 刚输入完相应的信息后,按回车,画面没变。 系统提示: ...
  • kehq2008
  • kehq2008
  • 2009年10月12日 23:07
  • 1810

CodeForces - 367C Sereja and the Arrangement of Numbers (图论&不懂)

CodeForces - 367C Sereja and the Arrangement of Numbers Time Limit: 1000MS   Memory ...
  • yanghui07216
  • yanghui07216
  • 2016年04月01日 09:36
  • 295

CodeForces 380 D.Sereja and Cinema(组合数学)

Description 电影院有nn位置,每个位置两边都有一个放水杯的槽,相邻两个位置分享同一个槽,看电影的人按顺序进场,先进场的人会把其座位两边没人用的槽都占了,如果一个人进场后发现其座位两边槽都...
  • V5ZSQ
  • V5ZSQ
  • 2018年01月07日 09:59
  • 78
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:CodeForces 314B. Sereja and Periods 思维+简单dp
举报原因:
原因补充:

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