2022.7.22NOIP测试

T1.tree

思路:

化简一下问题:在一颗树中,将其划分为子树大小相同,且子树大小与子树个数相乘为\(N\),的方案数。

经过思考发现,每一种因数情况只有1或0种方案。所以要对每一个情况进行验证。

在每次验证,由于要把树划分成子树,所以必有\(n|d\)个节点满足\(siz\)大小为\(d\)的倍数。

T2.seq

思路:

设f[i][j]为第i位向上涨了j的代价。

从第i-1位转移到第i位,\(O(n*a^2)\).

\[f[i][j]=\min(f[i][j],f[i-1][k]+j*j+c*abs(a[i]+j-a[i-1]-k) \]

最后对\(f[n][i]\)取min即可。

T3.color

思路:

背包DP。

\(dp[i]\)表示i被表示了多少次。

转移:

\[dp[0]=1 \]

\[dp[i]+=dp[i-a[i]] \]

\[ans=\sum {dp[i]*abs(x-i*2)} \]

T4.mex

FJOI[2016]神秘数

对于\(l\)\(r\)这一段区间,设排名前i的数的值域为\([0,x]\)这时加入\(y,y<=x+1\)值域变成\([0,x+y]\),如果没有\(y\)那么就是\(x+1\)

可以采用主席树维护值域前缀和,然后每次将\([lst+1,now+1]\)之间的数全部加入。
\(lst=now+1,now+=sumplus\)

posted @ 2022-07-23 10:15  SSZX_loser_lcy  阅读(29)  评论(0编辑  收藏  举报