zoukankan      html  css  js  c++  java
  • Tokio Marine & Nichido Fire Insurance Programming Contest 2020 English

    D

    设阈值(L),预处理(ile L)的祖先最优背包
    对于一次询问,(i>L)的部分可以状压

    E

    显然,题目可以直接转化为(S=0,T=2^L-1)(A_iin[0,2^T))
    (f(U))为集合大小(in[1,K]),集合中所有数(And U)相同的个数
    (ans=sumlimits_{U}(-1)^{popcount(U)}f(U))

    证明:
    考虑对于集合大小(in[1,K])的集合,被统计了几次
    这时(f(U)的意义可以描述成:)U$中的位上为(1)时是否集合上该位相同,剩下的比较显然了

    考虑如何计算(f(U)),枚举每个(U),然后(O(N))遍历(a_i)
    (O(2^LN))

    没有用到任何高级算法,非常巧妙!!

    令一种稍劣的方法
    (S=0,T=2^L-1)的意义在于,选择的集合每一位出现过(0)(1)
    固定集合内的一个元素,然后要做的事就变成:找到一个集合,使得集合中的位出现过某个数字,可以通过fwt配合容斥解决

    具体来说,现在的问题可以描述成选择一个集合,其与为(0)
    (f(U))(a_iAnd U=U)的个数,令(g(i)=sumlimits_{j=0}^{k-1}{ichoose j})(sumlimits_{U}(-1)^{popcount(U)}g(f(U)))
    证明同上

    (O(ncdot L2^L))

    F

    不失一般性地,我们来统计((0,i),(j,0)(W,k)(ile k))
    (d=k-i)

    由毕克定理,三角形内部点数(A),边界上点数(B),三角形面积(S),有

    [2S=2A+B-2 ]

    整理

    [egin{aligned} &(2i+d)W−ij−(W−j)(i+d)=2A+(i,j)+(W,d)+(W−j,i+d)−2\ &iW−(i,j)−(W−j,i+d)=2A+(W,d)−2−dj\ end{aligned}]

    需要计算三元组((i,j,d))的个数,其满足:(iW−(i,j)−(W−j,i+d)le 2K+(W,d)−2−dj)
    固定((j,d)),右侧是定值,令其为(R)
    由于((i,j)+(W−j,i+d)le W),当(ile frac{R}{W})时恒满足,(ige frac{R}{W}+1)时恒不满足
    仅需格外计算(i=frac{R}{W}+1)即可

    ((j,d))使得(Rge 0)的个数(O((K+W)log(K+W)))

  • 相关阅读:
    TensorFlow 基础 (04)
    面向对象编程思想的介绍
    B2B、B2C、C2C、O2O的概念
    为什么我们需要域
    如何在阿里云服务器上搭建wordpress个人网站
    Ghost手动备份、还原系统详细图文教程
    IE浏览器下载文件保存时提示:“你没有权限在此位置中保存文件”解决办法
    电脑经常自动重启的一些解决办法
    ERP系统到底能做什么?
    SQL实用技巧:如何分割字符串
  • 原文地址:https://www.cnblogs.com/Grice/p/13199865.html
Copyright © 2011-2022 走看看