Poj3294 Life Forms

Mac OS X 工具技巧:一文搞定个性化命令行窗口(iTerm2 + zsh + oh-my-zsh 配置Powerline风格) 本不想写这篇文章的,因为在Linux下已经配置过很多次,想着mac应该找篇文章一次就搞定了,结果还是踩坑,看了很多文章,不是某一点没不清楚,就是截图有问题或者命令有问题,官网又难得找等等……花了3个多小时才搞定,所以,还是来总结一篇文章就能够搞定的教程。 为什么要用zsh?用了这么多年的bash,不能说bash不好,不过当我用了zsh后发现,什么叫更好用。 配置过程稍微有点繁琐,但是你看过效果... 阅读详情

题目传送门

哈哈哈广义SAM真的好简(du)单(liu)啊

到时候讲课可以拿来祸害众生,Yeah!

好了开始讲题解,我们将所有字符串加入广义SAM里面

对每一个节点维护一个bitset表示它在哪些主串中出现过,让后标记上传就用或运算就好了

因为题目要求输出方案,加上一个dfs就可以了,复杂度O(L*n/64)

(其实题目本质就是parent树上每个节点为一个集合,求一个子树的并的大小而已,金牌之王zjt给出了一种更优秀的做法,每次将具有相同元素的节点按照dfs序排好,让后在相邻两个节点的lca上面做上标记-1,标记节点操作可以在构建广义SAM的时候就可以完成,求lca可以用树剖,这样复杂度就是O(L lg L),不过鉴于此题n<=100,上面bitset做法会更快)

当然,这道题也是SA的经典题,不过还是广义SAM比较好看~

#include<bitset>
#include<stdio.h>
#include<string.h>
#include<algorithm>
#define N 350010
using namespace std;
char c[N];
bitset<110> sz[N];
int s[N][26],mx[N],f[N],ans=0;
int n,m,lst=1,cnt=1,v[N],r[N];
inline int extend(int c){
	int p=lst,np=lst=++cnt,q,nq;
	mx[np]=mx[p]+1;
	for(;p&&!s[p][c];p=f[p]) s[p][c]=np;
	if(!p) return f[np]=1;
	q=s[p][c];
	if(mx[q]==mx[p]+1) f[np]=q;
	else{
		nq=++cnt;
		mx[nq]=mx[p]+1;
		f[nq]=f[q]; f[q]=f[np]=nq;
		memcpy(s[nq],s[q],26<<2);
		for(;p&&s[p][c]==q;p=f[p]) s[p][c]=nq;
	}
}
inline void Ex_extend(int c){
	int p=lst,q=s[p][c],nq;
	if(q){
		if(mx[p]+1==mx[q]) lst=q;
		else{
			lst=nq=++cnt;
			mx[nq]=mx[p]+1;
			f[nq]=f[q]; f[q]=nq;
			memcpy(s[nq],s[q],26<<2);
			for(;p&&s[p][c]==q;p=f[p]) s[p][c]=nq;
		}
	} else extend(c);
	sz[lst][m]=1;
}
inline void dfs(int x,int d){
	if(d!=mx[x] || d>ans) return;
	if(mx[x]==ans && sz[x].count()>m){ puts(c); return; }
	for(int i=0;i<26;++i)
		if(s[x][i]){ c[d]=i+'a'; dfs(s[x][i],d+1); c[d]=0; }
}
inline void init(){
	memset(s,0,sizeof s); 
	memset(f,0,sizeof f);
	memset(v,0,sizeof v);
	ans=0;
	for(;cnt;--cnt) sz[cnt]=0;
	cnt=1;
}
int _18520(){ init();
	scanf("%d",&n); if(!n) return 0;
	for(m=0;m<n;++m){
		scanf("%s",c); lst=1;
		for(int i=0,l=strlen(c);i<l;++i) Ex_extend(c[i]-'a');
	} m=n>>1; memset(c,0,sizeof c);
	for(int i=1;i<=cnt;++i) ++v[mx[i]];
	for(int i=1;i<=cnt;++i) v[i]+=v[i-1];
	for(int i=cnt;i;--i) r[v[mx[i]]--]=i;
	for(int p,i=cnt;i;--i){
		p=r[i]; sz[f[p]]|=sz[p];
		if(sz[p].count()>m) ans=max(ans,mx[p]);
	}
	if(!ans) puts("?"); else dfs(1,0); puts(""); return 1;
} 
int main(){ while(_18520()); }
Modbus RTU/TCP协议栈手写实现:主从站设计、功能码、CRC、异常响应 本文从协议栈架构、帧结构、功能码、CRC校验、异常响应、主从站设计等多个维度,完整阐述了Modbus RTU/TCP协议栈的手写实现方案。帧间隔机制是RTU的核心,T3.5超时检测决定了帧边界识别CRC16查表法以512字节ROM换取8倍性能提升,适合嵌入式功能码路由表实现可扩展的代码架构,便于新增功能异常响应机制保障协议健壮性,每个错误都有明确反馈Modbus TCP在RTU基础上增加MBAP头,实现以太网扩展多核RTOS环境下的并发访问与线程安全RS-485总线的电气隔离与浪涌保护。 阅读详情

相关推荐

ESP32 STA AP模式下,设备连接 ESP的AP 后无法上网,无法访问域名上网(或者Failed to enable NAPT)

ESP32 STA AP模式下,设备连接 ESP的AP 后无法上网,无法访问域名上网(或者Failed to enable NAPT)1.可能是ESP STA模式未成功连接到路由器,确保 STA 成功连接到外部网络。2.检查 STA 和 AP 的网络配置是否正确,避免子网冲突。3.ESP32的NAPT功能未正确启用,确保 menuconfig 中已启用 IP_NAPT。4.DNS服务器未正确配置。

qq_34885669的博客 1539

POJ 3294 后缀数组+单调栈 || POJ 2758 后缀数组

DC3 #pragma comment(linker, "/STACK:102400000,102400000") //#include<bits/stdc++.h> #include<cstdio> #include<cstring> #include<string> #include<vector> #include<stack...

打过ICPC/CCPC,学习ACM算法,Linux内核,Openharmony,加油努力开心珍惜 670

AI Agent辅助企业财务分析与预测

企业财务分析与预测是企业管理中至关重要的环节,准确的财务分析与预测能够帮助企业管理者做出明智的决策,合理规划资源,降低风险。然而,传统的财务分析与预测方法往往依赖于人工经验和简单的统计模型,存在效率低、准确性差等问题。随着人工智能技术的飞速发展,AI Agent作为一种智能的软件实体,能够自主地感知环境、做出决策并采取行动,为企业财务分析与预测带来了新的解决方案。

AI天才研究院 920

POJ3294:Life Forms——后缀数组

题面   POJ3294 解析    翻译一下题意:给定n个字符串,求最长的字符串 S 的长度,使得 S 至少为其中 n/2+1 个字符串的子串, 并输出所有的S,若不存在,则输出'?'。(n<=100)   此题与POJ3261类似(我的博客),都是相同套路,后缀数组+二分答案   当然是把每个字符串连在一起,组成一个大的字符串,再在上面建立后缀数组。但是这里有个细节...

weixin_30532973的博客 172

Index-TTS-1.5:多模态语音合成的技术演进与商业落地实践

本文深入探讨了Index-TTS-1.5在多模态语音合成领域的技术演进与商业落地。该模型基于GPT风格的自回归Transformer架构,通过优化条件编码器和引入字符-拼音混合建模,显著提升了语音生成的稳定性、精准度和真实感,实现了高质量的零样本语音克隆。文章还详细介绍了其云端体验、本地WebUI部署及ComfyUI集成等实战路径,并分析了其在虚拟数字人、个性化内容创作等商业场景中的应用潜力与挑战。

weixin_29098367的博客 401

ubuntu22.04 安装部署 openclaw

ubuntu22.04 安装部署 openclaw

nalanxiaoxiao2011的博客 973

POJ - 3294 Life Forms

传送门:POJ - 3294 (类似题目POJ - 3450) 题意:给你n个字符串,求在不小于k/2个字符串中出现过的最长子串。 题解:首先将n个字符串连起来,中间用不一样且没出现过的字符连起来(这个地方让我wa了好几发!!),然后二分字串的长度,将后缀分成若干组,判断每组的后缀是否在不小于k个的原串中出现过,数组sum记录每个最长字符串在原串中出现的位置sa[i]。 1 #...

只能过样例嘤嘤嘤的博客 253

【雕爷学编程】Arduino动手做(45)---红外光电避障传感器模块4

雕爷学编程,Arduino动手做,开源硬件,创客传感器,红外光电避障传感器模块

雕爷学编程 2503

poj 3294(后缀数组)

题意:给出n个字符串,求出现次数超过n/2次及以上的最长子串,如果有多组按字典序输出,没有输出?。 题解:多个字符串的处理方式是把所有串连接起来,用没有出现在串中且字典序最大的字符分割,然后二分出一个长度x去判断是否有长度不小于x的公共前缀出现了n/2次以上。需要注意为了判断两个公共前缀不在一个串中,要把每个串的起始位置记录到sum数组,然后连续的height[i]>=x情况下,如果sa[i]所在

俯瞰风景 726

在 ABAP Cloud 中玩转 CL_ABAP_PARALLEL 并行处理:从原理到实战

ABAP并行处理框架CL_ABAP_PARALLEL解析 本文系统介绍了SAP ABAP环境中实现并行处理的CL_ABAP_PARALLEL框架。该框架通过封装异步RFC和对话进程,为开发者提供了面向对象的API,显著提升大批量数据处理的效率。 文章首先分析了ABAP环境需要并行处理的原因:传统的串行处理在面对百万级数据时效率低下。然后详细介绍了CL_ABAP_PARALLEL的设计思路,它是一个"小型线程池"式的同步并行框架,适用于批量计算场景。此外,文章重点讲解了控制并行任务的关键参

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 339

23、电生理与CSD分析:探索大脑活动的前沿技术

本文介绍了电生理与电流源密度(CSD)分析在探索大脑活动中的前沿应用。从电生理技术的发展现状,到局部场电位(LFPs)的起源与解释,重点阐述了CSD分析的原理、实验方法及其在绘制皮层兴奋流、解析突触输入和研究自发振荡中的广泛应用。文章还总结了该领域的优势与挑战,并展望了技术改进、多模态融合、数据分析创新及临床拓展的未来方向,展示了这些技术在揭示大脑功能机制中的关键作用。

Apple的专栏 119

poj3294Life Forms(后缀数组)

题意:输入n个DNA序列,你的任务是求出一个长度最大的字符串,使得它在超过一半的DNA序列中连续出现。如果有多解,按照字典序从小到大输出所有解。 【输入格式】 输入包含多组数据。每组数据第一行为DNA串的个数n(1<=n<=100),以下n行每行为一个由不超过1000个小写字母组成的非空字符串。输入结束标志为n=0。 【输出格式】 对于每组数据,输出所有解,按照字典序从小到大排列。如果无解,

Hawkeye_z的博客 562

代谢组数据分析(十九):随机森林构建代谢组预后模型

建立胃癌(GC)预后模型时,从队列3中的181名患者中,使用右删失结果数据进行了随机分层抽样,分为训练数据集(n = 121)和测试数据集(n = 60)。训练了一个包含1000棵树的随机生存森林(RSF)模型,根据它们基于排列的特征重要性来选择突出的特征。通过再次训练随机生存模型,并选取28种代谢物,建立了显示出色预测能力(AUROC = 0.832,95% CI:0.697-0.951)的最佳模型,用于预测测试数据集中GC患者的生存结果。

专注生信领域 1713

poj3294 Life Forms

题目大意:给n个字符串,求最大长度的字符串,使其在一半以上的字符串中出现过,按字典序输出 后缀数组。。。二分最大长度,再按sa数组的顺序记录不同最长字符串出现的位置。 代码: #include<iostream> #include<stdio.h> #include<string.h> #include<set> #include&lt...

Max的博客 401

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

【POJ 3294】Life Forms

【链接】h在这里写链接 【题意】 给你n个字符串。 让你找最长的字符串s; 这个s在超过一半的子串里面都有出现过且长度大于n/2; 如果有多个,输出多行。 (按字典序输出) 也没说会不会出现大写。 【题解】 后缀数组+二分。 把每个字符串之间用一个没出现过的分隔符分开; (从'z'+1开始) 100*1000 + 100 大概10万多的样子,设置成15万就好...

185

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

POJ3294 Life Forms(后缀数组模板题)

http://poj.org/problem?id=3294 题意题意为给你n个字符串,求至少出现在向上取整n/2的个串的公共子串如果有多个就输出多个。 这道题和POJ3450一样的,可以看看我写的POJ3450; 对于答案的储存用vector就可以了 #include<iostream> #include<algorithm> #include<stdio...

KXL5180的博客 297

POJ 3294 Life Forms

D - Life Forms Time Limit:5000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit Status Practice POJ 3294 Description You may have wondered why most extraterrestria

\*zyeric*/ 607

POJ 3294 Life Forms(后缀数组)

题目链接:http://poj.org/problem?id=3294 解题思路: 求出所有 最长的 出现在超过一半所给字符串的 子串。 这题是在错自闭了可以去POJ discuss里面,有本题数据的。 反正我是疯狂OLE,RE了一晚上。 最后发现OLE是代码写错导致输出的串的数量不对(其实也就是WA),所以导致DEBUG的方向就出错了。 做法是二分答案,判断是否可行,可行就记录当前所...

shadiao.的博客 186

poj 3294 Life Forms

题意 输入n个DNA序列,你的任务是求出一个长度最大的字符串,使得超过一半的DNA序列中连续出现。如果有多解,按照字典序从小到大输出所有解。 解法 这是一道经典的题目,解法有很多。首先用不同的分隔字符把所有输入的字符串连接在一起。求这个新串的后缀数组和height数组,然后二分答案,每次只需要判断是否有一个长度为p的串在超过一半的串中连续出现。方法是把height分为若干段,每当height

思维迷宫 556

【后缀数组】【poj 3294】Life Forms

http://poj.org/problem?id=3294 hehe被虐 基本应用——不小于k个字符串的最长子串 //#define _TEST _TEST #include #include #include #include #include #include using namespace std; /***************************

willinglive 566

POJ3294Life Forms【后缀数组】

Language: Default Life Forms Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 11123   Accepted: 3068 Description You may have wondered why most extrater

走一步再走一步 920
上一篇: Poj3261 Milk Patterns
下一篇: Bzoj1208 宠物收养所
扩展的灰
博客等级 码龄12年 60粉丝 342原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值