【线段树】 HDOJ 2795 Billboard
来源:互联网 发布:校外mac连不上知网 编辑:程序博客网 时间:2024/05/22 08:25
简单的线段树,线段树记录每一条线段中的最大值,不能记录线段中剩余的和。。。。。
#include <iostream>#include <sstream>#include <algorithm>#include <vector>#include <queue>#include <stack>#include <map>#include <set>#include <bitset>#include <cstdio>#include <cstring>#include <cstdlib>#include <cmath>#include <climits>#define maxn 200005#define eps 1e-6#define mod 200000007#define INF 99999999#define lowbit(x) (x&(-x))#define lson o<<1, L, mid#define rson o<<1 | 1, mid+1, Rtypedef long long LL;using namespace std;LL segtree[maxn<<2];LL h, w, n;LL ans, ok;LL cnt;void pushup(LL o){segtree[o]=max(segtree[o<<1], segtree[o<<1 | 1]);}void build(LL o, LL L, LL R){if(L==R){segtree[o]=w;return;}LL mid=(R+L)>>1;build(lson);build(rson);pushup(o);}void updata(LL o, LL L, LL R){if(segtree[o]<cnt) return;if(L==R){ans=L;ok=1;segtree[o]-=cnt;return;}LL mid=(R+L)>>1;if(segtree[o<<1]>=cnt) updata(lson);else updata(rson);pushup(o);}void solve(void){while(n--){scanf("%I64d",&cnt);ok=0;updata(1, 1, h);if(ok) printf("%I64d\n", ans);else printf("-1\n");}}int main(void){while(scanf("%I64d%I64d%I64d",&h,&w,&n)!=EOF){if(h>n) h=n;build(1, 1, h);solve();}return 0;}
0 0
- hdoj - 2795 -Billboard(线段树)
- hdoj 2795 Billboard 【线段树】
- 【线段树】 HDOJ 2795 Billboard
- HDOJ--2795--Billboard【线段树】
- hdoj--2795 Billboard(线段树)
- HDOJ 2795 Billboard (线段树)
- hdoj 2795 Billboard 【线段树】&&【二叉树】
- 【线段树-区间求最值】HDOJ Billboard 2795
- HDOJ 2795 Billboard (线段树)
- HDOJ 题目2795 Billboard(线段树单点更新)
- hdoj 2795 Billboard 【线段树 单点更新 + 维护区间最大值】
- hdoj Billboard 2795 (线段树 变换) 好题
- HDU 2795 Billboard线段树
- HDU 2795 Billboard 线段树
- Billboard HDU 2795 线段树
- HDU 2795 Billboard 线段树
- hdu 2795 Billboard(线段树)
- HDU 2795 billboard 线段树
- 3D对象鼠标像素拾取解决方案
- POJ 3683 Priest John's Busiest Day(2-SAT输出方案)
- 赵痰屹睾辛冈殉瘫雅馗质钨寺么睹
- yED Editor Getting Start
- android Region碰撞
- 【线段树】 HDOJ 2795 Billboard
- 功能机网络配置
- android 电源管理
- rake卸载安装,版本切换
- nodejs升级npm的命令
- 音频数据处理基础知识
- Android获得Root权限后文件系统仍然报Read-Only的问题
- NSSortDescriptor(数组排序)
- ASP.NET程序链接数据库字符串的处理