2 条题解
-
0
這道題非常優雅!
首先我們發現考慮這個 這個條件直接算比較困難,所以我們考慮正反則難!
因為僅可能有一個 滿足 所以我們考慮枚舉這一個
那我們算這個東西顯然直接組合數是算不了的了,我們使用dp,設 表示前 行在第 列選了 個,然後在其餘列選了 個的方案數
那我們轉移的時候有三種情況:
- 不選第 行
- 選擇第 行第 列的數字
- 選取第 行不在第 列的數字
則有dp轉移:
$$dp_{i,j,k}=dp_{i-1,j-1,k} \times (sum_i-a_{i,col}) $$初始值:
答案:
這樣時間複雜度是 的,過不了 那我們就考慮,類似存兩個變量,我們發現對於這兩個變量的具體值是沒有必要記錄的,僅僅需要記錄滿足 的情況,因為僅僅有這樣,才可以不滿足題目條件
那我們完全可以只記錄這個東西的差值,把dp狀態改成: 表示前 行選完之後,第 行列選的比其他列選的多 個(當然 可能是負數,所以我們需要加上一個偏移量 )
還是剛剛那幾種情況,則有轉移:
初值:
答案:
那我們總的答案如何算呢? 還是可以使用dp,也可以不用
我設表示前行,並且第行選/不選的方案數
顯然有轉移:
初值:
答案:
-
0
这道题非常优雅!
首先我们发现考虑这个 这个条件直接算比较困难,所以我们考虑正反则难!
因为仅仅可能有一个 满足 所以我们考虑枚举这一个
那我们算这个东西显然直接组合数是算不了的了,我们使用dp,设 表示前 行在第 列选了 个,然后在其余列选了 个的方案数
那我们转移的时候有三种情况:
- 不选第 行
- 选第 行第 列的数字
- 选第 行不在第 列的数字
则有dp转移:
$$dp_{i,j,k}=dp_{i-1,j-1,k} \times (sum_i-a_{i,col}) $$初值:
答案:
这样时间复杂度是 的,过不了
那我们就考虑,类似存两个变量,我们发现对于这两个变量的具体值是没有必要记录的,仅仅需要记录满足 的情况,因为仅仅有这样,才可以不满足题目条件
那我们完全可以仅仅记录这个东西的差值,把dp状态改为: 表示前 行选完之后,第 行列选的比其他列选的多 个(当然 可能是负数,所以我们需要加上一个偏移量 )
还是刚刚那几种情况,则有转移:
初值:
答案:
那我们总的答案如何算呢?还是可以使用dp,也可以不用
我设 表示前 行,并且第 行选/不选的方案数
显然有转移:
初值:
答案:
- 1
信息
- ID
- 459
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- (无)
- 递交数
- 5
- 已通过
- 3
- 上传者