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

转载于:https://www.cnblogs.com/cxhscst2/p/9508669.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值