La Vie en rose

题目连接:

http://acm.hdu.edu.cn/showproblem.php?pid=5745

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

Hint

题意

给你一个串s,然后给你个串s2

s2可以在其中选择出一个子序列,子序列中相邻的元素距离至少差2,然后交换前后位置(建议读题,我说的不是很清楚……)

再去匹配,问你有哪些位置可以匹配。

题解:

正解是dp+bitset优化

现场做的时候,看大多数队伍都过了,就感觉应该是傻逼暴力题了,剪剪枝就过了。。。

建议还是去写正解,正解其实也很好写的……

代码

#include<bits/stdc++.h>
using namespace std;int n,m;
char s1[100004],s2[5005],s3[5005];
int sum[100004][26];
int tmp[26];
void solve(){string ans="";memset(sum,0,sizeof(sum));memset(tmp,0,sizeof(tmp));memset(s3,0,sizeof(s3));scanf("%d%d",&n,&m);scanf("%s%s",s1+1,s2+1);s2[m+1]='.';for(int i=1;i<=n;i++){for(int j=0;j<26;j++){sum[i][j]=sum[i-1][j];}sum[i][s1[i]-'a']++;}for(int i=1;i<=m;i++)tmp[s2[i]-'a']++;for(int i=1;i<=m+1;i++)s3[i]=s2[i];for(int i=1;i<=n;i++){int flag = 1;if(i+m-1>n){ans+='0';continue;}for(int j=0;j<26;j++){if(sum[i+m-1][j]-sum[i-1][j]!=tmp[j]){flag = 0;break;}}if(flag==0){ans+='0';continue;}int ff = 0;int len = 0;for(int j=1;j<=m;j++){len = max(len,j);if(s2[j]==s1[i+j-1]){ff=0;}else if(ff==0&&s2[j+1]==s1[i+j-1]){swap(s2[j+1],s2[j]);ff=1;}else{flag=0;break;}}for(int j=1;j<=len+1;j++)s2[j]=s3[j];if(flag==0){ans+='0';continue;}ans+='1';}cout<<ans<<endl;
}
int main(){int t;scanf("%d",&t);while(t--)solve();return 0;
}

转载于:https://www.cnblogs.com/qscqesze/p/5692872.html

HDU 5745 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. HDU 1557 权利指数 国家压缩 暴力

    HDU 1557 权利指数 状态压缩 暴力 ACM 题目地址:HDU 1557 权利指数 题意:  中文题,不解释. 分析:  枚举全部集合,计算集合中的和,推断集合里面的团体是否为关键团队. 代码: ...

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

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

  4. Codeforces 460E Roland and Rose(暴力)

    题目链接:Codeforces 460E Roland and Rose 题目大意:在以原点为圆心,半径为R的局域内选择N个整数点,使得N个点中两两距离的平方和最大. 解题思路:R最大为30.那么事实 ...

  5. HDU - 5371 Hotaru's problem(马拉车+暴力)

    题目链接:点击查看 题目大意:给出n个数组成的数列,现在规定一种结构满足以下条件: 该结构由三个部分组成 第一个部分与第三个部分相等 第一个部分与第二个部分对称 现在问数列中最长的可以组成该结构的字串 ...

  6. HDU 5944 Fxx and string(暴力/枚举)

    传送门 Fxx and string Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Othe ...

  7. HDU 5128 The E-pang Palace 【暴力】

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5128 题意:给出N个点,由这些点构成两个矩形,矩形是平行于x轴的,而且不能相交不能相邻(共用同一边), ...

  8. hdu 1814 字典序最小的2sat(暴力深搜)

    题意:      题意就是最基础的2sat,关系只有矛盾关系,然后二选一,关键是这个题目是输出字典序最小的那组解. 思路:      输出字典序最小,用强连通那个实现不了(起码没看到有人实现),其实我 ...

  9. hdu 4438 la 6389

    题目概述 A,B两人比赛打猎,老虎(tiger)X分,狼(wolf)Y分,两种猎物都只有一只,开始前两人会先选定各自的目标,若两人选的不同,则各打各的,都能得到自己选的猎物的分数,若选的相同,则A有P ...

  10. HDU 3687 National Day Parade(暴力)

    题意:       在一个n行m列大小的长方形的空地上,有n*n个人站在这里,保证每一行都有n个人,现在要求让他们站成一个正方形的队列,每个人只能在这一行移动,问最小移动的次数是多少.(人可以站在同一 ...

最新文章

  1. serv-u 15 设置非21端口外网FTP访问以及更改被动模式端口、防火墙映射
  2. webgl之3d动画
  3. python+Eclipse+pydev环境搭建
  4. 是什么决定了创业的成败?
  5. python 如何加密_Python如何玩转加密?
  6. Office 2007简体中文版售价抢先看
  7. 计算机技术在工业的应用,计算机技术在工业自动化控制的应用
  8. ehcache使用java_Java分布式缓存框架Ehcache 使用(一)
  9. win10彻底禁用chrome自动升级方法
  10. 计算机等级考试的资料,计算机等级考试(资料).pdf
  11. pycharm定时运行python脚本_Python脚本定期执行_执行python脚本_如何执行python脚本
  12. 身份实名认证API开发文档
  13. 【世纪佳缘桌面V3.1.1正式版】聊天交流工具
  14. Unity FPS显示工具
  15. 搜狗老域名作用之快速大量搜狗收录
  16. 爬取京东网页的通用代码框架及其问题(MOOC)
  17. 使用 Cipher CipherInputStream CipherOutputStream 实现对文件的加解密
  18. “身、口、意”三业,而其中尤其以口业为重,认为口业是:患苦之门,祸累之始。
  19. diqu地区市的wheel样式
  20. IDEA 不识别application.properties或application.yml或pom.xml文件

热门文章

  1. 遇到了javah无法访问类的问题
  2. session的活化和钝化
  3. 两军问题和拜占庭将军问题的区块链解读(一)
  4. shell 编程大全
  5. 记一次halo博客ssl证书过期处理过程
  6. php做个抽签人名,基于JS实现的随机数字抽签实例
  7. 有哪些在家健身的软件?Mac健身软件推荐
  8. 电脑系统32位和64位有哪些区别
  9. 终于!LeCun发文驳斥Gary Marcus:别把深度学习暂时的困难当撞墙
  10. 如何使用http://paste.ubuntu.com/分享代码