题目链接:HDU5745

La Vie en rose

Time Limit: 14000/7000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 871    Accepted Submission(s): 467

Problem Description
Professor Zhang would like to solve the multiple pattern matching problem, but he only has only one pattern string p=p1p2...pm. So, he wants to generate as many as possible pattern strings from p using the following method:

1. select some indices i1,i2,...,ik such that 1≤i1<i2<...<ik<|p| and |ij−ij+1|>1 for all 1≤j<k.
2. swap pij and pij+1 for all 1≤j≤k.

Now, for a given a string s=s1s2...sn, Professor Zhang wants to find all occurrences of all the generated patterns in s.

Input
There are multiple test cases. The first line of input contains an integer T, indicating the number of test cases. For each test case:

The first line contains two integers n and m (1≤n≤105,1≤m≤min{5000,n}) -- the length of s and p.

The second line contains the string s and the third line contains the string p. Both the strings consist of only lowercase English letters.

Output
For each test case, output a binary string of length n. The i-th character is "1" if and only if the substring sisi+1...si+m−1 is one of the generated patterns.
Sample Input
3 4 1 abac a 4 2 aaaa aa 9 3 abcbacacb abc
Sample Output
1010 1110 100100100
Author
zimpha
Source
2016 Multi-University Training Contest 2 
Recommend
wange2014   |   We have carefully selected several similar problems for you:  5746 5743 5741 5740 5739 

题意:比赛的时候看了2个小时没有理解题目意思。下来对着题解的代码凝视了好久终于大概明白了一些。题的意思是进行多模式串的匹配,在给定的模式串p上给每个位置标号1到lp,然后从1到p-1随意找出一组标号,要求标号要不能相连,就是隔着取,然后把这些标号对应的位置与相邻的右一个交换位置,这样就组成了一堆新的模式串。要求求出所有匹配的模式串的起始位置。

题目分析:按照答案的正解是dp加位操作,这个我过一阵再写,网上大多数做法是暴力搞,复杂度O(mn),4500ms勉强过。仔细想下10w*5k*T竟然不到5s就跑过了,数据也是够弱的。
//
//  main.cpp
//  La Vie en rose
//
//  Created by teddywang on 2016/7/21.
//  Copyright © 2016年 teddywang. All rights reserved.
//#include <iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
#define MAX 500010
#define MIN 11000
int T,ls,lp;
int poss,posp;
int ans[100010];
char s[100010],p[5005];
int main()
{cin>>T;while(T--){memset(ans,0,sizeof(ans));scanf("%d%d",&ls,&lp);scanf("%s",s);scanf("%s",p);poss=posp=0;while(poss<ls&&posp<lp){if(s[poss]==p[posp]){if(posp==lp-1){ans[poss-posp]=1;poss=poss-posp+1;posp=0;}else{poss++;posp++;}}else if(s[poss]==p[posp+1]&&s[poss+1]==p[posp]){if(posp==lp-2){ans[poss-posp]=1;poss=poss-posp+1;posp=0;}else{poss+=2;posp+=2;}}else{poss=poss-posp+1;posp=0;}}for(int i=0;i<ls;i++)printf("%d",ans[i]);printf("\n");}
}

HDU5745 La Vie en rose相关推荐

  1. La vie en rose玫瑰人生

    Edith Piaf:La Vie En Rose 玫瑰色的人生 Des yeux qui font baiser les miens 他的双唇吻我的眼 Un rire qui se perd sur ...

  2. 这就是生活C'est La Vie

    法语好像叫C'est La Vie 记的有本书叫"为什么爱情总是与我擦肩而过" 想到一个故事,有人给一个女孩写了500封情书,结果这个女孩爱上了邮递员. 生活就是这样无奈,Ross ...

  3. 2008 Cest la vie

    今年失去了一些 放弃了一些 付出了一些 改变了一些 得到了很多 有点不公平 以下是TOP 10  按时间排序 换了手机 结束了1000天 be with STT 在固废中心实习一个月 考出了ISEP软 ...

  4. 2016区域赛前冲刺训练

    UPD 2016.10.23 shift-and (2题) Codeforces 训练 现在已经完成了: 191 [Codeforces Round #377] (6/6) Div 2 A Buy a ...

  5. 2016多校赛2 A 数学推公式 E 极角排序,组合数(待补) L dp+bitset优化

    2016 Multi-University Training Contest 2 A - Acperience 题意:给出w[],求S((w[i]-aB[i])^2)的最小值(B[i]为1或-1). ...

  6. 中物体的显示模式_美学,色彩模式,图像格式

    "神奇的一瞬间,阳光穿过透明天花板照进了毕加索的这幅画里,正好和画作完美结合在一起.坐在奥赛门口的台阶上喝咖啡,晒太阳,欣赏街头艺人表演.感谢这个随着音乐舞蹈的法国老太太,她让我明白什么是真 ...

  7. 机器人瓦力 配乐_《WALL-E》机器人小王子

    前几天看了迪斯尼的动画片<WALL-E>,很感人,并且发现了一个机器人版的小王子. 清垃圾的机器人Wall-E孤单的在废墟地球默默的日复一日辛勤工作,像个上班族每天准时上下班,干活的时候还 ...

  8. 机器人总动员最后的bgm_引导你欣赏《机器人瓦力》的电影配乐

    音乐为配合影片中出现的画面, 营造出一种特定的氛围基调.视觉上的效果带给我们的是一种直观的感受, 而伴随音乐细致入微的描写, 才能让画面更加的生动, 形象更深入人心.在动画片中, 最先出现的Put O ...

  9. 机器人总动员片尾曲歌词_机器人总动员中的所有歌曲叫什么名?

    展开全部 <机器人总动员>的原声皆由托马斯·纽曼主导创作. 歌曲包e68a843231313335323631343130323136353331333431343730括: 1.Put ...

  10. 机器人瓦力 配乐_机器人瓦力中的插曲是什么?

    迪斯尼3D巨作<Wall·E 机器人总动员>电影原声 专辑名称:WALL·E 机器人总动员 艺 术 家:Thomas Newman等 音乐类型:Soundtrack 唱片公司:Walt D ...

最新文章

  1. 查看apache、linux、kernel、nginx等版本
  2. Gym 101334A Area 51 数学
  3. aspx文件、aspx.cs文件、aspx.designer.cs文件之讲解
  4. 我的Android学习之旅--1环境配置
  5. QTableView操作 双击 单机事件信号
  6. 【枚举】连续自然数和(jzoj 2102)
  7. 当按下ESC键时,关闭应用程序
  8. 整型数据类型java_Java 六种基本整型数据类型变量的取值范围
  9. [vue]vue路由篇vue-router
  10. ubuntu和centos 编译安装nginx及常用命令
  11. SQLServer中的系统表,存储过程和函数的功能及应用
  12. TypeError: __init__() got an unexpected keyword argument 'serialized_options'(安装protobuf 3.6.0)
  13. python行业中性_燃爆!17行Python代码做情感分析?你也可以的
  14. 基于企业微信和钉钉的工资条发送工具 - 工资条帮新版操作说明
  15. 天猫盒子 显示电脑连接服务器失败,天猫魔盒访问电脑共享文件需要密码的解决方法...
  16. python实现匿名发邮件_Python 实现邮件发送功能(初级)
  17. python智能机器人原理_人工智能和Python是什么关系?详细分析!
  18. 【软件工具】Pycharm社区版安装ChatGPT!
  19. ps切片工具里没有html,PS切片工具怎么用?PS切片工具的使用方法
  20. DCT变换和DFT变换

热门文章

  1. springcloud搭建以及集成tx-lcn分布式事务解决框架
  2. iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 3306 -j DNAT --to-destinatio
  3. Cheat Engine(CE)-----下载安装及入门
  4. Tkinter:事件绑定
  5. linux: 未知的名称或服务 Caused by: java.net.UnknownHostException: smn01: Name or service not known
  6. 密码学技术背后的计算困难性理论
  7. 服务认证的介绍-实施依据及作用
  8. 惠普笔记本的Windows10和Ubuntu20.04双系统安装教程
  9. 计算机学院毕业语录,毕业的句子简单到哭的_毕业语录
  10. 最大公约数的四种求法(暴力、短除法、辗转相除法递归和非递归)