HDU 2795 Billboard(线段树-水题,模板题)
来源:互联网 发布:浪拍云的淘宝人生 编辑:程序博客网 时间:2024/06/05 02:40
#include <iostream>#include <cstdio>#include <fstream>#include <algorithm>#include <cmath>#include <deque>#include <vector>#include <queue>#include <string>#include <cstring>#include <map>#include <stack>#include <set>#include <list>#define INF 0x3f3f3f#define maxn 200000 + 50#define juzheng 300#define ll long longusing namespace std;//Date:2017-9-6//Author:HarryBlackCatstruct xx { int left; int right; int val;} tree[maxn + maxn + maxn + maxn];int h,w,n,arr[maxn + 1000],ans;void bulid_tree(int node,int left,int right) {//每个节点为,各区间的最大长度 tree[node].left = left; tree[node].right = right; if(left == right) tree[node].val = w;//初始化为w else { int mid = (left + right) / 2; bulid_tree(node * 2,left,mid); bulid_tree(node * 2 + 1,mid + 1,right); tree[node].val = max(tree[node * 2].val,tree[node * 2 + 1].val); }}void add(int node,int val) { if(tree[node].left == tree[node].right) { ans = tree[node].left;//找到最左最上的行数 tree[node].val -= val;//更新剩余的长度 return; } else { if(tree[node * 2].val >= val) add(node * 2,val); else if(tree[node * 2 + 1].val >= val) add(node * 2 + 1,val); tree[node].val = max(tree[node * 2].val,tree[node * 2 + 1].val);//求区间最长长度 }}int main() { while(~scanf("%d %d %d",&h,&w,&n)) { if(h > n)//当h大于n时无意义 h = n; bulid_tree(1,1,h); for(int i = 1; i <= n; i++) scanf("%d",&arr[i]); for(int i = 1; i <= n; i++){ if(tree[1].val >= arr[i]){//如果总区间都大于第i个公告,搜索得到合适的行数 add(1,arr[i]); printf("%d\n",ans); } else//否则直接输出-1 printf("-1\n"); } } return 0;}
阅读全文
1 0
- HDU 2795 Billboard(线段树-水题,模板题)
- hdu 2795 Billboard 线段树基础题
- HDU 2795 Billboard线段树
- HDU 2795 Billboard 线段树
- Billboard HDU 2795 线段树
- HDU 2795 Billboard 线段树
- hdu 2795 Billboard(线段树)
- HDU 2795 billboard 线段树
- HDU 2795 Billboard(线段树)
- HDU 2795 Billboard 线段树
- hdu 2795 Billboard 线段树
- hdu 2795(线段树)Billboard
- HDU 2795 Billboard(线段树)
- HDU--2795--Billboard--线段树
- hdu 2795 Billboard 线段树
- 【线段树】hdu 2795 BillBoard
- hdu 2795 Billboard 线段树
- hdu 2795 Billboard 线段树
- HDU 1754 I Hate It(线段树-水题,模板题)
- opencv对二值图像进行颜色反色操作
- 设计模式-生产者消费者模式 常见场景: 某个模块负责产生数据,这些数据由另一个模块来负责处理。产生数据的模块,就形象地称为生产者;而处理数据的模块,就称为消费者。 该模式还需要有一个缓冲区处于生
- subliem text 3编译C\C++
- 刷题 集合
- HDU 2795 Billboard(线段树-水题,模板题)
- 法国大革命(1789)
- 软件工程: 从java到放弃
- JSON详解
- 9月7日笔记(mysql数据库命令和JDBC)
- HDU 2838 Cow Sorting(树状数组-水题)
- 【LeetCode】Evaluate Reverse Polish Notation(逆波兰表达式求值) -(Linkedin) Medium ++
- Freeline
- ffplay看直播,简洁是美