题意:

给定两个字符串s1,s2利用s1去构造s2,s1有无限个,可以翻转,你最少要用几个s1才能构造s2。输出每一次使用的s1的有效区间。

伪思路:

据说是暴力就能过的题目。然而自己就是暴力差,模拟差,DP差。。。。mdzz好像都差,不会怎么暴力。

其他思路都想过一点,然后剩下两个比较可能的;

①:我暴力一发s2,以s2的字符为开始然后暴力过去,让s1去正的反的匹配,所以怎么记录?但是这样细节上处理太多了,比如这个刚好接上,或者不是刚好接上。这样的细节处理。

②:我暴力一发s2,每次取正反,然后一直暴力到终点,每次取正反暴力。如果正反都是没有结果直接可以标记掉,然后put:-1。

但是这样的不好就是中间的情况的太多了,如果每次都有情况的话,那么就是2^很多次左右吧,但是这个len(s2)是有2100,这么暴力无非是作死。如果每次取最优呢?也就是每次我拿长的。。。这样真的可以么。。。直觉就是80%不行。就是觉得如果我这次正的比较长,然后可能会比较短,然后执行比较短的下次会比较长。然后好像举不出例子,所以要试一发。其实打起来也是很吃力啊。

#include <bits/stdc++.h>
//#include<iostream>
//#include<cstdio>
//#include<math.h>
//#include<string.h>
//#include<algorithm>
using namespace std;
typedef long long LL;
typedef unsigned long long ULL;
const double eps=1e-6;
const double pi=acos(-1.0);
const int mod=998244353;
const int INF=0x3f3f3f3f; const int N=1200; char s1[N*2];
char s2[N*2];
int dp[N*2][3]; int main()
{
int flag,n,m,k,j,h1,h2;
int num;
int len1,len2;
scanf("%s%s",s1,s2);
len1=strlen(s1);len2=strlen(s2);
flag=k=0;
num=0;
int s,t;
int x;
for(int i=0;i<len2;){
int nextpos=-1;
int p1,p2;
for(int j=0;j<len1;j++){
int k=j;
int next=i;
while(k<len1&&s1[k]==s2[next])
k++,next++;
if(next>nextpos){
nextpos=next;
p1=j+1;
p2=k;
}
}
for(int j=len1-1;j>=0;j--){
int k=j;
int next=i;
while(k>=0&&s1[k]==s2[next]){
next++;
k--;
}
if(next>nextpos){
nextpos=next;
p1=j+1;
p2=k+2;
}
}
if(i==nextpos){
puts("-1");
return 0;
}
i=nextpos;
dp[num][0]=p1;
dp[num][1]=p2;
num++;
}
printf("%d\n",num);
for(int i=0;i<num;i++)
{
printf("%d %d\n",dp[i][0],dp[i][1]);
}
return 0;
}

CodeForces 615C的更多相关文章

  1. Codeforces 615C Running Track(DP + Trie树)

    题目大概说给两个串,问最少要用多少个第一个串的子串(可以翻转)拼成第二个串. UVa1401,一个道理..dp[i]表示前缀i拼接成功所需最少的子串,利用第一个串所有子串建立的Trie树往前枚举转移. ...

  2. 【28.57%】【codeforces 615C】 Running Track

    time limit per test1 second memory limit per test512 megabytes inputstandard input outputstandard ou ...

  3. python爬虫学习(5) —— 扒一下codeforces题面

    上一次我们拿学校的URP做了个小小的demo.... 其实我们还可以把每个学生的证件照爬下来做成一个证件照校花校草评比 另外也可以写一个物理实验自动选课... 但是出于多种原因,,还是绕开这些敏感话题 ...

  4. 【Codeforces 738D】Sea Battle(贪心)

    http://codeforces.com/contest/738/problem/D Galya is playing one-dimensional Sea Battle on a 1 × n g ...

  5. 【Codeforces 738C】Road to Cinema

    http://codeforces.com/contest/738/problem/C Vasya is currently at a car rental service, and he wants ...

  6. 【Codeforces 738A】Interview with Oleg

    http://codeforces.com/contest/738/problem/A Polycarp has interviewed Oleg and has written the interv ...

  7. CodeForces - 662A Gambling Nim

    http://codeforces.com/problemset/problem/662/A 题目大意: 给定n(n <= 500000)张卡片,每张卡片的两个面都写有数字,每个面都有0.5的概 ...

  8. CodeForces - 274B Zero Tree

    http://codeforces.com/problemset/problem/274/B 题目大意: 给定你一颗树,每个点上有权值. 现在你每次取出这颗树的一颗子树(即点集和边集均是原图的子集的连 ...

  9. CodeForces - 261B Maxim and Restaurant

    http://codeforces.com/problemset/problem/261/B 题目大意:给定n个数a1-an(n<=50,ai<=50),随机打乱后,记Si=a1+a2+a ...

随机推荐

  1. [Unit Testing] Test async function with Jasmine

    Most of time, when we want to test function call inside a promise, we can do: it('Should be async', ...

  2. 79.iOS 设备的UI规范和iOS各控件默认高度

    iOS设备的UI 规范 iPhone界面尺寸 iPhone图标尺寸 iPad的设计尺寸 iPad图标尺寸 iPhone设备尺寸分辨率比例 iPhone各设备 launch image iOS 各种控件 ...

  3. C语言之基本算法34—分解质因数(方法一)

    //矩阵基础 /* ================================================================== 题目:输入一个正整数.将其分解为质因式,如:6 ...

  4. HDU 5335 Walk Out(多校)

    Walk Out Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Su ...

  5. Android 关于BottomDialogSheet 与Layout擦出爱的火花?

    今天上班做那个相似于ios拍照的那种效果图 就是个垂直布局然后里面textview+切割线+textview+button 当然也能够用button+切割线+button 方法有非常多,选择适合自己的 ...

  6. 【转载】FAT12格式的引导程序(2)

     1.用WinImage来写入到引导区的详细步骤: 启动WinImage后,打开“文件”菜单,单击菜单中的“打开”命令. 选择之前保存的磁盘镜像文件“boot.img”或者“boot.ima”. 打开 ...

  7. Linux fork函数具体图解-同一时候分析一道腾讯笔试题

    原创blog.转载请注明出处 头文件: #include<unistd.h> #include<sys/types.h> 函数原型: pid_t fork( void); (p ...

  8. POJ 2750 Potted Flower(线段树+dp)

    题目链接 虽然是看的别的人思路,但是做出来还是挺高兴的. 首先求环上最大字段和,而且不能是含有全部元素.本来我的想法是n个元素变为2*n个元素那样做的,这样并不好弄.实际可以求出最小值,总和-最小,就 ...

  9. CentOS笔记-vim

    详细的参考http://www.runoob.com/linux/linux-vim.html i插入 I 行首插入 A 行尾插入 fn + ←,行首 fn + →,行尾 fn + ↑,向上翻页 fn ...

  10. CrateDb

    CrateDB: Real-time SQL Database for Machine Data & IoT | Crate.io https://crate.io/