zoukankan      html  css  js  c++  java
  • 省选模拟五十五 题解

    T1

    这种区间$gcd$问题首先想到做多有$nlog$个权值

    把它们按照权值排个序

    每一个都形如${L,R,x,w}$

    对于权值相同的便可以进行dp了

    设$f[i]$代表$[1,i]$的方案数

    对于每个${L,R,x,w}$都会使$f[x+1...n]+=sum_{i=L}^{R}f[i-1]$

    用线段树维护即可

    类似的处理出反着的方案数设为$g$

    对于一个士兵$S$而言

    它不被选入的方案就是$f[S-1]*g[S+1]$

    维护一个变量$T$代表总的方案数(即$f[n]$之和)

    用T减去即可得到最终答案

    每次S的贡献不同的只有O($k$)个($k$是这个权值的个数)

    所以最终复杂度$O(nlognlogn)$

    T2

    结论一:答案等于每个白点$(x,y)$的$lowbit(max(x,y))$的异或和

    $[0,2^30)$建树方便$O(1)$算出答案

    考虑一个树点的答案:

    这个树点的区间一定是$[a*2^b,(a+1)*2^b)$

    结论二:贡献就是$lowbit(a*2^b) xor 2^{b-1}$

    扫描线扫一遍即可

  • 相关阅读:
    TASK1
    CSS再学
    Html再学
    Python的hasattr() getattr() setattr() 函数使用方法详解
    GET/POST/g和钩子函数(hook)
    cookie和session
    SQLAlchemy外键的使用
    jquery树形菜单插件treeView
    linux设置防火墙
    linux解压命令
  • 原文地址:https://www.cnblogs.com/AthosD/p/12584542.html
Copyright © 2011-2022 走看看