博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
AC日记——琪露诺 洛谷 P1725
阅读量:6961 次
发布时间:2019-06-27

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

 

思路:

  单调队列+dp;

  然而劳资不会单调队列,所以,线段树水过;

 

来,上代码:

#include 
#include
#include
#include
using namespace std;#define maxn 200005struct TreeNodeType { int l,r,dis,mid;};struct TreeNodeType tree[maxn<<2];int n,lit,rit,ai[maxn];inline void in(int &now){ int if_z=1;now=0; char Cget=getchar(); while(Cget>'9'||Cget<'0') { if(Cget=='-') if_z=-1; Cget=getchar(); } while(Cget>='0'&&Cget<='9') { now=now*10+Cget-'0'; Cget=getchar(); } now*=if_z;}inline void tree_build(int now,int l,int r){ tree[now].l=l,tree[now].r=r; if(l==r) { in(tree[now].dis); return ; } tree[now].mid=l+r>>1; tree_build(now<<1,l,tree[now].mid); tree_build(now<<1|1,tree[now].mid+1,r); tree[now].dis=max(tree[now<<1].dis,tree[now<<1|1].dis);}int tree_query(int now,int l,int r){ if(tree[now].l==l&&tree[now].r==r) return tree[now].dis; if(l>tree[now].mid) return tree_query(now<<1|1,l,r); else if(r<=tree[now].mid) return tree_query(now<<1,l,r); else return max(tree_query(now<<1,l,tree[now].mid),tree_query(now<<1|1,tree[now].mid+1,r));}void tree_add(int now,int to,int x){ if(tree[now].l==tree[now].r) { tree[now].dis+=x; return ; } if(to<=tree[now].mid) tree_add(now<<1,to,x); else tree_add(now<<1|1,to,x); tree[now].dis=max(tree[now<<1].dis,tree[now<<1|1].dis);}int main(){ in(n),in(lit),in(rit); tree_build(1,0,n); for(int i=lit+1;i<=n;i++) { int l=i-rit,r=i-lit; if(r>=lit) tree_add(1,i,tree_query(1,max(l,lit),r)); } cout<

 

转载于:https://www.cnblogs.com/IUUUUUUUskyyy/p/6735468.html

你可能感兴趣的文章
我的友情链接
查看>>
MySQL二进制包使用mysql_upgrade版本更新升级MySQL 5.7
查看>>
css3文本溢出显示控制
查看>>
MySQL 可优化的一些参数详解
查看>>
JAVA中的内存映射文件
查看>>
磁盘管理1(磁盘碎片、磁盘格式转换)
查看>>
H5本地存储一
查看>>
LinuxMBR修复,引导修复。
查看>>
2016年上半年系统集成中项3月28日作业
查看>>
Redhat6.5(红帽6.5)配置yum本地源
查看>>
Unity3D动画存储插件
查看>>
awk:Nagios流量监控插件
查看>>
ipsec ***
查看>>
Ceph心跳与网络
查看>>
zabbix server 数据库迁移
查看>>
对接新通道的分析处理
查看>>
Linux01-bash脚本编程之七case语句及脚本选项进阶27
查看>>
Java记录 -11- 面向对象之封装续II
查看>>
Sybase Anywhere 8.0 DB数据库文件损坏的恢复
查看>>
hashMap理解
查看>>