3.6省选模拟

一会去补一下$wqs$二分

$T1$

当你发现一道题没有任何规律的时候,那么这道题八成有循环节$(bz \ say)$

那么观察这道题的循环节是什么,显然需要离线询问

如果路径上所有点的权值比所有与这个边相邻的点都要大,那么就会循环。

![NO1(1)](C:\Users\Administrator\Desktop\NOIP十合一\NO1(1).JPG)

大概长这样,那么也就是说这个路径会出现循环

循环的话,就是说,这个路径上的点都会轮换一遍

考虑这个无论怎么变换都不会走到相邻的点,如果有一个小于周围点,也会在此时断开循环,就寄了

既然询问是问多次操作后某个点的值,那么可以单个考虑每个点的任意时刻的值,或者这个值每个时刻在哪

分情况讨论,如果当前最小值有兄弟节点,想一下,无论怎么遍历都不会遍历到这个点和子树,那么这个子树上的所有点在任何时刻都不会变化

那么考虑一下这个过程

$1.$找到一条链(满足不存在周围更大的点,循环节确定;不满足,继续执行)

$2.$在若干次处理之后循环结束,找到一个新的循环(返回$1.$判断)

这样的话肯定最后是能找到一个循环节的,最差情况下可以在$O(n)$出现循环节

为什么是$O(n)$,考虑最差的情况无非是$n$个点都在链上出现一遍,即使不是$O(n)$,我感觉不会超过$O(nlogn)$,我刚倾向于理解为$O(nlogn)$

那么就处理$O(n)$次就好了

$T2$

一眼就很数位$dp$

询问$[l,r]$选$n$个数字,有多少种情况满足$S(a_1+a_2+...a_n)=S(a_1)+S(a_2)+...S(a_n)$

$S(x)$是$x$的每一位数字的和

考虑$L,R$较小的时候怎么$dp$直接计算

$dp[x][i][j][z]$表示我现在选到了$x$,选了$i$个数字,和是$j$,第二个式子值是$\mod k=z$的方案数

复杂度的话是$O((R-L)\times(R-L)\times k \times n\times n)$,此时可以拿到$20pts$的好成绩$!$

这个时候就发现$L,R$过大,那么咱们寄[祭]出数位$dp$

一般的数位$dp$可以差分一下,显然这个不太行...

怎么转移成最大问题...

那么这个时候显然需要按位去转移,按位转移也是需要这个目前选的每个位的和$\mod k$的值,还需要处理一下进位的问题,感觉和$NOIP \ T2$很像

这里并不是很会关于和的处理问题,就是

如何在不能转移和的情况下得到所有方案

首先我们可以压位数,可以压$\mod k$的值,可以压选了几个

先给出一个性质,如果当前进位$x$,那么数位和减少$9\times x$,就是这一位$x\times 10+y$,那么贡献$x\times 10+y$,进位之后贡献是$x+y$,贡献减少了$9\times x$,那么等价于问进位和是$k/gcd(k,9)$的方案数

至于这个等价是怎么来的,显然的,如果前面的数字加和不出现进位的话,那么左边相当于每个数在每一位加起来,如果进位的话那么贡献减少$9\times x$,那么为了让左右两个式子恒等,那么就需要进位$9\times x=0(\mod k),$也就是说每次可以求个进位,那么就需要每一次进位的和加起来$\mod k=0$,也就相当于求$k/gcd(k,9)$的倍数的方案数

为何是$k/gcd(k,9)$的倍数,考虑每次进一位就少$9\times x$,$9/gcd(k,9)\times x=0(\mod k/gcd(k,9)),$那么$x$是$gcd(k,9)$的倍数就好啦,那么这个东西就极像$NOIP2021T2$(惨痛回忆)

那么$dp$状态易得,$dp[a][b][c][d][e]$表示现在转移到第$a$位,有$b$个数字等于下界,$c$个数字等于上界,后一位进位是$d$,进位次数$\mod k=e$的方案数

 

posted @ 2022-03-06 22:06  Authentic_k  阅读(44)  评论(0编辑  收藏  举报