HDU5972-bitset的应用或者shift-and
来源:互联网 发布:qq强制聊天js脚本代码 编辑:程序博客网 时间:2024/06/12 16:40
bitset起标记作用,并且可以有效的减少使用的空间,特别方便。
tle了好多次,
比方说,先把strlen() 算出来,,不然可能每次for的时候都要再算一下吧
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cstdlib>#include <bitset>using namespace std;const int maxn=5e6+5;char c[maxn];/*bitset的优化字符串匹配。看了好久才看明白。。具体方法是这道题不能够用kmp,因为那些模式串很可能彼此交错。先把每一位都初始化为1,意思是每个数都可能是模式串的第一位。如果这意味匹配好,说明这个数可以做第一个,这个状态被保留。而这次与后如果其他地方有1,那么说明当前这个这个字母可以放在i上,并且之前的数已经匹配了(如果不匹配的话他就会被改掉)。如果出现了n-1说明匹配已经完成了,那么就输出,否则就继续。*/bitset<1005> g[20];bitset<1005>ans;int main(){ int m,k,num; while(~scanf("%d",&m)){ for(int i=0;i<20;i++){ g[i].reset(); } ans.reset(); for(int i=1;i<=m;i++){ scanf("%d",&k); for(int j=1;j<=k;j++){ scanf("%d",&num); g[num].set(i); } } getchar(); gets(c); int len=strlen(c); for(int i=0;i<len;i++){ ans<<=1; ans[1]=1; ans&=g[c[i]-'0']; if(ans[m]==1){ char w=c[i+1]; c[i+1]='\0'; puts(c+i-m+1); c[i+1]=w; //cout<<i<<endl; } } } return 0;}
阅读全文
0 0
- HDU5972-bitset的应用或者shift-and
- hdu5972 Regular Number (bitset应用+快速匹配+shiftAnd匹配算法学习模板)
- HDU5972 Regular Number (ShiftAnd算法+bitset)
- HDU 5972 Regular Number Bitset (字符串匹配shift and/or)
- HDU 5972 Regular Number Bitset优化字符串匹配 +Shift-And算法
- bitset模板的应用范例
- BitSet的一个简单应用
- ACM 中 bitset 的应用
- hdu5972 快速匹配bitset优化(shiftand算法)2016ACM/ICPC亚洲区大连站
- bitset应用
- Logical shift and Arithmetic shift
- shift-And / shift-Or 算法
- mean-shift颜色重心,或者重心的意…
- 库函数bitset的应用:codeforces 333E
- Flip and Shift(ZJU_1028)
- zoj1028 Flip and Shift
- pku1063 Flip and Shift
- Flip and Shift
- spark源码之Job执行(1)stage划分与提交
- 函数式编程和响应式编程
- C++之标准库的特殊元素
- 07.java语言基础-java5对数组的支持-方法的可变参数
- jQuery自定义插件编写
- HDU5972-bitset的应用或者shift-and
- 合并两个排序的链表
- 专题二 符号的技巧---- 10.单引号和双引号
- 08.java语言基础-实现int类型数组元素拷贝
- 18. 4Sum
- 第41课:Checkpoint彻底解密:Checkpoint的运行原理和源码实现彻底详解
- 09.java语言基础-system类中的arraycopy方法
- 在android中创建计时器
- DP--多重背包--队列优化