zoukankan      html  css  js  c++  java
  • 省选测试39

    A.老洪的遍历

    将题中给出的贡献式转化,得到

    (frac{B_iB_j}{2}(frac{1}{A_j}-frac{1}{A_i}))

    发现将每个点扔到二维平面,坐标为((B_i,frac{B_i}{A_i}))

    那么贡献就是(i)(j),原点(O)三点有向三角形的面积

    所以求一个凸包就是答案了

    B.老洪的神秘操作

    首先一个很常用的套路是转化为等差数列,每次挑选两个位置,(+/-)相同的数值

    然后发现先将(1,6),(2,5),(3,4)这样的数对配对一定不劣

    剩下了一部分数,这些数显然能划分成7的倍数的组数越多越好

    所以考虑一个dp, (dp[i][j][k][l])表示用了(i)个第一个剩下的数,(j)个第二个剩下的数,(k)个第三个剩下的数,此时无法划分成整组,剩下的一组值为(l)的最大划分组数

    转移枚举当前这次用了第几种数就可以了, 第一维滚动

    C.老洪的数组

    考虑最裸的(20nm)暴力,发现可以分块

    设块长为(k)

    对于询问分块,每次到一个新块就暴力(20*n)去求出每个位置的答案, 这部分复杂度是(20*n*frac{m}{k})

    然后对于每次询问,暴力去扫当前块内对其有贡献的修改,这部分复杂度是(m*k)

    所以计算得(k)最优为(sqrt {20n})

    此时复杂度为(sqrt {20n} * m)

    如初见 与初见
  • 相关阅读:
    react 滑动删除组件
    004-Java进制转换
    003-JavaString数据类型
    002-Java数据类型
    001-Java命名规范
    【leetcode】804
    【MySQL】基本语句
    【python】
    hiveSql常见错误记录
    【数据库】-基本特性
  • 原文地址:https://www.cnblogs.com/HISKrrr/p/14541227.html
Copyright © 2011-2022 走看看