
状压dp
不哭的超人
愿你孤独的努力终有回报,愿你前行的路上有人相伴。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
P5911 [POI2004]PRZ
P5911 [POI2004]PRZ 解题思路:状压dp。先预处理,假设i的二进制为(1010),表示通过了第2个成员和第4个成员最少花了多少时间。dp[i] = min(dp[i],dp[i^j]+T[j]),表示在i这种状态下,j是i的子集,i ^j是j的补集;但此时V[j]总体重应该要小于等于w #include<bits/stdc++.h> using namespace std; typedef long long ll; typedef long double lf; typedef原创 2021-01-17 19:50:51 · 221 阅读 · 0 评论 -
P3052 [USACO12MAR]Cows in a Skyscraper G
P3052 [USACO12MAR]Cows in a Skyscraper G 解题思路:状压DP.dp[i]表示i的二进制为1的对应的第几个数,需要最少几个分组。r[i]表示在i二进制的状态下,最后一个分组还剩余的空间。 #include<bits/stdc++.h> using namespace std; typedef long long ll; typedef long double lf; typedef pair<int,int>P; const int inf =原创 2020-12-22 17:05:48 · 266 阅读 · 0 评论 -
P1433 吃奶酪
P1433 吃奶酪 解题思路:dp[i][k],假设k的二进制是01011,表示从i点出发,走过的点有1、2、4的最短距离。 #include<bits/stdc++.h> using namespace std; typedef long long ll; typedef long double lf; typedef pair<int,int>P; const int inf = 0x7f7f7f7f; const double INF = 1e16; const int N =原创 2020-12-21 17:18:57 · 160 阅读 · 0 评论 -
Watch Later
Watch Later 题解: 状压DP。因为最多有K个不同的字符,那么就会有2k−12^{k} - 12k−1种情况。 dp[i]表示的是在第i种状态,将i化成二进制,其中为1的已经成为最优解了,就是为1的已经被选取了,然后考虑剩下为0的。那么就是只有dp[i],i的二进制全为1的时候是最优解。那么dp[(1<<k)-1]是最优解。 #include<bits/stdc++.h> #include<algorithm> #include<iostream>原创 2020-09-15 12:40:34 · 511 阅读 · 0 评论 -
Corn Fields(POJ3254)
Description Farmer John has purchased a lush new rectangular pasture composed of M by N (1 ≤ M ≤ 12; 1 ≤ N ≤ 12) square parcels. He wants to grow some yummy corn for the cows on a number of squares. R...原创 2019-07-09 00:50:45 · 224 阅读 · 0 评论