hdu5745(dp+bitset)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=5745
C++ bitset的用法:https://www.cnblogs.com/magisk/p/8809922.html
题目:


题意:给两个字符串 a 和 b ,b可以进行变换,规则是可以任意交换相邻两个字符的位置,但是不可以有交叉。求a中每一个位置能不能匹配b或b变换得到的子串。
思路:dp,dp[i]表示匹配模式串前i+1个的状况,其中dp[i][0],dp[i][1],dp[i][2]分别表示和前一个交换,不交换,和后一个交换的情况,采用bitset优化。
代码:
#include<iostream>
#include<string.h>
#include<stdio.h>
#include<algorithm>
#include<bitset>
using namespace std;
bitset<>dp[][],w[];
char s[];
char t[];
int main()
{
int tt;
int n,m;
scanf("%d",&tt);
while(tt--)
{
scanf("%d%d",&n,&m);
scanf("%s%s",s,t);
for(int i=;i<;i++)w[i].reset();//由bitset知,reset函数不带参数时将bitset的每一位置为0
for(int i=;i<;i++)
for(int j=;j<;j++)
dp[i][j].reset();
for(int i=;i<n;i++)
{
w[s[i]-'a'][i]=;
}
dp[][]=w[t[]-'a'];
if(m>)dp[][]=w[t[]-'a'];
int now = ;
for(int i=;i<m;i++)
{
now^=;
dp[now][]=(dp[now^][]<<)&w[t[i-]-'a'];
dp[now][]=((dp[now^][]|dp[now^][])<<)&w[t[i]-'a'];
if(i<m-)
{
dp[now][]=((dp[now^][]|dp[now^][])<<)&w[t[i+]-'a'];
}
}
for(int i=;i<n;i++)
{
if(dp[now][][i+m-]||dp[now][][i+m-])printf("");
else printf("");
}
puts("");
}
}
hdu5745(dp+bitset)的更多相关文章
- HDU5716, HDU5745【dp+bitset】
DP+bitset HDU5716 dp[i][j] = dp[i-1][j-1] && (s[i] in set[j]); 第二维压bitset #include <bits ...
- hdu5745 La Vie en rose 巧妙地dp+bitset优化+滚动数组减少内存
/** 题目:hdu5745 La Vie en rose 链接:http://acm.hdu.edu.cn/showproblem.php?pid=5745 题意:题目给出的变换规则其实就是交换相邻 ...
- 字符串匹配dp+bitset,滚动数组优化——hdu5745(经典)
bitset的经典优化,即把可行性01数组的转移代价降低 bitset的适用情况,当内层状态只和外层状态的上一个状态相关,并且内层状态的相关距离是一个固定的数,可用bitset,换言之,能用滚动数组是 ...
- hdu5745--La Vie en rose (DP+bitset)
好题,学到新姿势! 题意:给两个字符串 a 和 b ,b可以进行变换,规则是可以任意交换相邻两个字符的位置,但是不可以有交叉(例如3和4交换,5和6交换 互不影响,但是2和3,3和4就不可以).求a中 ...
- hdu 5745 La Vie en rose DP + bitset优化
http://acm.hdu.edu.cn/showproblem.php?pid=5745 这题好劲爆啊.dp容易想,但是要bitset优化,就想不到了. 先放一个tle的dp.复杂度O(n * m ...
- HDU5745-La Vie en rose-字符串dp+bitset优化
这题现场的数据出水了,暴力就能搞过. 标解是拿bitset做,转移的时候用bitset优化过的操作(与或非移位)来搞,复杂度O(N*M/w) w是字长 第一份标程的思路很清晰,然而后来会T. /*-- ...
- BZOJ3425[POI2013]Polarization——DP+bitset+分块
题目描述 Everyone knew it would only be a matter of time. So what? Faced for years on, a peril becomes t ...
- bzoj1087 互不侵犯King 状压dp+bitset
题目传送门 题目大意:中文题面. 思路:又是格子,n又只有9,所以肯定是状压dp,很明显上面一行的摆放位置会影响下一行,所以先预处理出怎样的二进制摆放法可以放在上下相邻的两行,这里推荐使用bitset ...
- HDU 5313——Bipartite Graph——————【二分图+dp+bitset优化】
Bipartite Graph Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)T ...
随机推荐
- python1114string_test
#! -*- coding:utf-8 -*- str = "self_learn"print(type(str))str.title()print(str.title()) # ...
- Centos7 linux 卸载自带安装的jdk 并yum自动安装jdk1.8
一:卸载系统自带安装的JDK 注:本文参考了< 使用CentOS7卸载自带jdk安装自己的JDK1.8> 通过xshell工具成功连接安装好的虚拟机之后可通过 rpm -qa | g ...
- 整合 JIRA 和 Confluence 6
Jira 应用和 Confluence 可以完全的整合在一起.在 Confluence 中收集你项目组成员的想法,知识和计划.在 Jira 中跟踪你的系统出现的问题,让这 2 个应用同时工作. 了解更 ...
- Socket网络编程(一)
1.什么是网络通讯?(udp.tcp.netty.mina) udp:漂流瓶,每个人都可以向大海里面扔漂流瓶,不管有没有人捡到.(不管接收方有没有,我只往指定的地址发送东西,64kb以内) tcp:电 ...
- Pycharm同步本地代码至GitHub
注册github账号 github地址,进入注册账号 安装git Windows下载地址1 Windows下载地址2 在官方下载完后,双击exe文件进行安装,安装到Windows Explorer i ...
- nodejs 如何获取页面get、post传递过来的参数
如果是get传递参数,可以直接使用 request.query.name 如果是post 需要借助body-parser 首先引入bodyParser = require('body-parser') ...
- 论文阅读笔记九:SEMANTIC IMAGE SEGMENTATION WITH DEEP CONVOLUTIONAL NETS AND FULLY CONNECTED CRFS (DeepLabv1)(CVPR2014)
论文链接:https://arxiv.org/abs/1412.7062 摘要 该文将DCNN与概率模型结合进行语义分割,并指出DCNN的最后一层feature map不足以进行准确的语义分割,DCN ...
- 无废话-API-01
说明 我的开发环境:VS2013 浏览器:谷歌浏览器(Google Chrome) 1创建项目 1.1添加一个 应用程序"ASP.NET MVC 4 Web 应用程序" 1.2选 ...
- oa项目环境搭建的操作步骤详解
dto:多表关联查询用单独建一个类,把查询数据放dto即可 vo:是view的缩写.单独定义一个类
- WebService服务介绍与调用
一: WebService简介 WebService是一个平台独立的,低耦合的,自包含的.基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言的下的一个子集)标准来描述.发布.发现.协调 ...