2018 多校联合训练 8

Problem A

Problem B

考虑把某条边卡在槽内,这样两个点的位置确定了,都在边上,

当这条边长度小于等于槽宽度的时候,如果剩下那个点在区域里面,

那就直接返回三角形的高。

否则用一系列公式算出三角形在槽内的高度,注意也要判断剩下的点是否在区域里面。

最后,别写错叉积……

Problem C

Problem D

Problem E

签到题

Problem F

Problem G

Problem H

Problem I

 

Problem J

预处理出$f[i]$表示从$i$开始的答案

$g[i]$表示从$1$开始到i的答案

把答案拆成$3$个部分。

如果把$x$位置的高度改成$y$,先找到$x - 1$时的答案,再判断$y$是否大于之前的最大值。

然后在二分跳到后面第一个大于$y$的位置$pos$,再加上预处理的$f[pos]$即可。

 

Problem K

三进制状压DP,状态$0$表示没有气球,$1$表示有气球但是尚未戳破,$2$表示有气球已经戳破了。

由此可以看出某一位的状态如果是$2$,那么一直都是$2$了。

首先把少的那一维弄成列。设$dp[i][mask]$为前$i$行转移完状态为$mask$的方案数。

然后依次枚举下来。首先对于第$i$行,我们可以选择在这一行中戳破气球,也可以选择不戳破这一行的气球。

如果选择不戳破这一行的气球,这一列有气球,那么该状态的位,需要从$0$变成$1$。

如果选择戳破这一行的气球,那么只要戳一个就行,枚举哪一个,把对应位上的状态变成2就可以了。

最后统计答案的时候状态里面不能有$1$,$2$的个数就是戳破气球的个数。

 

Problem L

posted @ 2018-08-20 22:52  cxhscst2  阅读(170)  评论(0编辑  收藏  举报