复盘
7:40 到机房开题,大概 8:00 读完,整体觉得难度不小
T1 感觉贪心或者区间DP ,T2 发现跟之前模拟赛某道题很像,觉得非常可做(崩盘的开始),T3 神秘,T4 好像暴力有不少分
推一下 T1 有一个显然的贪心结论,好像每次选最大的就行,飞快的码完,过了大样例,8:20直接交了。
但想到之前挂T1的惨痛经历,还是打了个 2 n 2^n 2n 的对拍,没什么问题。
8:40 开 T2,虽然对于儿子的限制是 “存在一个编号比它大的” 就行,有别于之前那道题,但想到数据范围偏小,想到加一维状态表示 “当前有多少个点没有编号比它大的儿子” ,简单推了一下发现转移可搞,直接开码了
然而对于最关键的一点:填数的过程中维护的是 一个连通块 还是 若干个森林 ?当时不知怎么意会了一下,认为是前者
约 9:40 调过了一些细节错误,过了前两个样例,可是第三个死活过不去 —— 难道要手画 88 种情况?
事实上确实这么做了,然而却是在我写的错误程序的框架下,导致我始终没有想到那漏掉的 32 种,一度开始质疑样例
如果这时候我写了暴力程序,只需要简简单单的拍一组 n=4 且 答案很小 的数据就能清晰地发现我漏掉的情况 —— 可是一直觉得是哪里的细节错了,盯着在思想上就有漏洞的代码死看;而且还有一点是觉得暴力不太好写
最后 50 min ,开始磕暴力,终于想到了
n
!
n!
n! 级别的做法,飞快的码出来开始拍, 终于发现了那种漏掉的情况,非常简单:
1
:
[
0
,
1
]
2
:
[
1
,
2
]
3
:
[
2
,
2
]
4
:
[
0
,
1
]
1:[0,1] \qquad2:[1,2] \qquad 3:[2,2] \qquad4:[0,1]
1:[0,1]2:[1,2]3:[2,2]4:[0,1]
原来的那种 dp ,无论如何也统计不了上面这种情况的,没时间了
遗憾离场… …
最终 T1_100 + T2_5 + T3_0 + T4_0 = 105 rhk_10086 最菜的一把…
所以,复杂的计数题 写正解前一定要保证有一个暴力程序!
样例错时,细节问题处理完后应该先 考虑思路是否有没考虑到的情况,不要盯着代码死看
暴力打满前,拒绝死磕一道!!
T1
简单贪心+数据结构维护