【P2016】战略游戏(贪心||树状DP)
这个题真是。。。看了一会之后,发现有一丝丝的熟悉,再仔细看了看,R,这不是那个将军令么。。。然后果断调出来那个题,还真是,而且貌似还是简化版的。。。于是就直接改了改建树和输入输出直接交了。。阿勒,就20分。。真是不给面子,于是就继续简化了代码。。。然后又交,变0分了。发现建树的时候双向边里面放了顺序一样的字母。。再改过来,A了,然而树形DP做法还未可知。。或许蒟蒻我就只能贪心吧。。
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
#define re register
using namespace std;
struct po
{
int next;
int to;
int dis;
};
po edge[];
int head[],b[],temp[],dis[],f[];
int T,s,t,n,m,x,w,a,l,num,flag,ans,visit[],k;
inline int read() {
char ch=' ';
int w=,x=;
while(ch!='-'&&(ch<''||ch>''))ch=getchar();
if(ch=='-')w=-,ch=getchar();
while(ch>=''&&ch<='')x=x*+ch-'',ch=getchar();
return x*w;
}
inline void add_edge(int from,int to,int dis)
{
edge[++num].next=head[from];
edge[num].to=to;
edge[num].dis=;
head[from]=num;
}
inline void dfs(int x,int fa)
{
temp[++l]=x;
for(re int i=head[x];i;i=edge[i].next)
if(edge[i].to!=fa)
dfs(edge[i].to,x);
}
int main()
{
cin>>n;
k=;
for(re int i=;i<=n;i++)
{
s=read();
s++;
m=read();
for(re int j=;j<=m;j++)
{
t=read();
t++;
add_edge(s,t,);
add_edge(t,s,);
f[t]=s;
}
}
dfs(,);
for(re int i=n;i>=;i--)
if(!b[temp[i]]&&!b[f[temp[i]]])
b[f[temp[i]]]=;
for(re int i=;i<=n;i++)
if(b[i])
ans++;
cout<<ans;
}
给出树状DP做法:
#include<iostream>
#include<cstdio>
#include<cstring>
#define re register
using namespace std;
struct po
{
int next;
int to;
int dis;
};
po edge[];
int head[],b[],temp[],dis[],f[][];
int T,s,t,n,m,x,w,a,l,num,flag,ans=,visit[],k;
inline int read() {
char ch=' ';
int w=,x=;
while(ch!='-'&&(ch<''||ch>''))ch=getchar();
if(ch=='-')w=-,ch=getchar();
while(ch>=''&&ch<='')x=x*+ch-'',ch=getchar();
return x*w;
}
inline void add_edge(int from,int to,int dis)
{
edge[++num].next=head[from];
edge[num].to=to;
edge[num].dis=;
head[from]=num;
}
inline void dfs(int x,int fa)
{
f[x][]=;f[x][]=;
for(re int i=head[x];i;i=edge[i].next)
{
int u=edge[i].to;
if(u!=fa)
{
dfs(u,x);
f[x][]+=min(f[u][],f[u][]);
f[x][]+=f[u][];
}
}
}
int main()
{
cin>>n;
k=;
for(re int i=;i<=n;i++)
{
s=read();
s++;
m=read();
for(re int j=;j<=m;j++)
{
t=read();
t++;
add_edge(s,t,);
add_edge(t,s,);
}
}
for(re int i=;i<=n;i++)
{
memset(f,,sizeof(f));
dfs(i,i);
ans=min(ans,min(f[i][],f[i][]));
}
cout<<ans;
}
【P2016】战略游戏(贪心||树状DP)的更多相关文章
- P2016 战略游戏——树形DP大水题
P2016 战略游戏 树形DP 入门题吧(现在怎么是蓝色标签搞不懂): 注意是看见每一条边而不是每一个点(因为这里错了好几次): #include<cstdio> #include< ...
- 洛谷P2016 战略游戏
P2016 战略游戏 题目描述 Bob喜欢玩电脑游戏,特别是战略游戏.但是他经常无法找到快速玩过游戏的办法.现在他有个问题. 他要建立一个古城堡,城堡中的路形成一棵树.他要在这棵树的结点上放置最少数目 ...
- 树状DP (poj 2342)
题目:Anniversary party 题意:给出N各节点的快乐指数,以及父子关系,求最大快乐指数和(没人职员愿意跟直接上司一起玩): 思路:从底向上的树状DP: 第一种情况:第i个员工不参与,F[ ...
- poj3659树状DP
Cell Phone Network Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 6273 Accepted: 225 ...
- hdu 1561 The more, The Better_树状dp
题目链接 题意:给你一棵树,各个节点都有价值(除根节点),从根节点出发,选择m个节点,问最多的价值是多小. 思路:很明显是树状dp,遍历树时背包最优价值,dp[i][k]=max{dp[i][r]+d ...
- poj 2342 Anniversary party_经典树状dp
题意:Ural大学有n个职员,1~N编号,他们有从属关系,就是说他们关系就像一棵树,父节点就是子节点的直接上司,每个职员有一个快乐指数,现在要开会,职员和职员的直接上司不能同时开会,问怎才能使开会的快 ...
- 树状DP HDU1520 Anniversary party
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1520 题意:职员之间有上下级关系,每个职员有自己的happy值,越高在派对上就越能炒热气氛.但是必须是 ...
- [Codeforces743D][luogu CF743D]Chloe and pleasant prizes[树状DP入门][毒瘤数据]
这个题的数据真的很毒瘤,身为一个交了8遍的蒟蒻的呐喊(嘤嘤嘤) 个人认为作为一个树状DP的入门题十分合适,同时建议做完这个题之后再去做一下这个题 选课 同时在这里挂一个选取节点型树形DP的状态转移方程 ...
- HDU 4714 Tree2cycle(树状DP)(2013 ACM/ICPC Asia Regional Online ―― Warmup)
Description A tree with N nodes and N-1 edges is given. To connect or disconnect one edge, we need 1 ...
随机推荐
- 获取当前AppDelegate 正在显示的UIViewController
UIWindow+PazLabs.h (header file) #import <UIKit/UIKit.h> @interface UIWindow (PazLabs) - (UIVi ...
- 42、使用存放在存assets文件夹下的SQLite数据库
因为这次的项目需要自带数据,所以就就把数据都放到一个SQLite的数据库文件中了,之后把该文件放到了assets文件夹下面.一开始打算每次都从assets文件夹下面把该文件夹拷贝到手机的SD卡或者手机 ...
- iOS学习笔记(三)——iOS系统架构
iOS的系统架构分为四个层次:核心操作系统层(Core OS layer).核心服务层(Core Services layer).媒体层(Media layer)和可触摸层(Cocoa Touch l ...
- SharePoint解决方案及开发系列(2)-ECM
很多次跟客户做咨询及沟通的时候,客户都问SharePoint能做什么?是不是就是做文档管理?为什么要花那么多的钱没SharePoint?高大上? 我上家公司面试的时候,我的那个BOSS面试官有一个问题 ...
- python问号堂--第二篇
1.分别书写数字5,10,32,7的二进制表示? 5---0b101 10---0b1010 32---0b100000 7---0b111 以上结果可以bin()来检测 2. ...
- Git中如何将代码恢复到之前某个节点
本文主要讲如何使用小乌龟软件将代码恢复到之前某个节点. 一 说明 在实际项目开发中,都是很多人一起联合开发,往往会遇到这种情况:马上要发版本了,突然发现一个致命BUG,而这个BUG是由于某个小伙伴修改 ...
- 解决后台无法进入提示DedeCMS Error: (PHP 5.3 and above) Please set 'request_order' ini value
最近小美眉的网站被盯上了,被添加了非常多的dubo页面,删除了5w多个文件,但还是不停的增加,因为网站权重还可以,很多都被收录了,结果可想而知,ytkah帮她迁移,在迁移网站时遇到了一些问题,后台登录 ...
- 0402-服务注册与发现-Eureka Server使用、将服务注册到Eureka server上
一.Eureka Server使用 官方文档地址:http://cloud.spring.io/spring-cloud-static/Edgware.SR3/single/spring-cloud. ...
- iOS UIWebView键盘处理
让UIWebView弹出键盘上的按钮显示中文 http://www.cr173.com/html/19440_1.html 如果你有下面的问题,此文也许会帮到你. 键盘遮盖了UIWebView. ...
- 爬虫四 selenium模块
一.介绍 selenium最初是一个自动化测试工具,而爬虫中使用它主要是为了解决requests无法直接执行JavaScript代码的问题 selenium本质是通过驱动浏览器,完全模拟浏览器的操作, ...