博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
「雅礼集训 2017 Day2」水箱
阅读量:6923 次
发布时间:2019-06-27

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

题意分析

我们用\(f[i][j]\)表示当前到达第\(i\)个位置水位高度为\(j\)的答案

如果那么\(h[i]\)\(i\)\(i+1\)之间的支柱高度

那么如果\(j≤h[i]\)的话

\(f[i+1][0...h[i]]=max\{f[i][0...h[i]]\}\)

否则的话 直接让\(f[i+1][j]=f[i][j]\)

发现第二种可以直接继承

第一种可以区间求\(max\)然后区间\(max\)覆盖

使用线段树维护

同时满足限制的话使用区间加

CODE:

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define ll long long#define inf 0x7fffffff#define N 500008#define IL inline#define M 608611#define D double#define ull unsigned long long#define R registerusing namespace std;template
IL void read(T &_){ T __=0,___=1;char ____=getchar(); while(!isdigit(____)) {if(____=='-') ___=0;____=getchar();} while(isdigit(____)) {__=(__<<1)+(__<<3)+____-'0';____=getchar();} _=___ ? __:-__;}/*-------------OI使我快乐-------------*/int T,n,m,cnt,tot;int num[M],res[M],tre[M<<1],tag_cdy[M<<1],tag_wzy[M<<1];vector
cdy[M],wzy[M];IL void down(int si){ if(!tag_cdy[si]&&!tag_wzy[si]) return; int d1=tag_cdy[si],d2=tag_wzy[si]; tag_cdy[si<<1]+=d1; tag_cdy[si<<1|1]+=d1; tag_wzy[si<<1]=max(tag_wzy[si<<1]+d1,d2); tag_wzy[si<<1|1]=max(tag_wzy[si<<1|1]+d1,d2); tre[si<<1]=max(tre[si<<1]+d1,d2); tre[si<<1|1]=max(tre[si<<1|1]+d1,d2); tag_cdy[si]=tag_wzy[si]=0;}IL void add(int si,int lenow,int rinow,int le,int ri,int d){ if(le>ri) return; if(lenow==le&&ri==rinow) { tre[si]+=d; tag_cdy[si]+=d; tag_wzy[si]+=d; return; } down(si); int mid=(lenow+rinow)>>1; if(ri<=mid) add(si<<1,lenow,mid,le,ri,d); else if(mid
ri) return;// printf("now at TREE is %d %d (%d %d)\n",lenow,rinow,le,ri); if(lenow==le&&rinow==ri) { tre[si]=max(tre[si],d); tag_wzy[si]=max(tag_wzy[si],d); return; } down(si); int mid=(lenow+rinow)>>1; if(ri<=mid) update(si<<1,lenow,mid,le,ri,d); else if(mid
ri) return -inf;// printf("now at TREE is %d %d (%d %d)\n",lenow,rinow,le,ri); if(lenow==le&&rinow==ri) return tre[si]; down(si); int mid=(lenow+rinow)>>1; if(ri<=mid) return qury(si<<1,lenow,mid,le,ri); else if(mid

HEOI 2019 RP++

转载于:https://www.cnblogs.com/LovToLZX/p/10617726.html

你可能感兴趣的文章
全面详解Linux日志管理技巧
查看>>
翻译连载 | 第 11 章:融会贯通 -《JavaScript轻量级函数式编程》 |《你不知道的JS》姊妹篇...
查看>>
去中心化访问HTTP服务集群
查看>>
C语言switch语句的用法详解
查看>>
Linux系统和用户界面 中英文语言修改
查看>>
ELK(ElasticSearch, Logstash, Kibana)搭建实时日志分析平台
查看>>
centos6.9 上docker 的安装 及启动 和运行状态查看
查看>>
Linux安装类型和方法
查看>>
Java面试宝典(2)Java基础部分
查看>>
步入Android江湖 有你才会更精彩
查看>>
2011年度盘点云计算工具典型代表大检兵
查看>>
IT名列跳槽榜前三 软件人才需求爆棚
查看>>
决定留在开源社区
查看>>
我的友情链接
查看>>
android 控件-TextView用法整理
查看>>
HTTP教程2
查看>>
动态添加classpath
查看>>
条件判断
查看>>
linux cache
查看>>
PHP高效率写法
查看>>