gougou1027

从 Trac 迁移的文章

这是从旧校内 Wiki 迁移的文章,可能存在一些样式问题,您可以向 memset0 反馈。

原文章内容如下:

1027
Fill the Cisterns!

http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1389

9 2006-08-21 19:42:37 00:07:32 8968K C++ glimpse

   大家知道什么叫暴殄天物吗?知道什么叫不会做的题cheat过吗?我的1027就非常符合这两条。

   我开了一个数组v[1000 * 1000 + 40002],然后模拟,v[i]代表前i层的储水量。然后while(v[i]<V){i++}。虽然手段粗暴了点,倒是瞬间秒杀了。

   ZZT这道题又是第一,很奇妙吧,作为ACM的队友,我们的风格迥异,他总是ranklist的前几名,而我总是后几名。

----

正确而简单的做法是二分答案,也就是水的高度,那么这些水的体积是非常容易在O(n)求出来的。复杂度O(lg((r-l)/eps)*n)

实际如果二分多少个是满的,或做非空的,那么也可以做到O(n*lgn),不过这是后求水的体积要麻烦得多。

1027

Fill the Cisterns!

http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1389

9 2006-08-21 19:42:37 00:07:32 8968K C++ glimpse

大家知道什么叫暴殄天物吗?知道什么叫不会做的题cheat过吗?我的1027就非常符合这两条。

我开了一个数组v[1000 * 1000 + 40002],然后模拟,v[i]代表前i层的储水量。然后while(v[i]

ZZT这道题又是第一,很奇妙吧,作为ACM的队友,我们的风格迥异,他总是ranklist的前几名,而我总是后几名。


正确而简单的做法是二分答案,也就是水的高度,那么这些水的体积是非常容易在O(n)求出来的。复杂度O(lg((r-l)/eps)*n)

实际如果二分多少个是满的,或做非空的,那么也可以做到O(n*lgn),不过这是后求水的体积要麻烦得多。