JAG Practice Contest for ACM-ICPC Asia Regional 2016

2016弱校联盟十一专场10.3

传送门

B. Help the Princess!

  • 计算皇后和士兵谁先到达出口即可。

C. We don't wanna work!

  • 两个优先队列维护工作中积极性最小的,空闲中积极性最高的。
  • 两个队列倒来倒去就可以了。

D. Parentheses

  • 考虑最坏情况)))...(((。
  • 假设有\(x\)个右括号,那么这种情况需要\(\frac{x(x+1)}{2}\)次操作。
  • 将第一个左括号移动每往左移动一个位置,则需要的操作次数减一,直到移动到最左边则变成\(x-1\)的子问题。
  • 那么只要找到第一个\(x\)使得方案数大于等于\(n\)即可,根据差值移动第一个左括号。

E. Similarity of Subtrees

  • hash

F. Escape from the Hell

  • 除了最后一瓶饮料外,其余时候必然是喝\(A_i-B_i\)大的饮料喝。
  • 首先按照\(A_i-B_i\)从大到小排序,假设喝到第\(i\)瓶,当前爬的高度为\(H\),罪犯的高度为\(C\),显然\(H \gt C\),否则直接结束了。
  • 在当前情况下,可以喝\(i+1\cdots n\)\(A_j\)最大的尝试一步跳上去,否则需要调整\(1\cdots i\)\(A_j\)较大的一瓶放到当前喝,但是需要保证总体下降高度不会被罪犯抓到。
  • 假设我们把\(j\)移动到最后,那么需要满足\[d_1+\cdots + d_{j-1} + d_{j + 1} +\cdots + d_k - c_1-c_2-\cdots - c_{k-1} \gt 0\]\(any\ k\in[j+1,i],d_i=A_i-B_i\)
  • 整理下式子可得\[d_1+\cdots + d_k - c_1-\cdots - c_{k-1} \gt d_j\]
  • 可以发现左边式子与\(j\)没有关系,所以对于任意的\(j\)来说,如果均满足式子说明位置\(j\)是可以往后移动的。
  • 假设我们已经得到了在\(i-1\)的可移动位置,对于左边的式子新增了\[d_1+\cdots + d_i - c_1-\cdots - c_{i-1}\]也就是说我们只要把之前的可移动位置的\(d\)值与当前值比较即可,比较的顺序的肯定是从小到大,所以需要一个优先队列,然后用个线段树维护下最大\(A\)值(当然可以不用线段树,只是线段树的时间复杂度也够就随意写了)。

G. Share the Ruins Preservation

  • 显然凸包会发生的变化的时候是在划分线在两个\(x\)坐标之间。
  • 那么我们将划分线按照顺序扫过去,然后维护凸包。
  • 但是,如果同时维护两个凸包显然很难,而维护一个凸包,就简单得多。
  • 正向扫一遍,维护一个凸包的面积,反向再扫一遍,维护另一个凸包的面积,最后枚举下划分线的位置然后计算面积和即可。
  • 维护凸包的做法,维护上凸壳和下凸壳及其面积。

转载于:https://www.cnblogs.com/mcginn/p/5948541.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值