2021.10.05pm

2021.10.05PM

预期 实际
A 100 100
B 0 0
C 10 0
S 110 100

数学自信爆零人

A [HNOI2011] 数学作业 \(\blacktriangle\!\blacktriangledown\)

  1. 属于是非常离谱一道题。
  2. 从数据范围看出两点:要开unsigned long long,要 \(O(\log n)\) 的算法。
  3. 而每个数之间是有一定递推关系的。对于K位数的情况(一位数,两位数···),显然有 \(A_{i+1}=A_i*10^{k}+i+1\),而联想到对时间的要求那就得用矩阵乘法快速幂了。从递推关系式能找到初始矩阵:

\[\begin{bmatrix} A_0 & 0 & 1 \\ \end{bmatrix} \]

  1. 再通过矩阵乘法性质,能得到转移方程。

\[\begin{bmatrix} 10^k & 1 & 0 \\ 1 & 1 & 0 \\ 1 & 1 & 1 \\ \end{bmatrix} \]

  1. 这道题最离谱的地方就是这个 k,我们对于不同的位数要用不同的转移矩阵,得到一个总的转移矩阵(总转移矩阵要放在乘号右边)。
  2. 由由于初始矩阵矩阵前两项都是0,所以输出答案只需要输出总转移举证第一列第三行的数即可。记得取模。

B [HNOI2011]勾股定理 \(\blacktriangle\!\blacktriangledown\!\blacktriangle\)

  1. 昨天的 \(a*b \mod 12=0 和 a*b*c \mod 50 = 0\) 用通式分类讨论 \(m,n\) 的取值情况就容易得出。
  2. 通式推导过程:

\[\begin {aligned} a^2+b^2 & =c^2 \\ a^2 &=(c-b)(c+b) \\ 设&k=c-b\\ a^2&=k(k+2*b)\\ b&=\frac {a^2-k^2}{2k} \\ c&= \frac {a^2+k^2}{2k}\\ \end{aligned} \]

\[\begin {aligned} a^2+b^2& =c^2 \\ a^2+\frac {(a^2-k^2)^2}{4k^2}&=\frac {(a^2+k^2)^2}{4k^2}\\ 4k^2a^2+(a^2-k^2)^2&=(a^2+k^2)^2 \\ 4m^2n^2+(m^2-n^2)^2&=(m^2+n^2)^2\\ \end {aligned} \]

  1. 由于要求互质,那首先有$ \gcd(m,n)=0 $,其次有 \(n,m\) 奇偶性不同(如果奇偶相同,则 \(m^2-n^2\) 为偶数,显然不互质)

  2. 判断是否有互质的勾股数,枚举m和n,找到 \(1000000\) 以内的互质勾股数,出现矛盾关系就建边。找互质勾股数时间复杂度不会太高,大概是\(O(n\log n)\)。

  3. 接下来就是跑\(树形DP\) 吗?

  4. 并不见得,因为可能会有环,并且可能有环共用同一个点。(不可能是同一条边,因为不存在两个直角三角形两直角边相同而斜边不同),所以这是棵仙人掌,并且由于图会是很多个连通块,所以其实是沙漠图····。

  5. 而这显然是个NP问题,只能猜测数据比较良心····

  6. 仙人掌DP也没有什么办法,只能找到环后拆开强行设两端的状态进行DFS,连通块内所有矛盾点设完状态确认未出现矛盾两端同时选上后树形DP。

  7. 转移方程(1代表选,0代表不选):

    \[dp[fa][0]=\prod dp[son_i][0]+dp[son_i][1]\\ dp[fa][1]=2^{v[fa]-1}\prod dp[son_i][0]\\ 若fa被强制设了状态\\ sit[0]\to dp[fa][0]=1,dp[fa][1]=0\\ sit[1]\to dp[fa][0]=0,dp[fa][1]=2^{v[fa]-1} \]

  8. 对于每个连通块内不同DFS的情况答案进行累加。(对象没变,状态变了),对于不同连通块进行累乘。(不同对象)最后要除去全不选的情况。

C XOR和路径 \(\blacktriangle\!\blacktriangledown\!\blacktriangle\)

  1. 这次考试离谱在后面两道题都对主要算法进行了隐藏。B看着像数学,实际上主体是树形DP;再像这道看着像数学,实际上主体是数学·····
  2. 由于我太蒟了,期望题做到只能摆烂,特别是这种自己可以到自己的,更是懵得一批,然而对于这种非常难处理的题,可以设立方程组解方程。
  3. 由于期望的是异或和,那我们可以把它每一个二进制位分别拆开分别算。
  4. 那我们便可以得到这样一个方程(f[x] 表示x的第 k 位为1的概率:

\[f[x]*deg[x]=\sum_{edge.w=0}f[i]+\sum_{edge.w=1}(1-f[j])\\ f[x]*deg[x]-\sum_{edge.w=0}f[i]+\sum_{edge.w=1}f[j]=\sum_{edge.w=1}1 \]

  1. 像这样的式子有n个,而有n个元,显然肯定有解。

D 总结

  1. 这次考试其实不应该只拿第一道的分,后面两道只打暴力。而且没有认真读题也是一个大问题,导致 B 建模失败呜呜呜·····

2021.10.05pm

\(\cal {Made} \ {by} \ {YuGe}\)

上一篇:2021.10.16CSP模拟赛22 赛后总结


下一篇:[NOIP2016 提高组] 天天爱跑步