2014百度之星 Party
Party
Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 0 Accepted Submission(s): 0
现在,B公司准备举办一次盛大的聚会,公司希望员工通过这次聚会获得尽可能多的快乐值。第i个员工的快乐值是一个大于0不大于100的整数,如果他参加聚餐,他就会获得的快乐值,如果他的对手参加聚餐,他的快乐值就为0。
但老板在安排聚餐时不知道如何解决这个问题,因此,他找到你帮忙计算这次聚会最多可以带来多少快乐值。
每组数据的第一行包括一个整数N,表示共有N个员工。(约有500组数据N不大于500,约有10组数据N不大于100000)
第二行是N个用空格隔开的整数,第i个整数表示第i个员工的对手的编号。数据保证 xi ∈ [1,N], 且 xi <> i .
第三行也包含N个用空格隔开的整数,表示第i个员工能够获得的快乐值ai。
8
2 7 1 8 4 2 3 5
50 30 40 40 50 10 70 60
190
在样例中,应选择1、6、7、8号员工。
max(dp[0], dp[1]);而每个连通子图的最优解是max(max_value1,max_value2)
解题代码:
#include<iostream>
#include<stdlib.h>
#include<string.h>
#include<algorithm>
#include<stdio.h>
#include<vector>
#include<queue> using namespace std; const int N = ; int val[N],ru[N],vis[N],res[N][];
vector<int>edge[N];
queue<int>que; int main()
{
int T = ;
int csnum;
scanf("%d",&csnum);
for(int cs=;cs<=csnum;cs++)
{
int n;
scanf("%d",&n); for(int i=;i<=n;i++)
{
edge.clear();
ru=;
vis=;
}
while(que.empty()==false)
que.pop(); for(int i=;i<=n;i++)
{
int a;
scanf("%d",&a);
edge.push_back(a);
edge[a].push_back(i);
ru++;ru[a]++;
}
for(int i=;i<=n;i++)
{
scanf("%d",&val);
res[]=val;
res[]=;
} for(int i=;i<=n;i++)
{
if(ru==)
que.push(i);
} while(que.empty()==false)
{
int x=que.front();
que.pop();
vis[x]=;
for(int i=;i<edge[x].size();i++)
{
int y=edge[x];
if(vis[y]==)
{
ru[y]--;
if(ru[y]==)
que.push(y); res[y][]+=res[x][];
res[y][]+=max(res[x][],res[x][]);
}
}
} int ans=;
for(int i=;i<=n;i++)
{
if(vis==)
{
int rs[][];
rs[][]=rs[][]=rs[][]=res[];
rs[][]=res[];
int pre=i;
vis=; do{
int x=-;
for(int j=;j<edge[pre].size();j++)
{
x=edge[pre][j];
if(vis[x]==)
break;
}
// printf("%d-%d ",pre,x);
// puts("");
if(vis[x]==)
break;
vis[x]=; int nrs[][];
for(int u=;u<;u++)
{
nrs[]=max(rs[],rs[])+res[x][];
nrs[]=rs[]+max(res[x][],res[x][]);
}
for(int u=;u<;u++)
for(int v=;v<;v++)
rs[v]=nrs[v];
pre=x;
}while(true); int a=max(rs[][],rs[][]);
int b=rs[][];
ans+=max(a,b);
// printf("%d %d\n",i,max(a,b));
}
}
printf("Case #%d:\n%d\n", T++, ans);
}
return ;
}
2014百度之星 Party的更多相关文章
- 2014百度之星预赛(第二场)——Best Financing
2014百度之星预赛(第二场)--Best Financing Problem Description 小A想通过合理投资银行理財产品达到收益最大化.已知小A在未来一段时间中的收入情况,描写叙述为两个 ...
- 2014百度之星资格赛——Disk Schedule
2014百度拥有明星格比赛--Disk Schedule Problem Description 有非常多从磁盘读取数据的需求,包含顺序读取.随机读取. 为了提高效率.须要人为安排磁盘读取. 然而.在 ...
- 2014百度之星初赛第二场hdu 4831 Scenic Popularity
Scenic Popularity Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
- 2014 百度之星 题解 1004 Labyrinth
Problem Description 度度熊是一仅仅喜欢探险的熊,一次偶然落进了一个m*n矩阵的迷宫,该迷宫仅仅能从矩阵左上角第一个方格開始走,仅仅有走到右上角的第一个格子才算走出迷宫,每一次仅仅能 ...
- 2014百度之星资格赛 1004:Labyrinth(DP)
Labyrinth Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- 2014百度之星资格赛 1001:Energy Conversion(水题,逻辑题)
Energy Conversion Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
- 2014 百度之星题解 1002 - Disk Schedule
Problem Description 有非常多从磁盘读取数据的需求,包含顺序读取.随机读取.为了提高效率,须要人为安排磁盘读取.然而,在现实中,这样的做法非常复杂.我们考虑一个相对简单的场景. 磁盘 ...
- 2014百度之星第四题Labyrinth(DP)
Labyrinth Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- 2014百度之星第三题Xor Sum(字典树+异或运算)
Xor Sum Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 132768/132768 K (Java/Others) Total ...
- HDU4828 Grids 2014百度之星预赛问题解决
看看Catalan数的公式:为 Catalan(n) = C(2n, n) / n+1 = C(2n, n) - C(2n, n-1); (公式0) 然后利用全排序表达:Catalan(n) = (2 ...
随机推荐
- cache介绍
原帖地址: http://www.wowotech.net/memory_management/458.html?from=timeline 今天探究的主题是cache,我们围绕几个问题展开.为什么需 ...
- Android源码分析(十一)-----Android源码中如何引用aar文件
一:aar文件如何引用 系统Settings中引用bidehelper-1.1.12.aar 文件为例 源码地址:packages/apps/Settings/Android.mk LOCAL_PAT ...
- Python3报错:ModuleNotFoundError: No module named '_bz2'
系统信息 系统:CentOS Linux release 7.6.1810 (Core) python版本:python3.7 报错信息 from _bz2 import BZ2Compresso ...
- jquery添加插件
转自:https://www.cnblogs.com/joey0210/p/3408349.html 前言 如今做web开发,jquery 几乎是必不可少的,就连vs神器在2010版本开始将Jquer ...
- 如何用StatSVN统计SVN服务器某项目的代码量
startsvn下载地址: https://sourceforge.net/projects/statsvn/?source=typ_redirect svn下载地址: https://www.vis ...
- 将积累多年的java学习资料,pdf文档给大家分享一下,比如《大话设计模式》《算法》《Linux私房菜》等等
话不多说,资料目录如下,需要的拿走,下载的同时别忘了点下推荐. 需要的点下面链接,到小编网盘进行下载: 2-大话设计模式.pdf 链接:https://pan.baidu.com/s/1b05puNO ...
- rsync免密码远程复制文件
目标: 从云服务器(112.77.69.212)把mongodb中的文件同步到本地. 步骤一:在云服务器上创建用户 $ adduser monbak $ passwd monbak 步骤二:设置免密登 ...
- Vmware samba 搭建——Win10 共享
配置环境 Win10 Vmware 15 ubuntu 16.04 Vmware 设置 安装 sudo apt-get install samba # 安装samba sudo apt-get ins ...
- Odoo视图的共有标签
转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/10826405.html 1)name (必选) 通过name值,查找标签 2)model 与view相关联的 ...
- Flask的实例化参数及对app的配置
目录 1.调试模式初测 2.app.config中的其他配置参数详解 3.修改config配置的方式(from_object用法) 3.1直接对app.config进行修改: 3.2使用类的方式导入: ...