博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[HNOI2014]抄卡组
阅读量:4927 次
发布时间:2019-06-11

本文共 1289 字,大约阅读时间需要 4 分钟。

锻炼哈希码力的一道题 , 具体细节见代码

#include
#include
#include
#include
#include
#include
#define debug(...) fprintf(stderr,__VA_ARGS__)#define Debug(x) cout<<#x<<"="<
<
hash;//记录hash值 vector
word;//记录每个通配符的出现位置 inline friend bool cmp1(const String a,const String b){return a.word[1]
s.len) return false; if(get_hash(1,word[1]-1)!=s.get_hash(1,word[1]-1)) return false; if(get_hash(word[num]+1,len)!=s.get_hash(s.len-suf+1,s.len)) return false; int l=word[1],r=s.len-suf; for(int i=1;i
r) return false; if(s.get_hash(l,l+length-1)==t){l+=length;break;} l++; } } return true; }}s[N];inline bool solve(){ ULL hashval=0;int pos=0; for(int i=1;i<=n;i++){ if(s[i].num) continue;//有通配符就跳过 if(!pos){ pos=i; hashval=s[i].hash[s[i].len]; } else if(s[i].hash[s[i].len]!=hashval) return false;//没有通配符之间的 } if(pos){ for(int i=1;i<=n;i++) if(s[i].num&&(!s[i].match(s[pos]))) return false;//有通配符和没有通配符的 } else{ flag=true;sort(s+1,s+n+1);//按word[1]排序 for(int i=1;i
>x; return x;//...}int main(){ ios::sync_with_stdio(false);//关同步cin都很快 pow[0]=1; for(int i=1;i
>n; for(int i=1;i<=n;i++){ string ch; cin>>ch; s[i].init(); s[i].build(ch); } puts(solve()?"Y":"N"); }}

转载于:https://www.cnblogs.com/lizehon/p/10615454.html

你可能感兴趣的文章
Meteor部
查看>>
WindowsPhone 在 根据公历 获取月球日期数据
查看>>
数字金额大小写转换
查看>>
【翻译mos文章】Linux x86 and x86-64 系统SHMMAX最大
查看>>
AWS Credentials 使用
查看>>
iOS 多线程,ARC
查看>>
Javascript小技巧,去掉小数位并且不会四舍五入
查看>>
指定初始化方法
查看>>
使用eclipse进行重构
查看>>
vs mfc 静态文本 改变字体大小
查看>>
Hidden Word
查看>>
radios组件
查看>>
Android客户端采用Http 协议Post方式请求与服务端进行数据交互
查看>>
《浙大版-数据结构(第二版)》习题2.5 两个有序链表序列的合并(15 分)<有疑问?变化之后 L1 L2没办法NULL >...
查看>>
Ubuntu18.04 安装Chrome浏览器
查看>>
Linux命令总结_文件的输入与 输出
查看>>
[ZJOI2010]数字计数
查看>>
BW顾问必需要清楚的:时间相关数据建模场景需求分析
查看>>
JSON.parse()与JSON.stringify()的区别
查看>>
idea设置
查看>>