hdu 2795 线段树之五
来源:互联网 发布:剑灵李小龙捏脸数据 编辑:程序博客网 时间:2024/05/20 10:51
将h与n的最小值用来作为建树的空间;
View Code
Problem : 2795 ( Billboard ) Judge Status : Accepted
RunId : 11310448 Language : G++ Author : lihaozhuzhuxia
Code Render Status : Rendered By HDOJ G++ Code Render Version 0.01 Beta
RunId : 11310448 Language : G++ Author : lihaozhuzhuxia
Code Render Status : Rendered By HDOJ G++ Code Render Version 0.01 Beta
#include <cstdio>#include <iostream>#include <cstring>using namespace std;struct p{ int l; int r; int w; int id;}tree[888888];int h,w;void build(int l,int r,int n){ tree[n].l=l; tree[n].r=r; tree[n].w=w; if(tree[n].l==tree[n].r) { tree[n].id=l; return; } int mid=(tree[n].l+tree[n].r)/2; build(l,mid,n*2); build(mid+1,r,n*2+1);}void change(int l,int r,int n,int k){ int mid=(tree[n].l+tree[n].r)/2; if(tree[n].l==tree[n].r) { tree[n].w+=k; return; } else if(r<=mid) { change(l,r,n*2,k); } else if(l>mid) { change(l,r,n*2+1,k); } tree[n].w=max(tree[n*2+1].w,tree[n*2].w);}int query(int l,int r,int n,int k){ int mid=(tree[n].l+tree[n].r)/2; if(tree[n].w<k) return -1; if(tree[n].l==tree[n].r) return tree[n].id; if(tree[n*2].w>=k) return query(l,mid,n*2,k); else if(tree[n*2+1].w>=k) return query(mid+1,r,n*2+1,k);}int main(){ int i,j,k,l,n,m,t; while(scanf("%d%d%d",&h,&w,&n)==3) { t=h; if(t>n) t=n; build(1,t,1); for(i=0;i<n;i++) { scanf("%d",&k); m=query(1,t,1,k); printf("%d\n",m); //cout<<tree[4].w; if(m!=-1) change(m,m,1,-k); } } return 0;}
0 0
- hdu 2795 线段树之五
- hdu 4288 五颗线段树
- hdu 2795 线段树
- hdu~2795~线段树
- hdu 2795线段树
- hdu 2795 线段树
- HDU 2795 线段树
- hdu 2795 线段树
- hdu~2795(线段树)
- HDU 2795 线段树
- hdu 2795 线段树
- hdu 2795(线段树)
- hdu 2795(线段树)
- hdu 2795 线段树
- HDU 2795 线段树
- HDU 2795 线段树
- hdu 1754 线段树之二
- hdu 1698 线段树之三
- jquery 给指定的表格添加行
- 在Ubuntu13上搭建vsftp错误
- 对于uitableview每组斗的吸附解决方案
- nginx配置文件上传大小
- zhkshedeke的第一篇CSDN博客
- hdu 2795 线段树之五
- 常用正则表达式
- matlab中可视化二维矩阵 imagesc
- Ubuntu12.04安装配置MySQL开发环境
- 华为2014 so 板间最佳路径的权值 Dijkstra学习
- 澄清关于TUN/TAP的概念
- hdu 2079 选课时间(题目已修改,注意读题)
- 强风对高层钢框架结构的影响分析
- 学习(一)自定义GridView