博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 2795 Billboard
阅读量:6155 次
发布时间:2019-06-21

本文共 1157 字,大约阅读时间需要 3 分钟。

HDU_2795

    尽管h的范围很大,但有一个有效的优化就是如果h>n那么可以直接令h=n,因为即便每行只贴1张海报,最后也只会占n行。

    之后就是将每行看成一个点,用线段树记录每行还剩多少空间即可。

#include
#include
#define MAXD 200010 int H, W, N, tree[4 * MAXD]; void build(int cur, int x, int y) {
int mid = (x + y) / 2, ls = 2 * cur, rs = 2 * cur + 1; tree[cur] = W; if(x == y) return ; build(ls, x, mid); build(rs, mid + 1, y); } void update(int cur) {
int ls = 2 * cur, rs = 2 * cur + 1; tree[cur] = tree[ls] > tree[rs] ? tree[ls] : tree[rs]; } void init() {
if(H > N) H = N; build(1, 1, H); } void refresh(int cur, int x, int y, int k) {
int mid = (x + y) / 2, ls = 2 * cur, rs = 2 * cur + 1; if(x == y) {
printf("%d\n", x); tree[cur] -= k; return ; } if(tree[ls] >= k) refresh(ls, x, mid, k); else refresh(rs, mid + 1, y, k); update(cur); } void solve() {
int i, j, k; for(i = 0; i < N; i ++) {
scanf("%d", &k); if(tree[1] < k) printf("-1\n"); else refresh(1, 1, H, k); } } int main() {
while(scanf("%d%d%d", &H, &W, &N) == 3) {
init(); solve(); } return 0; }

转载地址:http://yibfa.baihongyu.com/

你可能感兴趣的文章
11-02笔记图
查看>>
visual c++ 2010安装失败导致CRM2015安装失败
查看>>
web项目直接在浏览器上访问不需要带.jsp,直接ip地址加项目名 在web.xml里配置...
查看>>
一步一步使用Ext JS MVC与Asp.Net MVC 3开发简单的CMS后台管理系统之用户管理(3)...
查看>>
1+2+34-5+67-8+9=100?
查看>>
ELK系列~Fluentd对大日志的处理过程~16K
查看>>
安装appium桌面版和命令行版
查看>>
15款经典图表软件推荐 创建最漂亮的图表
查看>>
Python进阶量化交易场外篇4——寻找最优化策略参数
查看>>
5Linux流程控制语句-if、for、while、case语句、计划任务
查看>>
有哪些质量上乘的程序员必关注的网站或论坛
查看>>
正则表达式
查看>>
我理解的几种字符编码方式
查看>>
BZOJ-4706 B君的多边形 OEIS
查看>>
报错之解决方案1--找不到文件或文件夹
查看>>
spring容器加载完毕做一件事情(利用ContextRefreshedEvent事件)转
查看>>
OFFICE 2007 序列号
查看>>
07-JAVA继承与接口
查看>>
ubuntu15.10下sublime text3 无法输入中文解决办法
查看>>
LR web_custom_request
查看>>