zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Ubuntu环境下IPython的搭建和使用
    智能移动导游解决方案简介
    企业文化、团队文化与知识共享
    CoinPunk项目介绍
    Insight API开源项目介绍
    比特币Bitcoin源代码安装编译
    Javascript单元测试Unit Testing之QUnit
    Node.js的UnitTest单元测试
    Node.js调试
    Alfresco 4 项目介绍
  • 原文地址:https://www.cnblogs.com/cxhscst2/p/9508669.html
Copyright © 2011-2022 走看看