LA 6450 Social Advertising
【题目】
给一个无向图,每当对某个点操作,该点以及与该点相连的点都获得标记,问标记所有点至少需要操作多少次
输入
第一行为T,表示测试数据组数
每组测试数据第一行为n(1<=n<=20)表示有n个点,接下来n行,第i行描述与结点i所连的点,首个整数d,接下来有d个整数,表示结点i与它之间有一条边,该图没有自环
输出
每组测试数据输出一行,一个数表示至少需要操作的次数
【题解】
状态压缩+枚举
这道题数据范围好小,那么就应该不是什么特殊的算法了,可以考虑下搜索
将每个点与其他点的关系压缩,记录到数组中(比如a[i]),用一个最长20位的二进制数记录,比如结点i,当他的第j位是1,表示i与j之间有一条边,我们不妨设结点i的第i位为1。
我们设b代表当前每个点是否被标记的状态,第i位为1表示结点i已经被标记,初始时b为0,就是什么点都没有被标记。
那么开始搜索,不断枚举点,比如说枚举第i个结点,则调出来他与其他点的连接关系a[i],则b=b|a[i],一直枚举知道b=1<<n-1即可1<<n-1就是所有点都被标记的状态
但是DFS会超时,我们改变思路,只需枚举每个点是否被标记就可以了,枚举从1到1<<n-1,比如说枚举到i,其第j位为1表示我们对结点j操作,每枚举一个数,就统计一下它的二进制中有多少个1,统计满足条件时1的最小个数就可以了~
【吐槽】
竟然不是DP,竟然不是DP,还好不是,状压DP用着还不熟练。
一开始真的用DFS,但是TLE,接着加了各种剪枝,还是TLE,最后死心想想还是枚举一下标记状态吧,结果竟然AC了,比DFS加上剪枝还要快!还是位运算大法好啊。
【代码】
|
RunID |
User |
Problem |
Result |
Memory |
Time |
Language |
Length |
Submit Time |
|
Accepted |
0 KB |
1516 ms |
939 B |
2014-07-31 16:15:30 |
#include<cstdio>
#include<cstring>
#include<cmath>
#include<iostream>
#define eps 0.000001
#define N 30000
#define M 60000
using namespace std;
int i,j,k,n,m,x,y,T,b,a[300],tar,ans,tt; int main()
{
scanf("%d",&T);
while (T--)
{
memset(a,0,sizeof(a));
scanf("%d",&n);
tar=(1<<n)-1;
for (i=1;i<=n;i++)
{
scanf("%d",&k);
a[i]=a[i]|1<<(i-1);
for (j=1;j<=k;j++)
{
scanf("%d",&x);
a[i]=a[i]|1<<(x-1);
}
}
ans=300;b=0;
for (i=1;i<=tar;i++)
{
b=i;tt=0;
for (j=1;j<=n;j++)
if ((b&(1<<(j-1))))
{
tt++;
}
for (j=1;j<=n;j++)
{
if ((i&(1<<(j-1))))
{
b=b|a[j];
if (b==tar) break;
}
}
if (b==tar) ans=min(ans,tt);
}
printf("%d\n",ans);
}
}
LA 6450 Social Advertising的更多相关文章
- LA 6450 social advertising(dfs剪枝)
6450 Social AdvertisingYou have decided to start up a new social networking company. Other existing ...
- UVALive 6450 Social Advertising DFS解法
题意:一些人有朋友关系,在某个人的社交网站上投放广告可以被所有该人的直接朋友看到,问最小投放多少个广告使给出的人都看到广告.(n<=20) 解法:看到n的范围可以想到用二进制数表示每个人被覆盖与 ...
- Social media users of the world unite!
Social media users of the world unite!全世界社交媒体用户联合起来!If Plato were alive today, he might well regard ...
- 【targeting学习笔记】Display Advertising Targeting
背景:stanford的计算广告学(computational advertising)课程,yahoo的人主讲,课程链接:http://www.stanford.edu/class/msande23 ...
- What is Dark Social & Dark Traffic?
What is Dark Social & Dark Traffic? By Iaroslav Kudritskiy Google Analytics is supposed to speak ...
- 讲座:Influence maximization on big social graph
Influence maximization on big social graph Fanju PPT链接: social influence booming of online social ne ...
- leggere la nostra recensione del primo e del secondo
La terra di mezzo in trail running sembra essere distorto leggermente massima di recente, e gli aggi ...
- Le lié à la légèreté semblait être et donc plus simple
Il est toutefois vraiment à partir www.runmasterfr.com/free-40-flyknit-2015-hommes-c-1_58_59.html de ...
- [Computational Advertising] 计算广告学笔记之基础概念
因为工作需要,最近一直在关注计算广告学的内容.作为一个新手,学习计算广告学还是建议先看一下刘鹏老师在师徒网的教程<计算广告学>. 有关刘鹏老师的个人介绍:刘鹏现任360商业产品首席架构师, ...
随机推荐
- 【COGS1672】难存的情缘
[题目描述] 一天机房的夜晚,无数人在MC里奋斗着... 大家都知道矿产对于MC来说是多么的重要,但由于矿越挖越少,勇士们不得不跑到更远的地方挖矿,但这样路途上就会花费相当大的时间,导致挖矿效率底下. ...
- mysql 数据库查询与实例。
资料是从教材弄下来的,加上了我的理解.主要内容是练习实例,在写博文中学习命令行,当然也希望这篇博文能帮助其他人学习mysq数据库命令 SELECT 语句可以从一个或多个表中选取特定的行和列 SELEC ...
- sql编程 1
declare emp_count number;begin select count(*) into emp_count from emp where HIOREDATE >= TO_DATE ...
- linux内核学习之二:编译内核
在linux内核学习系列的第一课中讲述了搭建学习环境的过程(http://www.cnblogs.com/xiongyuanxiong/p/3523306.html),环境搭好后,马上就进入到下一环节 ...
- A记录、CNAME记录、MX记录
A 记录(Address) (一句话:用来指定域名和服务器IP的对应关系) 是用来指定主机名(或域名)对应的IP地址记录.用户可以将该域名下的网站服务器指向到自己的web server上.同时也可以 ...
- (推荐)jquery.pagination.js分页
序言 本来想自己对这个分页使用做一些总结的,但发现大神们已经总结的很好了.所以给推荐一下. 转自:http://www.cnblogs.com/knowledgesea/archive/2013/01 ...
- 关于extern "C" 的用法
而在C语言的头文件中,对其外部函数只能指定为extern类型,C语言中不支持extern "C"声明,在.c文件中包含了extern "C"时会出现编译语法错误 ...
- 转:尝试用Gearman实现分布式处理(PHP)
原文来自于http://blog.csdn.net/fdipzone/article/details/7166520 本文需要你已对Gearman有个大致了解. 顺便再推荐两篇参考文章http://h ...
- GFF 和 OGS 这两种触摸屏谁更好?
我将从成本分析.制程分析.用户体验三个方面来回答楼主的问题.GFF的触摸屏从字面上翻译过来,就是一层玻璃cover,两层film构成的触摸屏.其中,玻璃cover作为整个手机的coverlens,从外 ...
- BAT之间的区别(学点网页编程,然后开始研究)
A: 阿里不就是靠网页起家的吗? T: 腾讯靠客户端. B: 百度是靠网页背后的算法技术支持- 最近网页技术又发布了很多新功能,而现在网页功能也已经很强大了. 不知道自己是不是老了,总觉得不喜欢网页( ...