zoukankan      html  css  js  c++  java
  • Codeforces Round #378 (Div. 2) C D

    在实验室通宵 一边做水题一边准备随时躲起来以免被门卫大爷巡查发现..结果居然没来..

    本来以为可以加几分变个颜色..结果挂了CD...状态有点差...思维不太活跃 沉迷暴力不能自拔

    D 给出n个长方体 两个长方体 如果有一面完全相同 可以粘上变成一个 在一个长方体中可以切割出一个球体 选择1或2个长方体以得到最大的球体 输出选择的编号

    一开始没看范围打了一个n^2的暴力 超时后相出了map配On的算法 由于比较暴力的判断 写了六个复制粘贴..漫长的debug之后过了pretest之后还是wa在了27

    其实比赛的时候 学长过来看了一眼就想出来了n的贪心..但是那时候想自己上一把紫233333...于是可爱的fst了...

    正解 : 因为 能够切割出来的球体的r 取决于长方形中最小的一个边 如果要进行粘贴 肯定要使最小的边得到延长

    所以先排序 把xyz从大到小排 再整体排序 这样 如果存在可以粘贴后可能获得更大球的两个长方体 他们肯定是相邻的(x y 都相等 我们需要把最小的z延长)

    扫一遍序列 判断相邻的两个长方体能否粘贴 更新答案 

    C 给出n个数 相邻的两个数如果严格大小不同 大的可以吞掉小的 值相加 给出m个数 如果这m个数是不断吞噬到剩m个数之后的情况 能否给出一个吞噬的序列 

    虽然看了一眼n的范围就知道是暴力了 而且敲完D之后 等了一会C就过了一千多..于是自己也打了一个 还配了路径压缩 .. 一遍绝杀结果fst在了26... 赛后发现路径压缩姿势不对..不能压..

    正解 : 首先快速排斥 判断能否变成给的序列 即 如果吞噬后的序列的第一个数是5 那么原序列的前几个连续数一定是5 这样严丝合缝的卡上去 然后让这些组成5的连续数进行内部的组合 记录ans

    由于吞噬的条件是严格大于 每次我们都需要扫一遍这些连续数 找寻一个数 进行左右寻找(这时候是可以暴力扫来寻找的)左右的第一个相邻并且小于的 

    因为两个小的加起来可能就等于大的 导致崩溃 但其实让大的连续吞噬是可行的 那么每次暴力找寻最大的那些数 来依次进行暴力判断就好了...

    以后又要陪桃桃打好久的div2了呢...

  • 相关阅读:
    Oracle使用笔记
    跳转至锚点
    项目中使用到的AOP
    短信验证码接口使用
    阿里人脸识别接口
    java实现网页截图
    java后台接收微信服务号/订阅号消息
    java 实现redis缓存
    redis 常用命令
    被骗了,自己还不知道
  • 原文地址:https://www.cnblogs.com/rayrayrainrain/p/6020894.html
Copyright © 2011-2022 走看看