HDU2795-Billboard(点更点查)
来源:互联网 发布:手机淘宝字体放大 编辑:程序博客网 时间:2024/06/05 11:14
题意:
给出一个高h,宽w的板子,要写n条长为x的广告,问从1->h 可以写在哪个位置。
思路:
第一次写的时候没注意数据 造了个4*h的线段树,果断RE,再想了想n的数据很小,如果依据n来构造线段树,就解决了
在构造的时候注意左,右子树的val值的更新,以及构建当前树是几号,还有就是在当前节点如果max( 左,右) < 我们需要的宽度 就返回-1.
#include <stdio.h>#include <math.h>#include <iostream>#include <algorithm>#define lson i<<1,left,mid#define rson i<<1|1,mid+1,rightusing namespace std;int h,w,n;int ans=0,cnt;struct TreeNode{ int left_val,right_val,val,left,right,num;} Tree[800005];void Build(int i , int left , int right ){ Tree[i].left=left; Tree[i].right=right; if(left==right) { Tree[i].num=++cnt; Tree[i].val=w; return ; } int mid=(left+right)>>1; Build(lson); Build(rson); Tree[i].val=max(Tree[i<<1].val,Tree[i<<1|1].val); Tree[i].left_val=Tree[i<<1].val; Tree[i].right_val=Tree[i<<1|1].val;}void update(int i,int val){ if(Tree[i].val<val||Tree[i].num>h) { ans=-1; return ; } if(Tree[i].left== Tree[i].right ) { Tree[i].val-=val; ans=Tree[i].num; return ; } if(val<=Tree[i].left_val) { update(i<<1 ,val); } else { update(i<<1|1 ,val); } Tree[i].left_val=Tree[i<<1].val; Tree[i].right_val=Tree[i<<1|1].val; Tree[i].val=max(Tree[i<<1].val,Tree[i<<1|1].val);}int main(){ int x; while(~scanf("%d%d%d",&h,&w,&n)) { cnt=0; Build(1,1,n); while(n--) { scanf("%d",&x); ans=0; update(1,x); printf("%d\n",ans); } } return 0;}/*1 5 251*/
0 0
- HDU2795-Billboard(点更点查)
- hdu2795 Billboard
- HDU2795 Billboard
- HDU2795--Billboard
- HDU2795 Billboard
- hdu2795 Billboard
- hdu2795 Billboard
- hdu2795 Billboard
- hdu2795-Billboard
- hdu2795 Billboard
- hdu2795- Billboard
- HDU2795 Billboard
- hdu2795 Billboard
- HDU2795 billboard
- hdu2795 Billboard
- Billboard hdu2795
- HDU2795(Billboard)线段树
- hdu2795 解题报告 Billboard
- JS语法分析器
- Leetcode 467. Unique Substrings in Wraparound String 子串问题 结题报告
- GC 总结
- STL-List实现
- 在一台电脑上安装两个TOMCAT服务器
- HDU2795-Billboard(点更点查)
- 2016-12-05学习js内容
- 用ISO C++实现自己的信号槽(Qt另类学习)
- OpenCV-Python[第三章]——图像格式及操作方法
- raft到底是两段提交还是一段提交,以及raft的不确定性
- 计算机网络实验——VLAN划分
- 【CCF 俄罗斯方块】
- 李理:详解卷积神经网络
- git 带着修改checkout 到其他分支