【题解】牛客IOI周赛16-普及组

solution

求导

良心送分题

答案就是 n!

猜数

贪心

首先把每一位数求和。

如果大于等于 k 那么就是没有改变,答案为 0。

如果小于 k,那肯定是从 开始改变,并且每次把这个数贪心地变成 9。

答题卡

递推

考虑第一道题填的位置:

1. 如果填第一个空

则第一行和第一列均不可再填,则只需要右下的 (n-1)*(n-1) 的矩阵对称即可。

2. 如果不填第一个空

若填在 (1,x) 根据对称 (x,1) 也要填上,且第 1 行,第 1 列,第 x 行和第 x 列不能再填。

所以只需要让其余部分拼在一起构成 (n-2)*(n-2) 的矩阵对称即可。

设 n 的答案为 f(n) 不难写出递推式 f(n)=f(n-1)+(n-1)*f(n-2)

杀树

树形背包

记 dp[u][i] 表示 u 这个节点,向上传 i 个点的链的最小代价。

状态转移:

  • 保留点的情况:对于已经处理完的 dp[u][i] 存在 tmp[u][i] 之中,以方便更新。
  • 删除点的情况:

复杂度:

注意枚举的 i,j 的范围应该是 ,这样复杂度可以保证是

全部评论
最讨厌树的题了,每次都做不对😭
7 回复
分享
发布于 2020-05-02 10:41
最后一题数据也太水了吧,开dp[5000][83]都能过?
点赞 回复
分享
发布于 2020-05-02 20:10
博乐游戏
校招火热招聘中
官网直投
想问下D题为什么是dp[u][max(i,j+1)]?意思是只能从链短的转移到链长的吗?
点赞 回复
分享
发布于 2020-05-02 21:25
还是想不明白D题那个复杂度是O(n^2)的.为啥i,j范围这么设置就能是O(n^2)的了呢,有大佬能解释一下嘛
点赞 回复
分享
发布于 2020-05-04 09:43

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务