zoukankan      html  css  js  c++  java
  • 四校省选模拟一

    回来学校后的第一轮考试,基本上全程都在奔着部分分。

     

    D1T1:

      这个题首先想的原根,这样把未知数放到指数上就可以 bsgs 了。n是和数所以要先分解掉然后 crt 合并。然后复杂度做到单次$sqrt p$就不会了。然而求原根还不会,用的`bsgs`求的,T飞。后面学了快速求原根。

      正解是直接把指数消掉(右面变成$M^{-C}$),那么问题就是求$C$在$phi (N)$下的逆元。模数就是$(p-1)*(q-1)$,于是问题就是分解$N$。然后入手点是$lambda=q-p le 3e5$,考虑怎么能枚举出一个$p$。$N=p*(p+lambda)$,解开$p$,换成枚举$t=frac{lambda}{2}$,于是$p=sqrt{t^2+N}-t$,右面有$-t$就表明$t$还有一个下界的限制,尝试卡住下界,枚举$k^2=t^2+N,p=k+sqrt{k^2-N}$,那么$k$从$sqrt N$开始。$k$的基数是$1e9$,那么$k$往上枚举$+1$,原来的$t$的增量很大,那么$lambda$的限制就只用枚举几十个$k$就可以了。

     

    D2T1:

      一开始感觉很像决策单调性优化。打了表,貌似决策点是递增的,但是并不是单调性的转移,要想以此优化的话只能把本轮决策点$j$从上一轮的决策点$las$枚举到$i$,可能复杂度没有优化。

      基本的式子$f[i]=minlimits_{j<i} { f[j]+cal(i,j) } +m[i]$,其中$cal(i,j)=lceilfrac{c[i]-c[j]}{Z} ceil$,这里不用考虑中间经过的特殊点的贡献,因为会在那个特殊点统计到。然后这个$cal$的式子是可以展开的,$c[i]/Z-c[j]/Z-[ c[i]%Z > c[j]%Z ]$,然后就把$i$,$j$分离了。至于$[ c[i]%Z > c[j]%Z ]$,可以权值线段树维护,分两段转移。

     

    D2T2:

      一开始感觉很像容斥,也打了下来。赛后没分,后来才发现有个地方还是没去掉重复($2*i$颗宝石各颜色数量都是偶数的计算,实际上就是题目根本所在)。

      这题$N$很大,$D$在$1e5$,从$D$考虑。那么需要转化一下题意,$M$对颜色相同,剩下的,最多可以有$min(D,N-2*M)$颗宝石是两两不同,也就是最多$min(D,N-2*M)$种颜色的宝石是奇数颗。这个需要容斥。设$f[i]$表示钦定$i$种颜色有奇数颗的方案(现在看来钦定$i$的意义和至少$i$的意义是不同的)。某种颜色有奇数个才有1的贡献,这个就是指数生成函数$H1=frac{e^x-e^{-x}}{2}$的形式。相应的,没有限制的颜色的贡献表示为生成函数$H2=e^x$,那么$f[i]=inom{D}{i} n! [x^n](H1^i H2^{(D-i)})$。然后这里往下推,用二项式定理展开$H1$函数,最后$e$上面指数合成一项,那么$[x^n]$就可以直接得到了。由于$[x^n]$项其实是$frac{x^n}{n!}$的系数,这里$n!$抵消掉分母。接着就是一个卷积式。得到$f$后,求出恰好$i$颜色的方案,$g[i]=sumlimits_{j geqslant i} inom{j}{i} f[j]$,需要用二项式反演得到$g$。这个式子也是卷积式。

      这道题求多种颜色满足同一种限制的方案数,用生成函数表示一种颜色的贡献,多项式乘法得到$[x^n]$相当于“一共有$N$颗宝石”(也就是做了背包)。有了生成函数的“抽象表达”,就可以直接得到乘积结果的表达式子,就省去多项式乘法了。

     

    D2T3:

      先从sub2的子任务开始想。只考虑单一点的变化,如果某一点从1变为0,那么之后询问的答案就一定包含了这段为1的时间,可以直接加到贡献里。那么只用维护当先点的状态,以及这一状态的开始时间,回答询问时先把之前出现的1时间段贡献加上,在加上剩下的至今的贡献。

      sub3的话,因为 toggle 之后变为联通不再断开了,也就是 因$i$点亮而开始联通的贡献 就不会再消失了。正向做这个过程,寻找每次点亮使哪些询问联通,记录时间,最后根据询问时间和联通时间得到答案。每次点亮$i$会把跨过$i$的并且左右端点在前驱0、后继0之间的询问,是一个矩形。然后考虑离线下来,扫描线处理询问。因为这里矩形不相交,所以直接拿set维护, lower_bound 就可以查询。

      正解差不多就是结合上面。仍然考虑 toggle 带来的影响,和sub3一样找到影响矩形。在$i$为1,后面到$j$为0,贡献$j-i$,把时间段的贡献拆到$i$,$j$上就是分别$+i$,$-j$。其实询问的约束还有时间,所以是三维限制。矩形加值差分之后变成单点加入,矩形查询,那么就成了三维偏序问题。

  • 相关阅读:
    《应用Yii1.1和PHP5进行敏捷Web开发》学习笔记(转)
    YII 小模块功能
    Netbeans代码配色主题大搜集
    opensuse 启动巨慢 解决方法 90s多
    opensuse 安装 网易云音乐 rpm netease music
    linux qq rpm deb opensuse
    openSUSE 安装 alien
    第一行代码 Android 第2版
    Android Studio AVD 虚拟机 联网 失败
    docker error during connect: Get http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.29/containers/json: open //./pipe/docker_engine: The system cannot find the file specified. In the default daemon configuratio
  • 原文地址:https://www.cnblogs.com/Duan-Yue/p/13046682.html
Copyright © 2011-2022 走看看