poj3294Life Forms
我真是一个垃圾
模板题都不会做
模板题还要别人教
细节写法还要别人教
别人一分钟AC,教我算法还教我写法,最后写出来的别人算法还比我优秀一百倍
数据结构把脑子学傻了,看到题就想怎么用数据结构,半天做不来
别人1sAC,不是单调的么
纠结中间插啥子值,人家告诉我转为Int
最后还傻逼地写st表求lcp,人家直接单调队列
题读错了de半个晚上,还一直pe
mdzz,全世界都找不出第二个比我更蠢的人了
人家都线性代数学得风声水起了,我还在写傻逼题
全机房就我不会线性代数了
包括高一在内就我不知道FFT原理
啥子特征多项式,啥子特征值,
啥子啦普拉斯展开,啥子多项式求逆,啥子多项式取模,啥子多项式exp,啥子多点插值快速求值,别人信手拈来
就我一个傻逼连线性代数的门都没摸到
我tm连求导都求不陈展,微积分根本不知道是什么东西
数学烂得一塌糊涂
垃圾的一比
全机房最垃圾
心情不好,就想骂自己
我就tmd是一个世界无敌大傻逼
//Achen
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<vector>
#include<cstdio>
#include<queue>
#include<cmath>
#include<set>
#define For(i,a,b) for(int i=(a);i<=(b);i++)
#define Rep(i,a,b) for(int i=(a);i>=(b);i--)
const int N=;
typedef long long LL;
typedef double db;
using namespace std;
int n,s[N],bl[N],r[N],lcp[N],len;
char ss[N]; template<typename T> void read(T &x) {
char ch=getchar(); x=; T f=;
while(ch!='-'&&(ch<''||ch>'')) ch=getchar();
if(ch=='-') f=-,ch=getchar();
for(;ch>=''&&ch<='';ch=getchar()) x=x*+ch-''; x*=f;
} int sa[N],rak[N],h[N],st[N][];
void make_hight(int n) {
For(i,,n-) rak[sa[i]]=i;
for(int i=,k=;i<n;i++) {
if(!rak[i]) continue;
if(rak[i]==) {
int debug=;
}
if(k) k--;
int j=sa[rak[i]-];
while(s[i+k]==s[j+k]) k++;
h[rak[i]]=k;
st[rak[i]-][]=k;
}
For(j,,) For(i,,n-) if(i+(<<j)<n)
st[i][j]=min(st[i][j-],st[i+(<<j-)][j-]);
} int cmp(int a,int b,int y[],int k) {
int o1=a+k>=len?-:y[a+k];
int o2=b+k>=len?-:y[b+k];
return o1==o2&&y[a]==y[b];
} void make_sa(int n) {
static int c[N],t1[N],t2[N];
int m=,*x=t1,*y=t2,p;
For(i,,m-) c[i]=;
For(i,,n-) c[x[i]=s[i]]++;
For(i,,m-) c[i]+=c[i-];
Rep(i,n-,) sa[--c[x[i]]]=i;
for(int k=;k<=n;k<<=) {
p=;
For(i,n-k,n-) y[p++]=i;
For(i,,n-) if(sa[i]>=k) y[p++]=sa[i]-k;
For(i,,m-) c[i]=;
For(i,,n-) c[x[y[i]]]++;
For(i,,m-) c[i]+=c[i-];
Rep(i,n-,) sa[--c[x[y[i]]]]=y[i];
swap(x,y); x[sa[]]=; p=;
For(i,,n-)
x[sa[i]]=cmp(sa[i],sa[i-],y,k)?p-:p++;
m=p;
if(p>=n) break;
}
make_hight(n);
} int get_lcp(int i,int j) {
int k=;
for(k;i+(<<k)<=j;k++); if(k) k--;
return min(st[i][k],st[j-(<<k)][k]);
} int cnt[N],no[N],tot;
void solve() {
int ans=,pos=-; tot=;
while(pos+<len&&tot*<=n) {
pos++;
cnt[bl[sa[pos]]]++;
if(cnt[bl[sa[pos]]]==) tot++;
}
if(tot*<n) { puts("?"); return; }
lcp[]=get_lcp(,pos);
ans=lcp[];
For(i,,len-) {
no[i]=;
cnt[bl[sa[i-]]]--;
if(!cnt[bl[sa[i-]]]) tot--;
while(pos+<len&&tot*<=n) {
pos++;
cnt[bl[sa[pos]]]++;
if(cnt[bl[sa[pos]]]==) tot++;
}
if(tot*>=n) lcp[i]=get_lcp(i,pos);
else lcp[i]=;
ans=max(ans,lcp[i]);
if(lcp[i]==lcp[i-]&&h[i]>=lcp[i]) no[i]=;
}
if(!ans) { puts("?"); return; }
For(i,,len-) if(!no[i]&&lcp[i]==ans) {
For(j,sa[i],sa[i]+lcp[i]-)
printf("%c",'a'+s[j]);
puts("");
}
//puts("");
} //#define DEBUG
int main() {
#ifdef DEBUG
freopen("std.in","r",stdin);
//freopen(".out","w",stdout);
#endif
int id=,flag=;
for(;;) {
read(n);
if(!n) break;
len=; id=;
For(i,,n) {
scanf("%s",ss);
int tp=strlen(ss);
For(j,,tp-) { s[len++]=ss[j]-'a'; bl[len-]=i; }
s[len++]=++id;
}
For(i,,) cnt[i]=;
make_sa(len);
if(flag++) puts("");
solve();
}
return ;
}
poj3294Life Forms的更多相关文章
- POJ3294--Life Forms 后缀数组+二分答案 大于k个字符串的最长公共子串
Life Forms Time Limit: 500 ...
- POJ3294Life Forms(广义后缀自动机)(后缀数组+二分+数状数组)
You may have wondered why most extraterrestrial life forms resemble humans, differing by superficial ...
- POJ-3294-Life Forms(后缀数组-不小于 k 个字符串中的最长子串)
题意: 给定 n 个字符串,求出现在不小于 k 个字符串中的最长子串. 分析: 将 n 个字符串连起来,中间用不相同的且没有出现在字符串中的字符隔开,求后缀数组. 然后二分答案,将后缀分成若干组,判断 ...
- Wizard Framework:一个自己开发的基于Windows Forms的向导开发框架
最近因项目需要,我自己设计开发了一个基于Windows Forms的向导开发框架,目前我已经将其开源,并发布了一个NuGet安装包.比较囧的一件事是,当我发布了NuGet安装包以后,发现原来已经有一个 ...
- xamarin.forms新建项目android编译错误
vs2015 update3 新建的xamarin.forms项目中的android项目编译错误.提示缺少android_m2repository_r22.zip,96659D653BDE0FAEDB ...
- ASP.NET Forms 身份验证
ASP.NET Forms 身份验证 在开发过程中,我们需要做的事情包括: 1. 在 web.config 中设置 Forms 身份验证相关参数.2. 创建登录页. 登录页中的操作包括: 1. 验证用 ...
- Xamarin.Forms 简介
An Introduction to Xamarin.Forms 来源:http://developer.xamarin.com/guides/cross-platform/xamarin-forms ...
- C# 定时器 Timers.Timer Forms.Timer
1.定义在System.Windows.Forms里 Windows.Forms里面的定时器比较简单,只要把工具箱中的Timer控件拖到窗体上,然后设置一下事件和间隔时间等属性就可以了 //启动定时器 ...
- Xamarin.Forms 免费电子书
Xamarin Evolve 正在举行,现在已经放出2本免费的Xamarin.Forms 免费电子书,据现场的同学说这两天还有Xamarin.Forms 重磅消息发布: Creating Mobile ...
随机推荐
- 刚装完Linux就CPU占用率高
top命令发现如下三个进程占据了前三的CPU使用率 wpa_supplicant NetworkManager rsyslogd google发现前两个进程与无线网络有关,我的电脑是笔记本,插的有线, ...
- HTML和CSS标签命名规则
1.Images 存放一些网站常用的图片: 2.Css 存放一些CSS文件: 3.Flash 存放一些Flash文件: 4.PSD 存放一些PSD源文件: 5.Temp 存放所有临时图片和其它文件: ...
- Spring Boot集成Shiro实战
Spring Boot集成Shiro权限验证框架,可参考: https://shiro.apache.org/spring-boot.html 引入依赖 <dependency> < ...
- HDU 5726 线段树+dp
题意:给出一个序列,后q次询问,求给定区间gcd及整个序列有多少个序列的gcd和这个值相同 首先线段树维护区间gcd建树,之后预处理出每个gcd有多少个子序列,这时需要dp, dp[i][tmp]表示 ...
- Unity中DoTween的使用
在Unity手游开发中,经常用到插值运算,我们可以使用Mathf.Lerp自行去实现效果,但是使用插件提高了我们的开发效率,这里归结一下DoTween的基本使用方式以及效果说明: 直接代码: usin ...
- 2019-4-29-WPF-如何判断一个控件在滚动条的里面是用户可见
title author date CreateTime categories WPF 如何判断一个控件在滚动条的里面是用户可见 lindexi 2019-4-29 9:42:2 +0800 2019 ...
- zepto(mark)
Zepto的设计目的是提供 jQuery 的类似的API,但并不是100%覆盖 jQuery .Zepto设计的目的是有一个5-10k的通用库.下载并快速执行.有一个熟悉通用的API,所以你能把你主要 ...
- 使用FastJson转化Json格式
1.下载Jar包 http://repo1.maven.org/maven2/com/alibaba/fastjson/ 2.将jar包导入工程 3.示例 package nc.testFastJso ...
- yii2使用vendor文件夹下的的css文件
yii2 使用 vendor 下在css样式, 可以新建一个Asset,定义 public $sourcePath="@vendor/..",如:public $sourcePat ...
- BeanPostProcessor原理学习
<Spring源码解析>笔记 1.自定义的BeanPostProcessor @Component public class MyBeanPostProcessor implements ...