百度之星 Party

Party


Time Limit: 6000/3000 MS
(Java/Others)    Memory Limit: 32768/32768 K
(Java/Others)
Total Submission(s): 0    Accepted
Submission(s): 0

Problem Description

  B公司共有N个员工,但是并不是所有人都能和睦相处。在每一个人的心中都有一个潜在的对手,任何人都不能接受和他的对手同时参加B公司的聚餐。然而这种关系并不一定是对称的,也就是说,A把B视作自己的对手,而B所想的对手并不一定是A。
  现在,B公司准备举办一次盛大的聚会,公司希望员工通过这次聚会获得尽可能多的快乐值。第i个员工的快乐值是一个大于0不大于100的整数,如果他参加聚餐,他就会获得的快乐值,如果他的对手参加聚餐,他的快乐值就为0。
  但老板在安排聚餐时不知道如何解决这个问题,因此,他找到你帮忙计算这次聚会最多可以带来多少快乐值。

Input

  输入数据的第一行是一个整数T,表示有T组测试数据。
  每组数据的第一行包括一个整数N,表示共有N个员工。(约有500组数据N不大于500,约有10组数据N不大于100000)
  第二行是N个用空格隔开的整数,第i个整数表示第i个员工的对手的编号。数据保证 xi ∈ [1,N], 且 xi <> i .
  第三行也包含N个用空格隔开的整数,表示第i个员工能够获得的快乐值ai

Output

  对于第k组数据,第一行输出Case #k:,第二行输出仅包含一个数,表示这次聚会最多可以带来多少快乐值。

Sample Input

1
8
2 7 1 8 4 2 3 5
50 30 40 40 50 10 70 60

Sample Output

Case #1:
190

Hint

在样例中,应选择1、6、7、8号员工。

百度之星 Party

时间: 2024-10-11 16:12:19

百度之星 Party的相关文章

2016百度之星 补题记

2016"百度之星" - 复赛(Astar Round3) 拍照 思路:先把所有的线段投影到x轴,然后将所有线段的起末坐标存进数组,排序后从坐标最小开始枚举.如果遇到起点标志,就加一:结束点标志减一.如此即可求出同一时刻,遇到当前线段结束点时,有多少线段包含在内 /************************************************************** Problem:hdu 5417 User: youmi Language: C++ Result

【百度之星2014~初赛(第二轮)解题报告】Chess

声明 笔者最近意外的发现 笔者的个人网站http://tiankonguse.com/ 的很多文章被其它网站转载,但是转载时未声明文章来源或参考自 http://tiankonguse.com/ 网站,因此,笔者添加此条声明. 郑重声明:这篇记录<[百度之星2014~初赛(第二轮)解题报告]Chess>转载自 http://tiankonguse.com/ 的这条记录:http://tiankonguse.com/record/record.php?id=667 前言 最近要毕业了,有半年没做

2016-5-21 letwetell Round3 (百度之星初赛,dfs序)

halfapri(- o -)Y { 1.2016百度之星Round2A 题目链接 题解链接 1001 All X 循环节 1002 Sitting in Line 状压dp 1003 Snacks 1004 D Game 1005 BD String 找规律 1006 Gym Class 贪心+topo 2.2012多校第7场 hdu4366 Successor 线段树 + dfs序 }

2014百度之星资格赛题解

比赛链接:点击打开链接 ,,杭电把比赛关了代码都找不到了.. 无责任民科还是mark一下好了.. HDU 4823 Energy Conversion 把式子变换一下发现是一个等比数列,高速幂就可以. #include<stdio.h> #include<iostream> #include<string.h> #include<math.h> using namespace std; #define ll __int64 #define inf 10000

2014年百度之星程序设计大赛 - 初赛(第一轮) hdu Grids (卡特兰数 大数除法取余 扩展gcd)

题目链接 分析:打表以后就能发现时卡特兰数, 但是有除法取余. f[i] = f[i-1]*(4*i - 2)/(i+1); 看了一下网上的题解,照着题解写了下面的代码,不过还是不明白,为什么用扩展gcd, 不是用逆元吗.. 网上还有别人的解释,没看懂,贴一下: (a / b) % m = ( a % (m*b)) / b 笔者注:鉴于ACM题目特别喜欢M=1000000007,为质数: 当gcd(b,m) = 1, 有性质: (a/b)%m = (a*b^-1)%m, 其中b^-1是b模m的逆

百度之星2014初赛第二场

A. Scenic Popularity http://acm.hdu.edu.cn/showproblem.php?pid=4831 思路:景点区会控制休息区的Hot值,我们建立休息区到它最近的景点区的关系,注意处理冲突. 查询和修改都暴力进行,预处理关系,从左到右,然后从右到左遍历一遍即可,更新时候,从被修改的p位置,向两边,与p有关的休息区进行更新.总的时间复杂度O(T*n*K),10^8左右,不到1s可以解决. const int maxn = 10000; const int maxh

【百度之星2014~初赛(第二轮)解题报告】JZP Set

声明 笔者最近意外的发现 笔者的个人网站http://tiankonguse.com/ 的很多文章被其它网站转载,但是转载时未声明文章来源或参考自 http://tiankonguse.com/ 网站,因此,笔者添加此条声明. 郑重声明:这篇记录<[百度之星2014~初赛(第二轮)解题报告]JZP Set>转载自 http://tiankonguse.com/ 的这条记录:http://tiankonguse.com/record/record.php?id=668 前言 最近要毕业了,有半年

【百度之星2014~资格赛解题报告】

声明 笔者最近意外的发现 笔者的个人网站http://tiankonguse.com/ 的很多文章被其它网站转载,但是转载时未声明文章来源或参考自 http://tiankonguse.com/ 网站,因此,笔者添加此条声明. 郑重声明:这篇记录<标题>转载自 http://tiankonguse.com/ 的这条记录:http://tiankonguse.com/record/record.php?id=666 前言 最近要毕业了,有半年没做比赛了.这次参加百度之星娱乐一下.现在写一下解题报

2014年百度之星程序设计大赛 - 初赛(第二轮)

1001 暴力 #include <cstdio> #include <algorithm> #include <cstring> using namespace std; const int maxn = 100100; int ll[maxn], rr[maxn]; struct node { int x, y, bj; }e[maxn]; int main() { int cas = 1; int T; scanf("%d", &T);

2014年百度之星程序设计大赛 - 资格赛 1002 Disk Schedule(双调欧几里得旅行商问题)

Problem Description 有很多从磁盘读取数据的需求,包括顺序读取.随机读取.为了提高效率,需要人为安排磁盘读取.然而,在现实中,这种做法很复杂.我们考虑一个相对简单的场景.磁盘有许多轨道,每个轨道有许多扇区,用于存储数据.当我们想在特定扇区来读取数据时,磁头需要跳转到特定的轨道.具体扇区进行读取操作.为了简单,我们假设磁头可以在某个轨道顺时针或逆时针匀速旋转,旋转一周的时间是360个单位时间.磁头也可以随意移动到某个轨道进行读取,每跳转到一个相邻轨道的时间为400个单位时间,跳转