• 省选模拟1


    天空碎片

      首先观察题中那个诡异的条件$n,m<=p*(p-1)$,可以发现,对于一个数x,求出$x\% p$,$x \% (p-1)$,记为$(i,j)$那么每一个$(i,j)$都与一个特定的$x$对应。

      因此,我们可以枚举这个$(i,j)$,那么若存在四元组 $x^{y} equiv n^{m} mod p$ ,我们必然可以找到唯一的点对$(i,j)$,满足$i%p=x,i%(p-1)=m,j%p=n,j%(p-1)=y$,因此,只要将每一组$i^{j} mod p$扔进桶里,记余数为$i$的点对数为$c(i)$,那么答案为:$sum limits_{i=0}^{p-1}c(i)^2$。

      考虑如何快速求出每个桶中的元素个数。考虑乘法取模不好处理,不难想到可以用原根来代替,那么原来的条件$x^{y} equiv n^{m} mod p$就变为了$g^{xy} equiv g^{nm}$,可以转化为寻找$0<=a,b,c,d<p-1$的四元组,使得$a*b equiv n*m$,注意这里忽略了$x=0$或$n=0$的情况(无法用$g^{x}$表示),可以用$(p-1)^2$计算出来。

      考场上想到这里就死了。设$cnt(n)$表示满足$0<=a,b,c,d<n$的四元组个数,令$n=prod pi^ci$之后可以用$crt$得到:$cnt(n) = prod cnt(p_{i}^{c_{i}})$

      那么只需要求出$cnt(p^k)$。设$c(i)$表示桶$i$中元素的个数,令$i=p^{c}*s$那么有:

      $c(i)=(c+1)*p^{k-1}*(p-1),c(0)=(k+1)*(p-1)*p^{e-1}$,大致就是枚举数对$(a,b)$中含有p的个数,计算相应的贡献。

      所以发现桶中元素的个数只与$c$有关,所以直接枚举$c$计算即可。最终答案就是$cnt(p-1)$;

    未来拼图

      若将原序列$p$看成一个多项式,题中给的$A$数组就是$p$的循环卷积。直接将A用DFT转化为点值表达式,然后将点值开方然后IDFT回去就可以得到原多项式。

      但是复数开方会得到两个值,所以可以暴力枚举得到的是哪一个,暴力检验即可 。

      $O(T*2^{frac{n}{2}}*n^2)$

    完美理论

      发现直接做的话限制条件是同时选两个点,那么必须选某些点,然而并不会处理同时选两个点的情况,然后就死了。

      然而我们可以枚举一个联通块的根,那么选择某个点必须选择他的父亲,限制条件就只剩一个点了,直接最大权闭合子图即可。

  • 相关阅读:
    链接
    Oracle创建表空间
    C#中的全局异常捕捉
    软件架构入门
    Nginx安装及配置详解包括windows环境
    极路由4增强版(B70)HC5962离线ROOT通过Breed刷openwrt教程
    vue自定义全局指令v-emoji限制input输入表情和特殊字符
    【vue】@input
    【window】常用软件
    Vbox 虚拟机全屏
  • 原文地址:https://www.cnblogs.com/hzoi-cbx/p/12057044.html
Copyright © 2020-2023  润新知