hdu2795 线段树
//Accepted 6396 KB 3046 ms //线段树 //由于n只有200000,我们可以知道,当h>200000时,大于200000的部分是没有用的 //所以我们可以用n来创建线段树 //我的思路是: //维护一个已用区段的线段树 //用len表示当前已用的区段 //当需要贴一个宽度为wi的announcement时,先判断已用的区段能不能放下,如果不能这考虑len+1 (len+1<n && len+1<h) //如果上述两种情况都不能放下,这放不下,output -1; //test: //3 6 3 //4 //3 //2 //answer:1 2 1 #include <cstdio> #include <cstring> #include <iostream> #include <queue> #include <cmath> #include <algorithm> using namespace std; /** * This is a documentation comment block * 如果有一天你坚持不下去了,就想想你为什么走到这儿! * @authr songt */ ; int max(int a,int b) { return a>b?a:b; } struct node { int l,r; int tmax; }f[imax_n*]; int n,width,height; int w; void build(int t,int l,int r) { f[t].l=l; f[t].r=r; f[t].tmax=width; if (l==r) { return ; } ; build(*t,l,mid); build(*t+,mid+,r); } int query(int t,int l,int r) { if (f[t].l==l && f[t].r==r) { return f[t].tmax; } ; *t,l,r); else { *t+,l,r); *t,l,mid),query(*t+,mid+,r)); } } void update(int t,int l,int c) { if (f[t].l==l && f[t].r==l) { f[t].tmax=f[t].tmax-c; return ; } ; *t,l,c); *t+,l,c); f[t].tmax=max(f[*t].tmax,f[*t+].tmax); } int queryid(int t,int sw) { if (f[t].l==f[t].r && f[t].tmax>=sw) { return f[t].l; } *t].tmax>=sw) *t,sw); *t+,sw); } void slove() { ; ;i<n;i++) { scanf("%d",&w); if (w>width) { printf("-1\n"); continue; } ,,len); if (temp_w>=w) { ,w); printf("%d\n",t); update(,t,w); } else { if (len<height && len<n) { printf(); update(,len+,w); len++; } else { printf("-1\n"); } } } } int main() { while (scanf("%d%d%d",&height,&width,&n)!=EOF) { build(,,n); slove(); } ; }
//Accepted 6396 KB 2250 ms #include <cstdio> #include <cstring> #include <iostream> #include <queue> #include <cmath> #include <algorithm> using namespace std; /** * This is a documentation comment block * 如果有一天你坚持不下去了,就想想你为什么走到这儿! * @authr songt */ int max(int a,int b) { return a>b?a:b; } int min(int a,int b) { return a<b?a:b; } struct node { int l,r; int tmax; }f[*]; int n,w,h; void build(int t,int l,int r) { f[t].l=l; f[t].r=r; f[t].tmax=w; if (l==r) return ; ; build(*t,l,mid); build(*t+,mid+,r); } int query(int t,int c) { if (f[t].l==f[t].r && f[t].tmax>=c) { f[t].tmax=f[t].tmax-c; return f[t].l; } ; ; *t].tmax>=c) res=query(*t,c); else *t+].tmax>=c) res=query(*t+,c); f[t].tmax=max(f[*t].tmax,f[*t+].tmax); return res; } void slove() { int x; ;i<=n;i++) { scanf("%d",&x); ].tmax>=x) { printf(,x)); } else { printf("-1\n"); } } } int main() { while (scanf("%d%d%d",&h,&w,&n)!=EOF) { build(,,min(h,n)); slove(); } ; }
hdu2795 线段树的更多相关文章
- hdu2795 线段树 贴广告
Billboard Time Limit: 20000/8000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- hdu2795线段树
//=========================================== //segment tree //final version //by kevin_samuel(fenic ...
- hdu2795(线段树单点更新&区间最值)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2795 题意:有一个 h * w 的板子,要在上面贴 n 条 1 * x 的广告,在贴第 i 条广告时要 ...
- HDU2795线段树入门 简单查询和修改
http://acm.hdu.edu.cn/showproblem.php?pid=2795 #include<iostream> using namespace std; ; int h ...
- 线段树-hdu2795 Billboard(贴海报)
hdu2795 Billboard 题意:h*w的木板,放进一些1*L的物品,求每次放空间能容纳且最上边的位子 思路:每次找到最大值的位子,然后减去L 线段树功能:query:区间求最大值的位子(直接 ...
- HDU-------(2795)Billboard(线段树区间更新)
Billboard Time Limit: 20000/8000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- 【HDU2795】Billboard(线段树)
大意:给一个h*w的格子,然后给出多个1*w的板子往格子里面填,如果有空间尽量往上一行填满,输出行数,无法填补,则输出-1: 可以使用线段树转化问题,将每一排的格子数目放到每一个叶子节点上,然后每有一 ...
- 【线段树求最靠前】【HDU2795】【Billboard】
题意: 有一个H*W的广告牌,当插入一个广告时(1*Wi),问最靠前的插入方式是什么 新生赛有个类似的题目,可惜当时居然没水过去. 果断用线段树做 以H为线段 建树,存[l,r]中最大的宽度,因为区间 ...
- HDU2795 billboard【转化为线段树。】
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2795 hhanger大神的题目,水题都得有点思维. 题意:h*w的木板,放进一些1*L的物品,求每次放 ...
随机推荐
- 2016-6-15-de novo文献阅读
准备读四篇denovo的文献: Nature Biotechnology(2015) - Sequencing of allotetraploid cotton (Gossypium hirsutum ...
- Linq分页查询
//Linq分页查询 int pageIndex = Convert.ToInt32(HttpContext.Current.Request["PageIndex"]); int ...
- SDWebImage源码刨根问底
前言: SDWebImage是iOS中一款处理图片的框架, 使用它提供的方法, 一句话就能让UIImageView,自动去加载并显示网络图片,将图片缓存到内存或磁盘缓存,正好有阅读开源项目的计划,于是 ...
- SQL SERVER类型与C#类型对照
SQL SERVER类型 C#类型 精确数字 bigint 从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数 ...
- 再谈HTML
关于WEB 采用B/S计算模式开发的应用程序我们一般称为Web应用程序. WEB三大层面: 网页的结构部分:结构的定义使用HTML语言(超文本标记语言Hyper Text Mark Up Langua ...
- 转载css层级优先级。
解读CSS样式优先级(修改门户自定义样式必读) 一.什么是CSS优先级?所谓CSS优先级,即是指CSS样式在浏览器中被解析的先后顺序.当同一个元素(或内容)被多个CSS选择符选中时,就要按照优先权取舍 ...
- poi 读取 excel(.xlsx) 2007及以上版本
1.注意的一点是sh.getLastRowNum(),比实际的行数少一行 涉及到的包:
- Linux CC攻击脚本
CC(ChallengeCollapsar)主要是用来攻击页面的.大家都有这样的经历,就是在访问论坛时,如果这个论坛比较大,访问的人比较多,打开页面的速度会比较慢,访问的人越多,论坛的页面越多,数据库 ...
- 修改weblogic部署的应用名称
通过weblogic管理后台console进行发布本地项目的时候,它会默认以WEB-INF的上一级目录作为访问路径,如,假如你的项目WEB-INF目录的上一层是WebRoot,那么发布后,访问的路径默 ...
- 实现OAUTH协议 实现 QQ 第三方登录效果
1.OAuth的简述 OAuth(Open Authorization,开放授权)是为用户资源的授权定义了一个安全.开放及简单的标准,第三方无需知道用户的账号及密码,就可获取到用户的授权信息,并且这是 ...