博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
「AHOI / HNOI2017」影魔
阅读量:6830 次
发布时间:2019-06-26

本文共 1523 字,大约阅读时间需要 5 分钟。

「AHOI / HNOI2017」影魔

解决这类比较复杂的区间贡献问题关键在于找到计算的对象。

比如这道题,我们计算的对象就是区间中间的最大值。

对于点\(i\),我们找到左边第一个比他大的位置\(L\),以及右边第一个比他大的位置\(R\)。当\(L,R\)同时被询问的区间包含是,\(i\)就会贡献\(p_1\)。当固定左端点为\(L\),右端在\([i+1,R-1]\)之间的时候会贡献\(p_2\);固定右端点\(R\)是同理。还要额外加上\(i,i+1\)贡献的\(p_1\)

具体实现就可以使用扫描线+树状数组之类的方法。

代码:

#include
#define ll long long#define N 200005using namespace std;inline int Get() {int x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9') {if(ch=='-') f=-1;ch=getchar();}while('0'<=ch&&ch<='9') {x=(x<<1)+(x<<3)+ch-'0';ch=getchar();}return x*f;}int n,m;ll p1,p2;int a[N];int L[N],R[N];void pre() { int st[N],top; st[top=0]=0; for(int i=1;i<=n;i++) { while(top&&a[st[top]]
=1;i--) { while(top&&a[st[top]]
b.l;}bool cmpR(const query &a,const query &b) {return a.r
del[N];int main() { n=Get(),m=Get(),p1=Get(),p2=Get(); for(int i=1;i<=n;i++) a[i]=Get(); pre(); for(int i=1;i<=m;i++) q[i].l=Get(),q[i].r=Get(),q[i].id=i; for(int i=1;i<=m;i++) { ans[q[i].id]+=(q[i].r-q[i].l)*p1; } sort(q+1,q+1+m,cmpl); for(int i=1;i<=n;i++) del[L[i]-1].push_back(R[i]+1); for(int i=1;i<=n;i++) T.add(R[i]+1,1); int tag=0; for(int i=1;i<=m;i++) { while(tag
=q[i].l) { T.add(R[tag]+1,tag); Size.add(R[tag]+1,1); while(del[tag].size()) { int x=del[tag].back(); T.add(R[x]+1,-x); Size.add(R[x]+1,-1); T.add(R[x]+1,x-L[x]); del[tag].pop_back(); } tag--; } ans[q[i].id]+=p2*(T.ask(q[i].r)-Size.ask(q[i].r)*q[i].l); } for(int i=1;i<=m;i++) cout<
<<"\n"; return 0;}

转载于:https://www.cnblogs.com/hchhch233/p/10491983.html

你可能感兴趣的文章
iOS 隐藏NavigationBar的方法
查看>>
最新.net和Java调用SAP RFC中间件下载
查看>>
(转)淘淘商城系列——导入商品数据到索引库
查看>>
Hibernate(十一):映射继承关系的三种方案
查看>>
oracle数据库使用之数据查询入门
查看>>
通过cat方式生成yum源
查看>>
属性动画的概念解析--实现星星控件
查看>>
java之JMX
查看>>
指针常量与常量指针
查看>>
在web.config中配置httpHandlers节点是的说明
查看>>
c++:数据类型的推断type_traits
查看>>
物理结构与逻辑结构
查看>>
Storm工作流程
查看>>
Opencv探索之路(十九):读写xml和yml文件
查看>>
Eclipse插件开发中的选择监听机制(Selection Provider-Listener)
查看>>
14.并发与异步 - 2.任务Task -《果壳中的c#》
查看>>
Linux时间子系统之三:jiffies
查看>>
使用 VisualVM 进行性能分析及调优
查看>>
linux升级OpenSSL
查看>>
《QQ欢乐斗地主》山寨版
查看>>