USACO 2005 January Gold The Wedding Juicer
题目
题目链接,我只在poj上找到了题目,usaco居然上不去。
大意就是说有一些\(1\times 1\times 1\)的小方块堆在一起,问最多能装多少水。
我们在一次测试中出了这题,由于我写水题的能力太弱,挂掉了。
算法1
这是我当时想到的方法。
我们可以统计出每一层能装多少水。由于层数达到了\(10^9\),所以需要离散化一下。
我们可以用并查集来维护装水的面积。
时间复杂度:\(O(n^2 \alpha (n^2))\)。
算法2
这是《算法艺术》\(P89\)上的例题(同时也是POI的原题!)。
书上的想法是从外往内维护边缘的方块的高度,根据“木桶效应”,我们从中选一个最矮的来往里面更新,这个可以用优先队列加快速度。
其实我觉得还可以这样思考:先令整个空间堆满水,除了在外围的方块。不妨设\(h(i,j)\)为位于\((i,j)\)的方块的高度,\(f(i,j)\)为可以装多少水。我们可以不断地迭代更新:如果\((x,y)\)与\((i,j)\)相邻,那么\(f(x,y) = max(h(x,y), f(i,j))\)。这样经过有限次数的迭代之后我们就得到了正确答案。当然,这样的效率是很低的,我们可以利用DijkstraOrz的思想,每次用\(f\)最小的去迭代其他的,由于它已经是最小的了,不可能再被人迭代了(这正是Dijkstra最短路的思想),所以我们每个点只需要去更新其他相邻的点一次。同样,我们也可以用优先队列来加快这一过程。
时间复杂度:\(O(n^2 \log n^2)\)。
USACO 2005 January Gold The Wedding Juicer的更多相关文章
- 【JZOJ1922】【Usaco 2005 NOV Gold】小行星群
题目描述 Bessie想驾驶她的飞船穿过危险的小行星群,小行星群是一个N×N的网格(1 <= N <= 500),在网格内有K个小行星(1 <= K <= 10,000). 幸 ...
- [USACO 2018 Feb Gold] Tutorial
Link: USACO 2018 Feb Gold 传送门 A: $dp[i][j][k]$表示前$i$个中有$j$个0且末位为$k$的最优解 状态数$O(n^3)$ #include <bit ...
- [USACO 2018 Jan Gold] Tutorial
Link: USACO 2018 Jan Gold 传送门 A: 对于不同的$k$,发现限制就是小于$k$的边不能走 那么此时的答案就是由大于等于$k$的边形成的图中$v$所在的连通块除去$v$的大小 ...
- [USACO 2017 Dec Gold] Tutorial
Link: USACO 2017 Dec Gold 传送门 A: 为了保证复杂度明显是从终结点往回退 结果一开始全在想优化建边$dfs$……其实可以不用建边直接$multiset$找可行边跑$bfs$ ...
- USACO 2006 November Gold Corn Fields
USACO 2006 November Gold Corn Fields 题目描述: Farmer John has purchased a lush new rectangular pasture ...
- USACO 2016 January Contest, Gold解题报告
1.Angry Cows http://www.usaco.org/index.php?page=viewproblem2&cpid=597 dp题+vector数组运用 将从左向右与从右向左 ...
- POJ 2230 Watchcow && USACO Watchcow 2005 January Silver (欧拉回路)
Description Bessie's been appointed the new watch-cow for the farm. Every night, it's her job to wal ...
- usaco 月赛 2005 january sumset
2013-09-18 08:23 打表找规律 w[i]:=w[i-1]; 奇 w[i]:=w[i-1]+w[i div 2]; 偶 //By BLADEVIL var w :..] of l ...
- usaco 月赛 2005 january watchcow
2013-09-18 08:13 //By BLADEVIL var n, m :longint; pre, other :..] of longint; last :..] of longint; ...
随机推荐
- stack smashing detect错误修正
运行./a.out程序时候出现如下: *** stack smashing detected ***: ./a.out terminated段错误 (核心已转储) 一般这个错误是由于堆栈错误,很可能是 ...
- 关于Ubuntu远程ssh连接失败的问题
在做机器人项目的时候,用的是Ubuntu的linux,跟之前的CentOS的操作命令有一点差别,就比如防火墙的名字,在Ubuntu系统中叫什么ufw,真是有点不好接受. 为了能模拟环境,我又弄了一台电 ...
- PHP数组与对象之间用递归转换
2 3 4 5 6 7 8 function object_to_array($e) { $_arr = is_object($e) ? get_object_vars($e) : $e; ...
- FPGA知识大梳理(三)verilogHDL语法入门(2)知识汇总
1,时序逻辑.将上次的练习修改成时序逻辑会如何设计. always @ (posedge clock) 2,block 与unblocking A,有clock的always中通常使用nonbloc ...
- spring mvc项目【转载】
用了好几年的ssh2.最近打算研究下spring的mvc,看看如何,可以的话后期的项目将都是用springmvc+spring jdbc的形式,这样就少了其他框架的继承.由于以前没用过springmv ...
- KbmMW两种查询结果集通讯方式
KbmMW本身可以用QueryService的方式进行远程数据查询,但是SmpileService同样具有很强的扩展性可以实现数据查询,下面展示两种基于SmpileService的远程数据查询方法,其 ...
- 基于visual Studio2013解决C语言竞赛题之0302字符数出
题目 解决代码及点评 根据题目要求,只要根据用户输入的字母,判断字母之后,给出相应的输出即可 在以下代码中,f32函数实现了该功能,通过if条件判断语句 #include <stdio.h ...
- 一行JavaScript代码获取页面中的所有超链接地址
因为我喜欢收集Web开发类的网址,平时对网址就很敏感. 我总结了一下我收集网址的几个阶段: 1.纯手工阶段,傻傻的阶段. 在这个阶段,主要是收集一些在页面中展现出来的网址,就是说,如果网址出现在HTM ...
- C# lazy<T>的用法
.NET 4.0中加入了lazy<T>(懒对象),其实叫懒对象感觉不对,更应该叫延迟对象加载. 正如我们所知,对象的加载是需要消耗时间的,特别是对于大对象来说消耗的时间更多.lazy可以实 ...
- java中将list、map对象写入文件
链接地址:http://blog.sina.com.cn/s/blog_4a4f9fb50101p6jv.html 推荐:凤爪女瓜子男怪象该谁反思伦敦房价为什么持续暴涨 × wvqusrtg个 ...