NEERC=Not Easy European Regional Contest

据说NEERC天天被搬,赶紧做了好了。在Claris和Google的帮助下做了10题,感谢cls。

NEERC 15 (10/12)

http://codeforces.com/gym/100851

需要注意的是在cf上面做的时候标明文件名的题要开freopen(没标的那题是交互)。

这套题很好,所以希望想要认真想想的同学还是别手贱点开题解了,下面的顺序按通过人数降序。

A

给一个n*n的矩阵,开始(x,y)的格子上填的是x+y。

有两种询问(操作),第一种是输出一行的和并把这行清零,第二种是输出一列的和并把这列清零。

询问个数为q。n<=1e6,q<=1e5。

题解

. ... ..... .......

类似这样,由于不能堆到地上,所以这个形状肯定左边和右边都得有东西挡住。

   .
  ...
 #.#..#
 ######

反正就是左边和右边都得有一列至少不低于这个形状,然后只有没有挡住的中间这些要计入答案。

比如中间一列为x,高度为a[x],那么左边的某一列l,需要的高度就为a[x]-(x-l)=a[x]-x+l,如果它没有被挡住,那么就需要付出a[x]-x+l-a[l]个石子,被挡住的充要条件也就是a[x]-x<=a[l]-l。

对于左边我们只要二分一下到哪里被挡住了,查一下a[l]-l的最大值比较一下,把中间的a[x]-x+l-a[l]计入要用的石子数即可。右边同理。

知道堆到每个高度需要的石子个数,只要二分一下就好了。

这样是两个log的(如果你用O(1)rmq),通过一些技巧可以去掉一个log。

网上好像有一种更加科学的做法,参见 http://blog.csdn.net/u010568270/article/details/52382293

相关文章:

  • 2021-07-08
  • 2021-06-12
猜你喜欢
  • 2021-12-17
  • 2022-12-23
  • 2021-09-19
  • 2021-09-05
  • 2022-12-23
相关资源
相似解决方案