Bzoj4212--神牛养成计划
正规题解传送门 : https://zyqn.tech/?p=3163
但是我们发现n只有2000,于是可以建出trie树然后愉快的bitset去搞。
直接对于trie上每个节点开个bitset空间爆炸。但是有很多是重复的,所以我们想虚树一样建,每个节点只存一个link指针。
代码 :
#include<bits/stdc++.h> #define INF 0x3f3f3f3f #define eps 1e-9 #define LL long long using namespace std;#define int int inline int Max(int a,int b) {return a>b?a:b;} inline int Min(int a,int b) {return a<b?a:b;} inline int Sqr(int a) {return a*a;} inline int Abs(int a) {return a>0?a:-a;} #undef int#define MAXN 2000006int n,m,ans; bitset<2005> x,pol[100005];int tot; char s[MAXN];struct Trie{int tra[MAXN][27],lk[MAXN],cnt;void Init() {memset(tra,0,sizeof(tra));cnt=1;}void Build(int v) {int fr=0;for(int i=0;i<27;i++) {if(!tra[v][i]) continue;Build(tra[v][i]);if(!fr) lk[v]=lk[tra[v][i]],fr=1;else if(fr==1) {tot++;pol[tot]=pol[lk[v]];pol[tot]|=pol[lk[tra[v][i]]];lk[v]=tot;fr=2;}else pol[lk[v]]|=pol[lk[tra[v][i]]];}}void Insert(int k,char *s,int len) {int now=1;for(int i=0;i<len;i++) {if(!tra[now][s[i]-'a']) now=tra[now][s[i]-'a']=++cnt;else now=tra[now][s[i]-'a'];}if(!lk[now]) lk[now]=++tot;pol[lk[now]][k]=1;}int Patten(char *s,int len) {int now=1;for(int i=0;i<len;i++) {if(!tra[now][s[i]-'a']) return 0;now=tra[now][s[i]-'a'];}return lk[now];} }hd,bk;inline void Updata(int n) {for(int i=0;i<n;i++) s[i]=((s[i]-'a'+ans)%26)+'a'; }int main() {hd.Init();bk.Init();scanf("%d",&n);for(int len,i=1;i<=n;i++) {scanf("%s",s);len=strlen(s);hd.Insert(i,s,len);reverse(s,s+len);bk.Insert(i,s,len);}hd.Build(1);bk.Build(1);scanf("%d",&m);for(int len,i=1;i<=m;i++) {x.set();scanf("%s",s);len=strlen(s);Updata(len);x&=pol[hd.Patten(s,len)];scanf("%s",s);len=strlen(s);reverse(s,s+len);Updata(len);x&=pol[bk.Patten(s,len)];ans=x.count();printf("%d\n",ans);}return 0; }
View Code
转载于:https://www.cnblogs.com/ihopenot/p/6764914.html
Bzoj4212--神牛养成计划相关推荐
- [BZOJ4212]神牛的养成计划
[BZOJ4212]神牛的养成计划 试题描述 Hzwer 成功培育出神牛细胞,可最终培育出的生物体却让他大失所望...... 后来,他从某同校女神 牛处知道,原来他培育的细胞发生了基因突变,原先决定神 ...
- BZOJ 4212: 神牛的养成计划
4212: 神牛的养成计划 Time Limit: 10 Sec Memory Limit: 512 MB Submit: 142 Solved: 30 [Submit][Status][Disc ...
- 4212: 神牛的养成计划
4212: 神牛的养成计划 Time Limit: 10 Sec Memory Limit: 256 MB Submit: 86 Solved: 20 [Submit][Status][Discu ...
- 正式启动|2020腾讯犀牛鸟云开发校园技术布道师养成计划
为顺应信息技术行业发展趋势及人才需求,促进新时代云计算领域人才培养,在信息技术新工科产学研联盟的指导下,由腾讯云.腾讯高校合作和图灵教育联合主办,牛客网协办的2020腾讯犀牛鸟云开发校园技术布道师养成 ...
- (转)游戏程序员养成计划 (更新2010.11.6)
游戏程序员养成计划 (更新2010.11.6) 原文地址:http://www.cnblogs.com/clayman/archive/2009/05/17/1459001.html#2241553 ...
- 2021腾讯犀牛鸟校园布道师养成计划丨百校同行
千里之行,基于硅步:万里之船,成于罗盘.2021腾讯犀牛鸟云开发新生工程教育"百校同行"--「云开发校园布道师养成计划」 正式回归! 本次布道师养成计划为高校学生打造的高自由度学习 ...
- 【周记】腾讯犀牛鸟「云开发」校园技术布道师养成计划
一个月前开始试着学习微信小程序 恰好腾讯举办了这个[腾讯犀牛鸟「云开发」校园技术布道师养成计划]https://www.bilibili.com/read/cv4965254这个活动 技术增长 抛开活 ...
- 获奖结果公布|2020腾讯犀牛鸟云开发校园技术布道师养成计划
导语: 为顺应信息技术行业发展趋势及人才需求,促进新时代云计算领域人才培养,在信息技术新工科产学研联盟的指导下,由腾讯云.腾讯高校合作和图灵教育联合主办,牛客网协办的2020腾讯犀牛鸟云开发校园技术布 ...
- Linux达人养成计划I详细笔记(二)Linux分区与安装
本系列博文是听了课程Linux达人养成计划后的个人学习笔记,较为详细,供大家参考. 目录 第2章 Linux分区与安装 2.1系统分区 2.2 Linux安装 第2章 Linux分区与安装 2.1系统 ...
- 习惯养成计划申明(重要)
目录 习惯养成计划申明概览 具体习惯如下 各个习惯详细说明 习惯养成计划申明概览 从2018/11/12日起,我将开始养成一系列重要习惯. 各个习惯的坚持天数不同,因为部分习惯可能不适合长期坚持,因此 ...
最新文章
- 2018年人工智能和机器学习路在何方?听听美国公司怎么做
- run as gradle test,未执行@Test中的内容(待解决)
- linux 下去掉^M
- Cubieboard:享誉国外 Linux 圈子的中国产品
- 550什么意思_研报翻译官第二期:带你了解什么是CPI
- 上海东海学院计算机,上海东海职业技术学院
- 预报有雷雨,阴天了。
- SQL Server高级查询之子查询(单行子查询)
- 秀拍客电脑版 v1.0正式版
- 看完浪曦相关视频后的感受
- 如何在Excel里输入能打钩的选择框?
- 不翻墙 轻松打开github
- 命令提示符 查看已连接Wifi密码(忘记Wifi密码)
- duet太香啦啦啦啦啦啦啦啦啦啦
- wifi密码公式计算机,用定积分知识破译wifi密码,数学知识什么时候能派上用场?...
- 怎么在网站上设置qq在线客服
- 区块链杂谈---默克尔树(Merkle Tree)解析
- 李开复评论中国人工智能
- 电商商城之分类实现(重点)
- 对分布式和集群的理解
热门文章
- 标题栏打字效果_JS特效源码
- c++如何对结构体作为形参设置默认值
- The server sent a disconnect packet.Received ieof for nonexistent channel 0. (code: 2)
- C代码中的命名方式总结和改进
- MyEclipse Build path contains duplicate entry
- 右下角android sdk content loader 加载很慢的解决方法
- android 如何完全卸载Android Studio
- android 查找字符在字符串的位置
- ProgressDialog知识要点
- ABI(Application Binary Interface)