题解:SP138 POSTERS - Election Posters
Sol
Subtask 1
有一种简单的方式:将所有的海报先贴上去,然后在看每个位置是哪一张海报。
这个时间复杂度是
Subtask 2
因为
时间复杂度
code
#include<iostream> #include<map> #include<algorithm> using namespace std; int n=800005; struct Segment_tree{ int a[800005],w[4*800005],lzy[4*800005]; void pushup(int u) { w[u]=w[u<<1]+w[u<<1|1]; } void build(int u=1,int l=1,int r=n) { if(l==r) { w[u]=a[l]; return; } int mid=(l+r)/2; build(u<<1,l,mid); build(u<<1|1,mid+1,r); pushup(u); } bool InRangeOf(int L,int R,int l,int r) { return (l<=L)&&(R<=r); } bool OutRangeOf(int L,int R,int l,int r) { return (L>r)||(R<l); } void maketag(int u,int len,int x) { w[u]=x*len; lzy[u]=x; } void pushdown(int u,int l,int r) { int mid=(l+r)/2; if(lzy[u]){maketag(u<<1,mid-l+1,lzy[u]); maketag(u*2+1,r-mid,lzy[u]);} lzy[u]=0; } void update(int l,int r,int x,int u=1,int L=1,int R=n) { if(InRangeOf(L,R,l,r)) maketag(u,R-L+1,x); else if(!OutRangeOf(L,R,l,r)) { int mid=(L+R)/2; pushdown(u,L,R); update(l,r,x,u<<1,L,mid); update(l,r,x,u<<1|1,mid+1,R); pushup(u); } } int query(int l,int r,int u=1,int L=1,int R=n) { if(InRangeOf(L,R,l,r)) return w[u]; else if(!OutRangeOf(L,R,l,r)) { int mid=(L+R)/2; pushdown(u,L,R); return query(l,r,u<<1,L,mid)+query(l,r,u<<1|1,mid+1,R); } else return 0; } }a; map<int,int>dy,py; int tot=0,p[1000005],l[1000005],r[1000005]; bool f[1000005]; void lsh() { sort(p+1,p+tot+1); int len=unique(p+1,p+tot+1)-p-1; for(int i=1;i<=len;i++) dy[p[i]]=i,py[i]=p[i]; } int Main() { int m,ans=0; cin>>m; for(int i=1;i<=1000000;i++) f[i]=0; for(int i=1;i<=m;i++) { cin>>l[i]>>r[i]; p[++tot]=l[i]; p[++tot]=r[i]; } lsh(); for(int i=1;i<=m;i++) l[i]=dy[l[i]],r[i]=dy[r[i]]; for(int i=1;i<=n;i++) a.a[i]=0; a.build(); for(int i=1;i<=m;i++) a.update(l[i],r[i],i); for(int i=1;i<=n;i++) { int x=a.query(i,i); if(f[x]==0&&x!=0) { f[x]=1; ans++; } } cout<<ans<<endl; for(int i=1;i<=m;i++) dy[py[l[i]]]=dy[py[r[i]]]=0,py[l[i]]=py[r[i]]=0; return 0; } signed main() { ios::sync_with_stdio(0); cin.tie(0);cout.tie(0); int T; cin>>T; for(;T--;Main()); return 0; }
本文作者:sLMxf
本文链接:https://www.cnblogs.com/SLMXF/p/18564525
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步