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

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

第一眼看这题不知所云,现在已经能轻松分析,看样子这两天进步还是有的。这题h是10^9的,看起来有点吓人,但因为n只有20W,所以h是10^999也没用,当h很大时数据范围就被固定在n上了,这点要多谢chenan前辈的提醒。

1 #include 
2 #include
3 #define N 200005 4 int tree[4*N],D; 5 int max(int a,int b) 6 { 7 return a>b ?a :b; 8 } 9 void update(int n)10 {11 for(; n^1; n >>= 1)12 tree[n>>1] = max(tree[n],tree[n^1]);13 }14 int search(int cur,int k)15 {16 int lc=cur<<1,rc=lc|1;17 if(cur >= D)18 {19 tree[cur] -= k;20 update(cur);21 return cur-D+1;22 }23 if(tree[lc] >= k)24 search(lc,k);25 else if(tree[rc] >= k)26 search(rc,k);27 else return -1;28 }29 int main()30 {31 int h,w,n,i,k;32 while(~scanf("%d%d%d",&h,&w,&n))33 {34 for(D = 1; D < h && D < N; D <<= 1);35 memset(tree,0,sizeof(int ) *2*D);36 for(i = 0; i < D && i < h; i++)37 tree[D+i] = w;38 for(i = D-1; i > 0; i--)39 tree[i] = max(tree[i<<1],tree[i<<1|1]);40 while(n--)41 {42 scanf("%d",&k);43 printf("%d\n",search(1,k));44 }45 }46 return 0;47 }

 

转载于:https://www.cnblogs.com/lzxskjo/archive/2012/07/13/2590915.html

你可能感兴趣的文章
各大Oj平台介绍 刷题平台
查看>>
MyEclipse------如何连接MySQL
查看>>
如何利用脚本实现MySQL的快速部署以及一机多实例的部署
查看>>
uva 11270 - Tiling Dominoes(插头dp)
查看>>
[翻译] - <Entity Framework> - 直接执行数据库命令
查看>>
异常:System.BadImageFormatException,未能加载正确的程序集XXX
查看>>
Unity3D架构设计NavMesh寻路(未完待续)
查看>>
DRM
查看>>
android:layout_gravity 和android:gravit的区别?
查看>>
数据库设计(2/9):域,约束和默认值(Domains, Constraints and Defaults)
查看>>
使用 LocalReport 对象进行打印
查看>>
[SLAM]2D激光扫描匹配方法
查看>>
省市区 - 三级联动通用化模块组件
查看>>
浅谈深度学习中潜藏的稀疏表达
查看>>
Android双击返回键退出Activity的两种方法
查看>>
正则表达式总结 java 等
查看>>
delphi query阻塞执行 长时间执行sql的解决办法
查看>>
maven打包异常
查看>>
转: Android开发的网络抓包
查看>>
webservice(CXF)基于3.1.1版本实例
查看>>