bzoj 3632: 外太空旅行 最大团
3632: 外太空旅行
Time Limit: 5 Sec Memory Limit: 128 MB
Submit: 389 Solved: 129
[Submit][Status]
Description
是n名同学并不是和平相处的。有的人,比如小A和小B整天狼狈为奸,是好朋友;但还有的人,比如杜鲁门和赫鲁晓夫就水火不相容。这n名同学,由于是理科
生,都非常的理性,所以“朋友的朋友就是朋友”和“敌人的朋友就是敌人”这两句话对这些同学无效。换句话说,有可能小A和小B是朋友,小B和小C是朋友,
但是小A和小C两人势如水火。
Input
Output
Sample Input
1 2
2 3
3 1
1 4
Sample Output
说明:选编号为1,2,3的同学参加,他们互相都是朋友。
HINT
Source
最大团在考试的时候用随机化+贪心正确性还是很高的,而且能轻而易举拓展到n=200及以上。
而DFS算法则可以看做是dfs优化的经典题目。
算法传送门:http://www.cnblogs.com/zhj5chengfeng/archive/2013/07/29/3224092.html
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
#define MAXN 102
#define MAXM 100000
int e[][MAXM][];
int map[MAXN][MAXN];
int q[MAXN],topq;
int next[MAXN];
int n,m;
int work()
{
topq=;
q[]=;
int i,j;
bool flag;
for (i=;i<n;i++)
{
flag=true;
for (j=;j<=topq;j++)
{
if (!map[i][q[j]])
{
flag=false;break;
}
}
if (flag)
{
q[++topq]=i;
}
}
return topq+;
}
int main()
{
freopen("input.txt","r",stdin);
// freopen("output.txt","w",stdout);
scanf("%d",&n);
int i,j,k;
int x,y,z;
i=;
while (~scanf("%d%d",&e[][i][],&e[][i][]))
{
e[][i][]--;
e[][i][]--;
if (map[e[][i][]][e[][i][]])continue;
m++;
i++;
}
int ans=;
int cnt=;
while (cnt++<)
{
memset(map,,sizeof(map));
for (i=;i<m;i++)
{
map[e[cnt&][i][]][e[cnt&][i][]]=map[e[cnt&][i][]][e[cnt&][i][]]=true;
}
ans=max(ans,work());
for (i=;i<n;i++)
next[i]=i;
for (i=;i<n;i++)
{
x=rand()%n;
y=rand()%n;
swap(next[x],next[y]);
}
for (i=;i<m;i++)
{
for (j=;j<;j++)
{
e[cnt&^][i][j]=next[e[cnt&][i][j]];
}
}
}
printf("%d\n",ans);
}
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
#define MAXN 102
#define MAXM 100000
int e[MAXM][];
int map[MAXN][MAXN];
int n,m;
int s[MAXN][MAXN];
int tops[MAXN];
int l[MAXN],topl=-;
int ans=;
int rec[MAXN];
int dfs(int lev)
{
int i,j;
int x;
if (lev>ans)
{
ans=lev;
return ;
}
if (lev+tops[lev]+<=ans)return ;
for (i=;i<=tops[lev];i++)
{
x=s[lev][i];
tops[lev+]=-;
if (i<tops[lev]&&lev++rec[s[lev][i+]]<=ans)return ;
for (j=i;j<=tops[lev];j++)
{
if (map[x][s[lev][j]])s[lev+][++tops[lev+]]=s[lev][j];
}
l[lev]=x;
if (dfs(lev+))return ;
}
return ;
}
int main()
{
freopen("input.txt","r",stdin);
//freopen("output.txt","w",stdout);
scanf("%d",&n);
int i,j,k;
int x,y,z;
i=;
while (~scanf("%d%d",&e[i][],&e[i][]))
{
e[i][]--;
e[i][]--;
m++;
i++;
}
int cnt=;
memset(map,,sizeof(map));
for (i=;i<m;i++)
{
map[e[i][]][e[i][]]=map[e[i][]][e[i][]]=true;
}
for (i=n-;i>=;i--)
{
for (j=i;j<n;j++)
s[][j-i]=j;
tops[]=n-i-;
dfs();
rec[i]=ans;
// cout<<i<<endl;
}
printf("%d\n",ans);
}
bzoj 3632: 外太空旅行 最大团的更多相关文章
- BZOJ 3632 外太空旅行(最大团)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3632 [题目大意] 求图中的最大团. [题解] 最大团问题是npc问题,因此可以考虑随 ...
- BZOJ3632:外太空旅行(最大团,DFS)
Description 在人类的触角伸向银河系的边缘之际,普通人上太空旅行已经变得稀松平常了.某理科试验班有n个人,现在班主任要从中选出尽量多的人去参加一次太空旅行活动. 可是n名同学并不是和平相处的 ...
- 洛谷 P4212 外太空旅行
题目描述 在人类的触角伸向银河系的边缘之际,普通人上太空旅行已经变得稀松平常了.某理科试验班有n个人,现在班主任要从中选出尽量多的人去参加一次太空旅行活动. 可是n名同学并不是和平相处的.有的人,比如 ...
- BZOJ3632: 外太空旅行
BZOJ1547: 周末晚会 https://lydsy.com/JudgeOnline/problem.php?id=1547 分析: 对于一个串旋转若干次会回到本身,旋转次数即是同构个数,这个东西 ...
- 想要见识外太空?一款VR头显就能帮你实现梦想
除了宇航员,我们中的大多数人一生都没有机会前往地球之外的宇宙空间,只能在图片和纪录片中感受浩瀚宇宙的震撼. 美国肯尼迪航天中心和BrandVR合作推出的VR头显 而NASA在VR中的投资,创造的新的V ...
- BZOJ 1050: [HAOI2006]旅行comf(枚举+并查集)
[HAOI2006]旅行comf Description 给你一个无向图,N(N<=500)个顶点, M(M<=5000)条边,每条边有一个权值Vi(Vi<30000).给你两个顶点 ...
- BZOJ(4) 1050: [HAOI2006]旅行comf
1050: [HAOI2006]旅行comf Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 3984 Solved: 2236[Submit][St ...
- BZOJ 1690 奶牛的旅行
分数规划. #include<iostream> #include<cstdio> #include<cstring> #include<algorithm& ...
- BZOJ 1923 外星千足虫(高斯消元)
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1923 题意:有n个数字,m次测试.每个数字为0或者1.每次测试选出一些数字出来把他们加起 ...
随机推荐
- Android保存设置的PreferenceActivity
界面XML文件:preference_setting.xml <?xml version="1.0" encoding="UTF-8"?> < ...
- android之TabWidget选项卡
1 概览 l TabWidget与TabHost.tab组件一般包括TabHost和TabWidget.FrameLayout,且TabWidget.FrameLayout属于TabHost. l ...
- Chapter 6 - How to Play Music and Sound Effect
In this chapter, we would add background music to the game and play sound effect when the hero fires ...
- Sqlserver中实现oralce 数据库的rownumber
引用自:http://cai555.javaeye.com/blog/466033 方法1: with temp as ( select row_number() over(order by city ...
- Command Line-Version (SetACL.exe) – Syntax and Description
For a quick start, tell SetACL the following: Object name (-on): This is the path to the object SetA ...
- Sae配置Java数据库连接
Sae配置Java数据库连接 Sae在Java中配置mysql数据库 >>>>>>>>>>>>>>>>& ...
- 推断类型var
1.为什么使用推断类型var var可以根据变量的初始值自动推断局部变量类型,当无法确定所用变量的具体类型时可使用var 2.如何使用推断类型var 客户端代码 static void Main(st ...
- .net+easyui系列--搜索框
<input id="ss" style="width: 320px"> </input> <div id="mm&qu ...
- MES项目中出现的一个事务嵌套的使用场景
昨天在MES项目中,需要在业务逻辑的几个关键点记录错误信息,需要把错误信息写入数据表. 但是由于整个业务逻辑都是包在一个事务模板里面的 比如这样的: WhhTransactionTemplate tr ...
- [Mime] MediaTypes--电子邮件类型类 (转载)
点击下载 MediaTypes.rar 这个类是关于 电子邮件类型类的操作,在发送电子邮件是规定以什么样的格式发送,Xml,HTML,文本等方式1.电子邮件类型帮助类,Xml格式,HTML格式等看下面 ...