HDU-2017"百度之星"程序设计大赛-复赛-1006-Valley Numer II
2017-08-23 23:24
337 查看
ACM模版
描述
题解
数据这么小,用状压刚刚好,枚举低位点,考虑所有高位点与其的组合即可。代码
#include <iostream> #include <cstdio> #include <cstring> using namespace std; const int MAXN = 1e4 + 10; const int MAXM = 100; const int MAXD = (1 << 15) + 10; int N, M, K; int vis[MAXN]; int V[MAXN]; int map[MAXM][MAXM]; int dp[2][MAXD]; int main() { int T; scanf("%d", &T); while (T--) { memset(vis, 0, sizeof(vis)); memset(map, 0, sizeof(map)); scanf("%d%d%d", &N, &M, &K); int X, Y; for (int i = 0; i < M; i++) { scanf("%d%d", &X, &Y); map[X][Y] = map[Y][X] = 1; } for (int i = 0; i < K; i++) { scanf("%d", &V[i]); vis[V[i]] = 1; } memset(dp, 0, sizeof(dp)); int now = 0, tmp = 1 << K, sta; for (int i = 1; i <= N; i++) { if (vis[i]) { continue; } now ^= 1; for (int j = 0; j < tmp; j++) { dp[now][j] = dp[now ^ 1][j]; } for (int j = 0; j < tmp; j++) { for (int k = 0; k < K; k++) { if (!(j & (1 << k)) && map[i][V[k]]) { for (int l = k + 1; l < K; l++) { if (!(j & (1 << l)) && map[i][V[l]]) { sta = (j) | (1 << k) | (1 << l); dp[now][sta] = max(dp[now][sta], dp[now ^ 1][j] + 1); } } } } } } int ans = 0; for (int i = 0; i < tmp; i++) { ans = max(ans, dp[now][i]); } printf("%d\n", ans); } return 0; }
相关文章推荐
- HDU-2017"百度之星"程序设计大赛-初赛(B)-1006-小小粉丝度度熊
- HDU-2017"百度之星"程序设计大赛-复赛-1003-Pokémon GO
- 2017"百度之星"程序设计大赛 - 初赛(A)1006——HDU 6113
- 2017"百度之星"程序设计大赛 - 复赛1005&&HDU 6148 Valley Numer【数位dp】
- HDU-2017"百度之星"程序设计大赛-复赛-1005-Valley Numer
- 2017"百度之星"程序设计大赛 - 复赛1001&&HDU 6144 Arithmetic of Bomb【java大模拟】
- HDU-2017"百度之星"程序设计大赛-复赛-补题
- HDU - 6113 度度熊的01世界 (2017"百度之星"程序设计大赛 - 初赛(A)1006)
- 2017"百度之星"程序设计大赛 - 复赛1003&&HDU 6146 Pokémon GO【数学,递推,dp】
- HDU-2017"百度之星"程序设计大赛-复赛-1001-Arithmetic of Bomb
- 2017"百度之星"程序设计大赛 - 初赛(B)1006 小小粉丝度度熊(维护最大值)
- HDU 6109 数据分割 【并查集+set】 (2017"百度之星"程序设计大赛 - 初赛(A))
- HDU-2017"百度之星"程序设计大赛-初赛(B)-补题
- 2017"百度之星"程序设计大赛 - 资格赛 HDU 6083 度度熊的午饭时光
- 2017"百度之星"程序设计大赛 - 初赛(A)1006 度度熊的01世界
- HDU 6080 2017"百度之星"程序设计大赛 - 资格赛
- 2017"百度之星"程序设计大赛 - 复赛
- 2017"百度之星"程序设计大赛 - 复赛(1001,1003,1005)
- HDU 6113 度度熊的01世界 【DFS】(2017"百度之星"程序设计大赛 - 初赛(A))
- 2017"百度之星"程序设计大赛 - 初赛(A)1005【打表】——HDU 6112