HDU1530 Maximum Clique dp
正解:dp
解题报告:
这儿是传送门
又是个神仙题趴QAQ
这题就直接说解法辣?主要是思想比较难,真要说有什么不懂的知识点嘛也没有,所以也就没什么好另外先提一下的知识点QAQ
首先取反,就变成了求最大独立集,就方便求一些,这是第一个小技巧(记得总结下QAQ!哪天我要写个图论技巧总结QAQ
然后把所有点平均分成两份,A和B
对A预处理出它的所有子集的最大独立集,记录下来
这里可以用dp做一下,对子集T中的任意一点v,不选就是从dp[T-v]转移来,选就是从dp[T-v-u]转移来(u是所有和v有连边的点
然后可以顺便记个方案数
然后对于B我们枚举独立集,把A中和独立集有边相连的点都删了,答案就是dp[剩余的点]
(顺便补个细节
把边状压起来
这样查询什么的时候就可以O(1)地处理掉
下面的代码是还未完成版只是mk下而已QAQ
over
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define rp(i,x,y) for(register ll i=x;i<=y;++i)
#define lowbit(x) x&(-x) ll n,m,zt[],dp[],sz[]; inline ll read()
{
register char ch=getchar();register ll x=;register bool y=;
while(ch!='-' && (ch>'' || ch<''))ch=getchar();
if(ch=='-')ch=getchar(),y=;
while(ch>='' && ch<='')x=(x<<)+(x<<)+(ch^''),ch=getchar();
return y?x:-x;
} int main()
{
n=read();m=read();rp(i,,n)zt[i]=(<<n)-;rp(i,,m){ll t1=read(),t2=read();zt[t1]^=(<<t2);zt[t2]^=(<<t1);}
rp(i,,)dp[<<i]=,sz[<<i]=;
rp(i,,(<<)-)
{
ll tmp=i;
while(tmp)
{
ll v=lowbit(tmp);tmp-=v;
ll sz1=sz[i^v]+,nm1=dp[i^v];if(sz1>sz[i])sz[i]=sz1;if(sz1==sz[i])dp[i]+=nm1;
ll sz2=sz[(i^v)&zt[v]],nm2=dp[(i^v)&zt[v]];if(sz2>sz[i])sz[i]=sz2;if(sz2==sz[i])dp[i]+=nm2;
}
}
/*其实我现在要做应该还是做得出来的了,,,就是在右边枚举独立集然后删了所有有连边的点然后查看sz就好了,,,但是我实在不想打了,,,明天打趴QAQ*/
return ;
}
实在不会打代码,,,灵巧是真的菜QAQ
HDU1530 Maximum Clique dp的更多相关文章
- 【最大团】【HDU1530】【Maximum Clique】
先上最大团定义: 最大团问题(Maximum Clique Problem, MCP)是图论中一个经典的组合优化问题,也是一类NP完全问题,在国际上已有广泛的研究,而国内对MCP问题的研究则还处于起步 ...
- 2019牛客多校第五场 F maximum clique 1 状压dp+最大独立集
maximum clique 1 题意 给出一个集合s,求每个子集的最大独立集的权值和(权值是独立集的点个数) 分析 n比较小,一股浓浓的暴力枚举每一个子集的感觉,但是暴力枚举模拟肯定会T,那么想一想 ...
- Maximum Clique
Maximum Clique Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) To ...
- 回溯法——最大团问题(Maximum Clique Problem, MCP)
概述: 最大团问题(Maximum Clique Problem, MCP)是图论中一个经典的组合优化问题,也是一类NP完全问题.最大团问题又称为最大独立集问题(Maximum Independent ...
- hdu 1530 Maximum Clique (最大包)
Maximum CliqueTime Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)T ...
- maximum clique 1
maximum clique 1 时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 262144K,其他语言524288KSpecial Judge, 64bit IO Format: % ...
- 【HDU1530】【ZOJ1492】Maximum Clique
Position: http://poj.org/problem?id=3241 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCod ...
- POJ2479 Maximum sum[DP|最大子段和]
Maximum sum Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 39599 Accepted: 12370 Des ...
- hdu 1530 Maximum Clique
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1530 题目分类:最大团问题 DP + DFS 代码: #include<bits/stdc++. ...
随机推荐
- 【Java集合的详细研究7】Set和List 的关系与区别
两个接口都是继承自Collection. List (inteface) 次序是List 的最重要特点,它确保维护元素特定的顺序. --ArrayList 允许对元素快速随机访问. --LinkedL ...
- Extjs 下拉框
刚刚熟练了easyui控件的使用,又開始了如今的这个项目. 这个项目是个半成品.前端使用的是Extjs控件,jsp中没有代码.就引用了非常多的js...于是乎有种不知所措了呀. . . 说实话特别的不 ...
- Ubuntu 10.04 安装 Oracle11gR2
注意点: 在 ubuntu的 /bin 下建立以下几个基本命令的链接: /bin/basename->/usr/bin/basename /bin/awk->/usr/bin/gawk / ...
- 如何使用matlab中的胞元数组
胞元数组(cell Arry)的基本组分是胞元(cell),每个胞元本身在数组中是平等的,只能以下标区分.胞元可以存放任何类型.任何大小的数组,如任意维数值数组.字符串数组.符号对象等,而且同一个胞元 ...
- Phpcms V9当前栏目及所有二级栏目下内容调用标签
在二级栏目列表页调用: <!--* 获取子栏目* @param $parentid 父级id* @param $type 栏目类型* @param $self 是否包含本身 0为不包含* @pa ...
- oracle最精简客户端(3个文件+1个path变量就搞定oracle客户端)
oracle最精简客户端: network\admin\tnsnames.ora (自己新建)oci.dlloraocieill.dll 将oci.dll的路径加到path变量中就可以了 tnsnam ...
- 【spring教程之中的一个】创建一个最简单的spring样例
1.首先spring的主要思想,就是依赖注入.简单来说.就是不须要手动new对象,而这些对象由spring容器统一进行管理. 2.样例结构 如上图所看到的,採用的是mavenproject. 2.po ...
- 漫谈.Net关键字系列之一Sealed与Final(转)
转自:http://www.cnblogs.com/isline/archive/2010/08/31/1813396.html Sealed与Final修饰符其实并不是一个语言平台的产物,他们有着各 ...
- Win10 安装msi 提示2502、2503的错误代码 -- 命令提示符(管理员) -- msiexec /package
前言: 归根到底是权限不够导致的.win7应该不会有这个问题. 解决方法: 方法1:临时安装方法 1.鼠标移到桌面左下角->右键(或者直接: WIN+X键),命令提示符(管理员):2.输 ...
- laravel 使用验证码
1)php.ini需要开两个扩展 extension=php_fileinfo.dllextension=php_gd2.dll 2)使用composer安装类包 composer require m ...