【特殊的图+DP】【11月校赛】大家一起玩游戏
大家一起玩游戏
Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other)
Total Submission(s) : 26 Accepted Submission(s) : 2
Font: Times New Roman | Verdana | Georgia
Font Size: ← →
Problem Description
Input
接下来有T组case,每组case有 n + 2 行
第一行有一个整数n(1 <= n <= 100) 表示有n个小朋友。
接下来n行,每行以整数k开始,表示第i个小朋友有k个讨厌的人,接着k个数表示他讨厌的小朋友编号。(1 <= k <= 2) 如果i讨厌j,这必然也有j讨厌i。
接下去一行有n个值,表示每个小朋友的快乐值。
Output
Sample Input
1
3
1 2
2 1 3
1 2
5 9 5
Sample Output
10
Source
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <ctime>
#include <algorithm>
#include <iostream>
#include <sstream>
#include <string>
#define oo 0x13131313
using namespace std;
int MAP[103][3];
int wei[103];
int visit[103];
int F[103][3][3];
int n,m;
int temp;
int ans=0;
/* 定义变量区*/
void input()
{
memset(F,0,sizeof(F));
memset(visit,0,sizeof(visit));
ans=0;
memset(MAP,0,sizeof(MAP));
/*初始化区*/
cin>>n;
for(int i=1;i<=n;i++)
{
scanf("%d",&m);
for(int j=1;j<=m;j++)
{
scanf("%d",&temp);
MAP[i][j]=temp;
MAP[i][0]++;
}
}
for(int i=1;i<=n;i++)
scanf("%d",&wei[i]);
}
void dfs(int pos,int deep)
{
int OK=0;
int t1=0,t2=0,I;
for(int i=1;i<=MAP[pos][0];i++)
{
if(!visit[MAP[pos][i]])
{
OK=1;
visit[MAP[pos][i]]=1;
dfs(MAP[pos][i],deep+1);
}
}
if(OK)
{
F[deep][0][0]=max(F[deep+1][0][0],F[deep+1][1][0]);
F[deep][1][0]=F[deep+1][0][0]+wei[pos];
}
else
{
F[deep][0][0]=0;
F[deep][1][0]=wei[pos];
}
}
void init()
{
freopen("a.in","r",stdin);
freopen("a.out","w",stdout);
}
void dfs2(int pos,int deep)
{
int OK=0;
int t1=0,t2=0,I;
for(int i=1;i<=MAP[pos][0];i++)
{
if(!visit[MAP[pos][i]])
{
OK=1;
visit[MAP[pos][i]]=1;
dfs2(MAP[pos][i],deep+1);
break;
}
}
if(OK)
{
F[deep][0][0]=max(F[deep+1][0][0],F[deep+1][1][0]);
F[deep][1][0]=F[deep+1][0][0]+wei[pos];
F[deep][0][1]=max(F[deep+1][0][1],F[deep+1][1][1]);
F[deep][1][1]=F[deep+1][0][1]+wei[pos];
}
else
{
F[deep][0][0]=0;
F[deep][1][0]=-2100000000;
F[deep][0][1]=0;
F[deep][1][1]=wei[pos];
}
}
int main()
{
// init();
int T;
cin>>T;
while(T--)
{
input();
for(int i=1;i<=n;i++)
{
if(MAP[i][0]==1&&visit[i]==0)
{
visit[i]=1;
dfs(i,1);
ans+=max(F[1][0][0],F[1][1][0]);
memset(F,0,sizeof(F));
}
}
for(int i=1;i<=n;i++)
{
if(visit[i]==0)
{
visit[i]=1;
dfs2(i,1);
F[1][0][0]=max(F[1][0][0],F[1][1][0]);
F[1][0][0]=max(F[1][0][0],F[1][0][1]);
ans+=F[1][0][0];
memset(F,0,sizeof(F));
}
}
cout<<ans<<endl;
}
return 0;
}
在dfs的末尾 给F赋初值
【特殊的图+DP】【11月校赛】大家一起玩游戏的更多相关文章
- 2016年11月ACM/ICPC亚洲区北京赛赛后总结
2016年11月12到11月13为期两天的比赛,这是我们这个对第一次去打亚洲区域赛,经过这次比赛,我认识到了自己与别人的差距,也许我们与别人的起点不同,但这不是理由. 这次的比赛12号的热身赛两点开始 ...
- 2014哈商大ICPC/ACM校赛解题报告
被debug邀请去參加校赛,哎,被虐..我对不起工大.. 由于本人不搞ACM,算法处于HelloWorld水准.. 虽然题目除了鸟不拉屎星人之外都非常水,但我能做到这个程度,全然是超水平发挥了.. 数 ...
- 2016 华南师大ACM校赛 SCNUCPC 非官方题解
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...
- 2014上半年acm总结(1)(入门+校赛)
大一下学期才开始了acm,不得不说有一点迟,但是acm确实使我的生活充实了很多,,不至于像以前一样经常没事干= = 上学期的颓废使我的c语言学的渣的一笔..靠考前突击才基本掌握了语法 寒假突然醒悟, ...
- HZNU第十二届校赛赛后补题
愉快的校赛翻皮水! 题解 A 温暖的签到,注意用gets #include <map> #include <set> #include <ctime> #inclu ...
- Comet OJ 夏季欢乐赛 篮球校赛
Comet OJ 夏季欢乐赛 篮球校赛 题目传送门 题目描述 JWJU注重培养学生的"唱,跳,rap,篮球"能力.于是每年JWJU都会举办篮球校赛,来给同学们一个切磋篮球技术的平台 ...
- 9.11 myl模拟赛
9.11 myl 模拟赛 100 + 100 + 0 第一题耗费了太多的时间,导致最后一题没有时间想,直接去写了暴力,而且出题人没有给暴力分.... Problem 1. superman [题目描述 ...
- psp进度(11月25号-31号)
本周psp进度 11月25号 内容 开始时间 结束时间 打断时间 净时间 处理数据集 9:27 11:34 12m 115m 11月27号 内容 开始时间 结束时间 打断时间 净时间 scr ...
- 本周psp(11月17-23)
本周psp进度 11月19号 内容 开始时间 结束时间 打断时间 净时间 发布读书笔记 11:05 11:25 0 20m 看构建之法书 9:50 10:48 5m 53m 11月20号 内容 开始时 ...
随机推荐
- [Protractor] Running tests on multiple browsers
Testing your AngularJS application on multiple browsers is important, and Protractor offers this abi ...
- Android应用程序线程消息循环模型分析
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6905587 我们知道,Android应用程序是 ...
- HDU 1085 Holding Bin-Laden Captive! (母函数)
Holding Bin-Laden Captive! Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Ja ...
- Https协议简析及中间人攻击原理
1.基础知识 1.1 对称加密算法 对称加密算法的特点是加密密钥和解密密钥是同一把密钥K,且加解密速度快,典型的对称加密算法有DES.AES等 ...
- Android编译过程详解(三)
前面两节讲解了自定义Android编译项和创建Product产品配置文件,除了编译和定义产品相关环境变量外,还需要定义Board相关环境变量. 1. build/core/config.mk 109 ...
- SQL按汉语拼音首字母排序
以常用到的省的数据表(province)为例,其中name字段为省的名称,SQL语句如下: ))) as py ,a.name from province a left outer join ( se ...
- 1203.1——条件语句 之 if语句
用if语句可以构成分支结构.它根据给定的条件进行判断,以决定执行某个分支程序段.C语言的if语句有三种基本形式. 语句的三种形式 1) 第一种形式为基本形式:if if(表达式) 语句其 ...
- OpenCV——分水岭算法
分水岭算法,是一种基于拓扑理论的数学形态学的分割方法,其基本思想是把图像看作是测地学上的拓扑地貌,图像中每一点像素的灰度值表示该点的海拔高度,每一个局部极小值及其影响区域称为集水盆,而集水盆的边界则形 ...
- (转)Source vs Binary Disadvantages & Advantages of each!
原链接:http://www.linuxforums.org/forum/newbie/26472-source-vs-binary-disadvantages-advantages-each.htm ...
- 龙邱STM32单片机用J-LINK下载无法被识别的解决方法
问题如下: 按照正常步骤使用keil5给龙邱的stm32下载程序,SWD下载方式提示no cortex-m sw device found,JTAG方式提示no cortex-m device fou ...