h*w的木板,放进一些1*L的物品,求每次放空间能容纳且最上边的位子。

每次找能放纸条而且是最上面的位置,询问完以后可以同时更新,所以可以把update和query写在同一个函数里。

 #include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std; const int maxn = + ; int _max[maxn << ];
int h, w, n, qL, qR, v; void build(int o, int L, int R)
{
if(L == R) { _max[o] = w; return; }
int M = (L + R) / ;
build(o*, L, M);
build(o*+, M+, R);
_max[o] = max(_max[o*], _max[o*+]);
} int query(int o, int L, int R)
{
if(L == R) { _max[o] -= v; return L; }
int M = (L + R) / ;
int ans;
if(_max[o*] >= v) ans = query(o*, L, M);
else ans = query(o*+, M+, R);
_max[o] = max(_max[o*], _max[o*+]);
return ans;
} int main()
{
//freopen("in.txt", "r", stdin); while(scanf("%d%d%d", &h, &w, &n) == )
{
if(h > n) h = n;
build(, , h);
for(int i = ; i < n; i++)
{
scanf("%d", &v);
if(_max[] < v) puts("-1");
else printf("%d\n", query(, , h));
}
} return ;
}

代码君

最新文章

  1. Android Studio新建一个HelloWorld 程序(App)
  2. plain framework 1 参考手册 入门指引之 许可协议
  3. Objective-C基础数据类型-NSSet[转]
  4. lsof用法简介
  5. javascript中静态方法、实例方法、内部方法和原型的一点见解
  6. SharePoint 2013 术语和术语集介绍
  7. 加强版for循环
  8. &lt;转&gt;ASP.NET学习笔记之在ASP.NET MVC中使用DropDownList
  9. SVN版本控制的使用
  10. PHP中cookies跨目录无法调用解决办法
  11. hibernate框架学习笔记8:一对多关系案例
  12. 在 Ubuntu 中使用 Visual Studio Code
  13. jQuery判断复选框checkbox的选中状态
  14. 【Java】接口(interface)VS抽象类
  15. WCF 与 Windows Store Client App
  16. AngularJS自定义Directive
  17. 矩阵链乘(UVa 442)
  18. Android学习系列(18)--App工程结构搭建
  19. angular学习笔记(十九)-指令修改dom
  20. mac下wordpress环境搭建

热门文章

  1. winform中的时间轴控件
  2. POJ 3978 Primes(素数筛选法)
  3. C#编程使用Managed Wifi API连接无线SSID
  4. UVA 11481 - Arrange the Numbers 数学
  5. OSVERSIONINFO的用法及实例
  6. 数组使用find查询用法
  7. hdu 3032 Nim or not Nim?(搜索打SG表)
  8. Junit单元测试学习笔记三
  9. Android是什么 之三手机之硬件形态
  10. 弹性ScrollView,和下啦刷新的效果类似 实现下拉弹回和上拉弹回