Skip to content
0

P14364 [CSP-S 2025] 员工招聘 / employ 笔记

考完这次 CSP 真正的感受到了自己的弱小,「努力」了大半年,面对正赛题解还是跟读天书一样,什么都看不懂,文化课成绩倒是步步低降了。

我该在哪里停留?我问我自己。


设最终的排列是 p1n[1,i) 拒绝了 bi 个人,分析一下最终的排列如何进行判定。

  • 情况 A:si=0,此时 pi 可以是任意数,对答案无影响。
  • 情况 B:si=1,但是 pi 不满意,已经跑了,即 cpibi
  • 情况 C:si=1pi 正常参加考试,即 cpi>bi

好像这些判定中,只有 bi 是未知的,所以是不是设 fi,j 表示 bi=j 的方案数即可?然后就会发现 bi 单调不降。前面的情况 A,C 的选择,会对后面的情况 B 产生影响,并且很难记录。

因此考虑最后再处理情况 A,C 的选择,如果只用考虑情况 A 的选择,那么只需记录 k 表示有 k 个位置不是情况 A,(nk)! 就是情况 A 的选择。

接着是考虑情况 C 的选择,要求情况 C 全部是 cpi>bi 的方案数,等价于情况 C 任意选,减去情况 C 中有 cpibi 的方案数,由于刷表法 DP 从左往右确定每一个位置,因此选择容斥,即「至少」与「恰好」的转换。

fi,j,k,l 表示 bi=j,且前 i 个数中有 k 个位置是情况 B,至少 l 个位置是情况 C,并且至少有l 个位置满足是 cpibi 的情况 C。

cntx 表示耐心值小于等于 x 的人数。

情况 A 的转移:

fi,j,k,lfi+1,j+1,k,l

情况 B 的转移:

fi,j,k,l×(cntjkl)fi+1,j,k+1,l

情况 C,这个位置任意选的转移:

fi,j,k,lfi+1,j,k,l

情况 C,这个位置确定满足 cpibi 的转移:

fi,j,k,l×(cntjkl)fi+1,j,k,l+1

发现 k+ln 且可以合并,i 可以滚动数组,状态数 O(n3),转移 O(1),时间复杂度 O(n3),空间复杂度 O(n2)

答案就是 i=0nmj=0nfn,i,j(nj)!

最近更新