题目链接 HDU6149

百度之星复赛的题目……比赛的时候并没有做出来。

由于低点只有15个,所以我们可以考虑状压DP。

利用01背包的思想,依次考虑每个低点,然后枚举每个状态。

在每个状态里面任意枚举不在这个状态中的两个点,如果能构成一个valley,那么更新答案。

#include <bits/stdc++.h>

using namespace std;

#define rep(i, a, b)	for (int i(a); i <= (b); ++i)
#define dec(i, a, b) for (int i(a); i >= (b); --i)
#define MP make_pair
#define fi first
#define se second typedef long long LL; const int N = 53; int dp[2][(1 << 15) + 20];
int a[N], f[N], mp[N][N];
int n, m, q;
int T, x, y, S, now, ret; int main(){ scanf("%d", &T);
while (T--){
scanf("%d%d%d", &n, &m, &q);
memset(dp, 0, sizeof dp);
memset(mp, 0, sizeof mp);
memset(f, 0, sizeof f); rep(i, 1, m){
scanf("%d%d", &x, &y);
mp[x][y] = mp[y][x] = 1;
} rep(i, 0, q - 1){
scanf("%d", a + i);
f[a[i]] = 1;
} S = (1 << q) - 1;
now = 0;
rep(i, 1, n){
if (f[i]) continue;
now ^= 1;
rep(j, 0, S) dp[now][j] = dp[now ^ 1][j];
rep(j, 0, S){
rep(k, 0, q - 1){
if (!(j & (1 << k)) && mp[i][a[k]]){
rep(l, k + 1, q - 1){
if (!(j & (1 << l)) && mp[i][a[l]]){
int st = j | (1 << k) | (1 << l);
dp[now][st] = max(dp[now][st], dp[now ^ 1][j] + 1);
}
}
}
}
}
} ret = 0;
rep(i, 0, S) ret = max(ret, dp[now][i]);
printf("%d\n", ret);
} return 0;
}

最新文章

  1. C# Chart控件,chart、Series、ChartArea曲线图绘制的重要属性
  2. cookie 和 session 的基础知识
  3. Android-开发工具
  4. 从欧几里得距离、向量、皮尔逊系数到http://guessthecorrelation.com/
  5. ZOJ 1074 最大子矩阵和
  6. Jquery 获取表单值如input,select等方法
  7. NavigationView学习笔记
  8. [IB配置]PeopleSoft如何重置网关属性administrator密码
  9. Ubuntu重装mysql错误解决
  10. 设计模式 | 建造者模式/生成器模式(builder)
  11. Centos7 系统下怎么更改apache默认网站目录
  12. Transform(变换)—Y轴lable内容旋转
  13. LeetCode算法题-Fizz Buzz(Java实现)
  14. Win10系列:UWP界面布局基础4
  15. Spring Boot中的自定义start pom
  16. oracle权限赋予
  17. ckplayer的Error #2033:Can not call javascript:ckstyle()解决
  18. RNG—随机数产生器
  19. [GO]面向对象和面对过程的方式
  20. BitmapUtil(高效压缩不失真)

热门文章

  1. CeontOS6.5安装php环境
  2. Python基础篇 -- 字典
  3. 获得Java中System对应一些属性值
  4. Spring框架bean的注解管理方法之一 使用注解生成对象
  5. Core Animation演示
  6. Git学习——工作区和暂存区
  7. centos7 安装rabbitmq rabbitmq-c以及amqp扩展 详细篇
  8. UVa-208 Firetruck (图的DFS)
  9. 论文《Piexel Recurrent Nerual Network》总结
  10. TOJ 2419: Ferry Loading II