From a3553d4bc929b8fa7f7261c93c98db0e50ff57cd Mon Sep 17 00:00:00 2001 From: wisdompeak Date: Sun, 13 Feb 2022 15:20:34 -0800 Subject: [PATCH] Update Readme.md --- Dynamic_Programming/2172.Maximum-AND-Sum-of-Array/Readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dynamic_Programming/2172.Maximum-AND-Sum-of-Array/Readme.md b/Dynamic_Programming/2172.Maximum-AND-Sum-of-Array/Readme.md index 80d237a68..6688609f3 100644 --- a/Dynamic_Programming/2172.Maximum-AND-Sum-of-Array/Readme.md +++ b/Dynamic_Programming/2172.Maximum-AND-Sum-of-Array/Readme.md @@ -15,7 +15,7 @@ ``` 其中上式里的available plans比较复杂。因为slot里面可以放0个或者1个或者2个数字,所以需要在state所代表的数字集合里面任意挑选0个、1个、2个数字的组合,这个组合的大小可能会有C(18,2)的级别。综上三层循环的总复杂度会是:```9*(2^18)*C(18,2)```,这是1e8数量级的数字,会TLE。 -第二种方法,我们用三进制数state来表示所有slots的状态(三进制数的每个bit表示该slot里面已经装了0个、1个或2个数字)。于是dp[i][state]表达的是:用完第i个数字、配对了state所表示的slots时,所得的最大价值。所以核心代码大致会是: +第二种方法,我们用三进制数state来表示所有slots的匹配状态(三进制数的每个bit表示该slot里面已经装了0个、1个或2个数字)。于是dp[i][state]表达的是:用完第i个数字、配对了state所表示的slots时,所得的最大价值。所以核心代码大致会是: ``` for (int i=0; i