bzoj 4553 && HEOI2016 day1t3 seq
一个序列在所有变换中都单调不降的条件是i<j,a[i]<=min[j],mx[i]<=a[j],所以套CDQ就行了。
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#define N 100005
#define inf 0x3f3f3f3f
using namespace std;
int n,m;
int a[N];
int f[N];
int mx[N],mn[N];
int tmp[N];
int v[N];
int res;
bool cmp(int x,int y)
{
if(x<=res&&y<=res)return mx[x]<mx[y];
if(x<=res)return mx[x]<=a[y];
if(y<=res)return a[x]<mx[y];
return a[x]<a[y];
}
int dp[N];
struct node
{
int lazy,zhi;
}aa[N*];
void push_down(int x)
{
if(aa[x].lazy!=)
{
aa[x*].zhi=aa[x*+].zhi=-inf;
aa[x*].lazy=aa[x*+].lazy=;
aa[x].lazy=;
}
return ;
}
int qur(int x,int l,int r,int ll,int rr)
{
if(l>=ll&&r<=rr)
{
return aa[x].zhi;
}
push_down(x);
int mid=(l+r)>>;
if(rr<=mid)return qur(x*,l,mid,ll,rr);
if(ll>mid)return qur(x*+,mid+,r,ll,rr);
return max(qur(x*,l,mid,ll,rr),qur(x*+,mid+,r,ll,rr));
}
void gai(int x,int l,int r,int pos,int z)
{
if(l==r)
{
aa[x].zhi=max(aa[x].zhi,z);return ;
}
push_down(x);
int mid=(l+r)>>;
if(pos<=mid)gai(x*,l,mid,pos,z);
else gai(x*+,mid+,r,pos,z);
aa[x].zhi=max(aa[x*].zhi,aa[x*+].zhi);
}
void solve(int l,int r)
{
if (l==r)
{
f[l]=max(f[l],);
return ;
}
int mid=(l+r)>>;
solve(l,mid);res=mid;
int cnt=;
for(int i=l;i<=r;i++)tmp[++cnt]=i;
sort(tmp+,tmp+cnt+,cmp);
aa[].lazy=;aa[].zhi=-inf;
for(int i=;i<=cnt;i++)
{
if(tmp[i]<=mid)gai(,,,a[tmp[i]],f[tmp[i]]);
else f[tmp[i]]=max(f[tmp[i]],qur(,,,,mn[tmp[i]])+);
}
solve(mid+,r);
}
int main()
{
scanf("%d%d",&n,&m);
memset(mx,0xcf,sizeof(mx));
memset(mn,0x3f,sizeof(mn));
for(int i=;i<=n;i++)
{
scanf("%d",&a[i]);
mx[i]=mn[i]=a[i];
}
for(int i=;i<=m;i++)
{
int t1,t2;
scanf("%d%d",&t1,&t2);
mx[t1]=max(mx[t1],t2);
mn[t1]=min(mn[t1],t2);
}
solve(,n);
int ans=;
for(int i=;i<=n;i++)ans=max(ans,f[i]);
printf("%d\n",ans);
return ;
}
bzoj 4553 && HEOI2016 day1t3 seq的更多相关文章
- BZOJ.4553.[HEOI2016&TJOI2016]序列(DP 树状数组套线段树/二维线段树(MLE) 动态开点)
题目链接:BZOJ 洛谷 \(O(n^2)\)DP很好写,对于当前的i从之前满足条件的j中选一个最大值,\(dp[i]=d[j]+1\) for(int j=1; j<i; ++j) if(a[ ...
- 洛谷 P4093: bzoj 4553: [HEOI2016/TJOI2016]序列
题目传送门:洛谷P4093. 题意简述: 给定一个长度为 \(n\) 的序列 \(a\). 同时这个序列还可能发生变化,每一种变化 \((x_i,y_i)\) 对应着 \(a_{x_i}\) 可能变成 ...
- BZOJ 4556 [HEOI2016/TJOI2016]字符串
BZOJ 4556 [HEOI2016/TJOI2016]字符串 其实题解更多是用后缀数组+数据结构的做法,貌似也不好写. 反正才学了 sam 貌似比较简单的做法. 还是得先二分,然后倍增跳到 $ s ...
- BZOJ 4553 Tjoi2016&Heoi2016 序列
Tjoi2016&Heoi2016序列 Description 佳媛姐姐过生日的时候,她的小伙伴从某宝上买了一个有趣的玩具送给他.玩具上有一个数列,数列中某些项的值 可能会变化,但同一个时刻最 ...
- BZOJ 4553 [Tjoi2016&Heoi2016]序列 ——CDQ分治 树状数组
考虑答案的构成,发现是一个有限制条件的偏序问题. 然后三个维度的DP,可以排序.CDQ.树状数组各解决一维. #include <map> #include <cmath> # ...
- 【50.40%】【BZOJ 4553】[Tjoi2016&Heoi2016]序列
Time Limit: 20 Sec Memory Limit: 128 MB Submit: 371 Solved: 187 [Submit][Status][Discuss] Descript ...
- 【BZOJ】1798: [Ahoi2009]Seq 维护序列seq(线段树)
http://www.lydsy.com/JudgeOnline/problem.php?id=1798 之前写了个快速乘..........................20多s...... 还好 ...
- 【BZOJ 1798】 [Ahoi2009]Seq 维护序列seq
Description 老师交给小可可一个维护数列的任务,现在小可可希望你来帮他完成. 有长为N的数列,不妨设为a1,a2,…,aN .有如下三种操作形式: (1)把数列中的一段数全部乘一个值; (2 ...
- BZOJ.4555.[HEOI2016&TJOI2016]求和(NTT 斯特林数)
题目链接 \(Description\) 求\[\sum_{i=0}^n\sum_{j=0}^iS(i,j)\times 2^j\times j!\mod 998244353\] 其中\(S(i,j) ...
随机推荐
- Android自定义控件(二)
这一篇主要来讲一下自定义控件中的自定义viewgroup,我们以项目中最常用的下拉刷新和加载更多组件为例 简单介绍一下自定义viewgroup时应该怎么做. 分析:下拉刷新和加载更多的原理和步骤 自定 ...
- Windows 10 IoT Serials 3 - Windows 10 IoT Core Ardunio Wiring Mode
Maker社区和智能硬件的朋友一定知道Arduino,很多3D打印机都是用它做的.为了迎合这一大块市场,微软在基于Intel Galileo的Windows 8.1 IoT中就是使用这种基于Ardui ...
- C#.NET万能数据库访问封装类(ACCESS、SQLServer、Oracle)
using System; using System.Collections; using System.Collections.Specialized; using System.Data; usi ...
- Ant :Property
Property Ant 内置的Property 系统属性 Ant附加的属性 自定义Property Ant :Property properties是由key-value组成的集合,就是Java中 ...
- JDBC API Description
package java.sql description What the JDBCTM 4.2 API Includes Versions What the java.sql Package Con ...
- 关于xml的使用。
使用的常用类: XmlSerializer ParaMapping StreamReader DirectionaryInfo FileInfo using as object 例子: public ...
- Oracle索引梳理系列(八)- 索引扫描类型及分析(高效索引必备知识)
版权声明:本文发布于http://www.cnblogs.com/yumiko/,版权由Yumiko_sunny所有,欢迎转载.转载时,请在文章明显位置注明原文链接.若在未经作者同意的情况下,将本文内 ...
- SQL Server 2008 R2——使用FULL OUTER JOIN实现多表信息汇总
=================================版权声明================================= 版权声明:原创文章 谢绝转载 请通过右侧公告中的“联系邮 ...
- Red Hat Enterprise Linux Server 6.5安装GCC 4.9.2
现在很多程序员都应用GCC,怎样才能更好的应用GCC.目前,GCC可以用来编译C/C++.FORTRAN.JAVA.OBJC.ADA等语言的程序,可根据需要选择安装支持的语言.本文以在RedHat L ...
- Nova Suspend/Rescue 操作详解 - 每天5分钟玩转 OpenStack(35)
本节我们讨论 Suspend/Resume 和 Rescue/Unrescue 这两组操作. Suspend/Resume 有时需要长时间暂停 instance,可以通过 Suspend 操作将 in ...