BZOJ4553/洛谷P4093 [HEOI2016/TJOI2016]序列 动态规划 分治
原文链接http://www.cnblogs.com/zhouzhendong/p/8672434.html
题目传送门 - BZOJ4553
题目传送门 - 洛谷P4093
题解
设$Li$表示第$i$个位置最小值,$Ri$表示最大值$vi$表示原值。
那么如果$i$能到$j$这个位置,则满足:
$i<j$
$rj\leq xi$
$xi\leq li$
于是CDQ分治水过。
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | #include <bits/stdc++.h> using namespace std; const int N=100005; struct Node{ int id,v,L,R,res,x,y; void get(){ scanf ( "%d" ,&v),L=R=v,res=1; } }a[N]; bool cmp(Node a,Node b){ if (a.x!=b.x) return a.x<b.x; if (a.y!=b.y) return a.y<b.y; return a.id<b.id; } bool cmpid(Node a,Node b){ return a.id<b.id; } int n,m,tree[N]; int lowbit( int x){ return x&-x; } void add( int x, int y){ for (;x<=100000;x+=lowbit(x)) tree[x]=max(tree[x],y); } void clr( int x){ for (;x<=100000;x+=lowbit(x)) tree[x]=0; } int sum( int x){ int ans=0; for (;x>0;x-=lowbit(x)) ans=max(ans,tree[x]); return ans; } void CDQ( int L, int R){ if (L==R) return ; int mid=(L+R)>>1; CDQ(L,mid); for ( int i=L;i<=mid;i++) a[i].x=a[i].R,a[i].y=a[i].v; for ( int i=mid+1;i<=R;i++) a[i].x=a[i].v,a[i].y=a[i].L; sort(a+L,a+R+1,cmp); for ( int i=L;i<=R;i++) if (a[i].id<=mid) add(a[i].y,a[i].res); else a[i].res=max(a[i].res,sum(a[i].y)+1); for ( int i=L;i<=R;i++) if (a[i].id<=mid) clr(a[i].y); sort(a+L,a+R+1,cmpid); CDQ(mid+1,R); } int main(){ scanf ( "%d%d" ,&n,&m); for ( int i=1;i<=n;i++) a[i].get(),a[i].id=i; for ( int i=1,x,y;i<=m;i++){ scanf ( "%d%d" ,&x,&y); a[x].L=min(a[x].L,y); a[x].R=max(a[x].R,y); } memset (tree,0, sizeof tree); CDQ(1,n); int ans=0; for ( int i=1;i<=n;i++) ans=max(ans,a[i].res); printf ( "%d" ,ans); return 0; } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App