Little Sub and Isomorphism Sequences ZOJ - 4089
思路:可以反正 最长重构序列必然符合 此模式 x + { } 与 { } + x
那么 题意转化为了 找两个距离最长的相同的数。eeee 先离散化
然后 开 2e5 个set 可插入可删除的维护 每个数的 出现的位置。
然后 。 如果有set .size > = 2 则可以更新。最值 。最值可用线段树or mulitset 维护
#include<bits/stdc++.h>
using namespace std;
#define maxn 223456
map<int,int>vis;
set<int>val[maxn];
set<int>::iterator it,ib;
int tree[maxn*4],n,ans;
int t,a[maxn],m,cnt,op,x,y;
void up(int root)
{
tree[root]=max(tree[root*2],tree[root*2+1]);
}
void updata(int root,int l,int r,int pos,int ad)
{
if(pos>r||pos<l)return ;
if(l==r)
{
tree[root]=ad;
return;
}
int mid=(l+r)/2;
updata(root*2,l,mid,pos,ad);
updata(root*2+1,mid+1,r,pos,ad);
up(root);
}
int main()
{
scanf("%d",&t);
while(t--)
{
vis.clear();
for(int i=0; i<=cnt; i++)
val[i].clear();
memset(tree,0,sizeof(tree));
cnt=0;
scanf("%d%d",&n,&m);
for(int i=1; i<=n; i++)
{
scanf("%d",&a[i]);
if(vis[a[i]]==0)
vis[a[i]]=++cnt;
val[vis[a[i]]].insert(i);
}
for(int i=1; i<=cnt; i++)
{
if(val[i].size()>=2)
{
ib=--(val[i].end());
it=val[i].begin();
int dd=*ib-*it;
updata(1,1,cnt,i,dd);
}
}
while(m--)
{
scanf("%d",&op);
if(op==2)
{
if(tree[1]<1)
printf("-1\n");
else
printf("%d\n",tree[1]);
}
else
{
scanf("%d%d",&x,&y);
val[vis[a[x]]].erase(x);
if(val[vis[a[x]]].size()<2)
updata(1,1,cnt,vis[a[x]],0);
else
{
ib=--(val[vis[a[x]]].end());
it=val[vis[a[x]]].begin();
int dd=*ib-*it;
updata(1,1,cnt,vis[a[x]],dd);
}
a[x]=y;
if(vis[y]==0)
vis[y]=++cnt;
val[vis[y]].insert(x);
if(val[vis[a[x]]].size()<2)
updata(1,1,cnt,vis[a[x]],0);
else
{
ib=--(val[vis[a[x]]].end());
it=val[vis[a[x]]].begin();
int dd=*ib-*it;
updata(1,1,cnt,vis[a[x]],dd);
}
}
}
}
return 0;
}
Little Sub and Isomorphism Sequences ZOJ - 4089的更多相关文章
- ZOJ Monthly, January 2019 Little Sub and Isomorphism Sequences 【离线离散化 + set + multiset】
传送门:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5868 Little Sub and Isomorphism Seque ...
- ZOJ - 4089 :Little Sub and Isomorphism Sequences (同构 set)
Little Sub has a sequence . Now he has a problem for you. Two sequences of length and of length are ...
- ZOJ Monthly, January 2019 I Little Sub and Isomorphism Sequences(set 妙用) ZOJ4089
写这篇博客来证明自己的愚蠢 ...Orz 飞机 题意:给定你个数组,以及一些单点修改,以及询问,每次询问需要求得,最长的字串长度,它在其他位置存在同构 题解:经过一些奇思妙想后 ,你可以发现问题是传 ...
- ZOJ-4089-Little Sub and Isomorphism Sequences
给定你个数组,以及一些单点修改,以及询问,每次询问需要求得,最长的字串长度,它在其他位置存在同构. 当存在两个不相交的区间同构时,如: 1.2.…….n -1.n.n + 1.…….m.m + 1.m ...
- ZOJ Monthly, January 2019
A: Little Sub and Pascal's Triangle Solved. 题意: 求杨辉三角第n行奇数个数 思路: 薛聚聚说找规律,16说Lucas 答案是 $2^p \;\;p 为 n ...
- ZOJ Problem Set - 1338 Up and Down Sequences 解释 ac代码
这道题目我一开始一头雾水,怎么都数不对,参考了下网上的博文,才弄懂. 题意是这样的,如果是上升序列,上升序列的长度不是所有上升数字的,是这么规定的,如果它与前一个数字构成上升,那么这个数字算上长度.所 ...
- ZOJ 3861 - Valid Pattern Lock
3861 - Valid Pattern Lock Time Limit:2000MS Memory Limit:65536KB 64bit IO Format:%lld & ...
- 【转载】图论 500题——主要为hdu/poj/zoj
转自——http://blog.csdn.net/qwe20060514/article/details/8112550 =============================以下是最小生成树+并 ...
- ZOJ 3233 Lucky Number
Lucky Number Time Limit: 5000ms Memory Limit: 32768KB This problem will be judged on ZJU. Original I ...
随机推荐
- MySql的Communications link failure解决办法
在使用JDBC连接mysql时可能会遇到以下错误: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications li ...
- vmware彻底隐藏控制栏白条
vmware全屏模式都会在屏幕顶端留一条细细的条. 选择查看,里面有个独占模式.选中该模式,就可以达到完全全屏的效果. 但是进入独占模式后,无法再在多个系统间来回切换,使用ctrl+alt可以切换回正 ...
- 关于dfs
DFS 关于dfs,我的理解就是深度搜索,找到所有与入口相连的路径,可以用于迷宫求出口,利用递归的思想,进行搜索返回所有值. 比如,给你两个值分别表示迷宫的长和宽,迷宫有一个入口,一个出口,判断能否从 ...
- Numerical Analysis
PART1 <求解方程> 1,二分法 def bisect(f,a,b,TOL=0.000004): u_a = a u_b = b while(u_b-u_a)/2.0 > TO ...
- VS2015创建ASP.NET应用程序描述
你的 ASP.NET 应用程序 恭喜! 你已创建了一个项目 此应用程序包含: 显示“主页”.“关于”和“联系方式”之间的基本导航的示例页 使用 Bootstrap 进行主题定位 身份验证,如果选择此项 ...
- shell的进度条【转】
生成进度条的俩个shell脚本 !/bin/bash i= bar='' index= arr=( "|" "/" "-" "\\ ...
- apache无法启动报错No space left on device
apache无法启动报错No space left on device 故障现象:apache无法启动ipcs信号量很多 # service httpd startStarting httpd : [ ...
- VMware使两台windows虚拟机能够互相ping通
1.关闭防火墙 cmd命令行里输入:netsh firewall set opmode disable 2.测试如果还不能ping通,就把网络类型选nat类型 3.测试:vmware网关默认是.2
- json格式的中文输出显示
print json.dumps(json.loads(result),ensure_ascii=False)
- SpringBoot整合Mybatis【非注解版】
接上文:SpringBoot整合Mybatis[注解版] 一.项目创建 新建一个工程 选择Spring Initializr,配置JDK版本 输入项目名 选择构建web项目所需的state ...