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\)