链接

Google Codejam 2016 Round1A Problem C BFFs

题意

n个小朋友要坐成一个圈。每个小朋友心中都有一个Best Friend Forever。要保证每个人的左右至少有一个是他的BFF,问最多能让多少人做成一个圈。

思路

n只有1000,每个点的出度也都是1。看上去就不需要套用某种算法。综合的考虑一下,如果有m个人的BFF关系正好形成一个环,那么他们就可以成为一种结果,并且这个环中不能有别的人插入了。另外一种情况就是一条链,在这条链中有至少两个点A和B的BFF关系是相互的,A侧的人的关系依次指向A,B侧依次指向B,那么这条链也是可以成为结果,并且可以有多条这样的链构成最够的答案。
所以方法就是先求环的最大值,再累加出链的最大值。

代码

#include <bits/stdc++.h>

#define LL long long
#define INF 0x3f3f3f3f
#define eps 1e-8
#define MAXN 1005
using namespace std; bool vis[MAXN][MAXN], mp[MAXN];
int cnt[MAXN];
int a[MAXN], d[MAXN];
int main(){
#ifndef ONLINE_JUDGE
freopen("in.txt", "r", stdin);
freopen("out.txt", "w", stdout);
#endif // ONLINE_JUDGE
int T;
scanf("%d", &T);
int cas = 0;
while (T--){
int n;
scanf("%d", &n);
for (int i = 1; i <= n; ++i){
scanf("%d", &a[i]);
}
memset(cnt, 0, sizeof(cnt));
memset(d, 0, sizeof(d));
int ans = 0;
for (int i = 1; i <= n; ++i){
memset(mp, 0, sizeof(mp));
int x = i;
mp[x] = true;
while (true){
x = a[x];
if (mp[x]) break;
mp[x] = true;
++cnt[i];
}
if (x == i){
ans = max(ans, cnt[i] + 1);
}
}
for (int i = 1; i <= n; ++i){
for (int j = 1; j <= n; ++j){
if (a[a[j]] == j) continue;
d[a[j]] = max(d[a[j]], d[j] + 1);
}
}
int res = 0;
for (int i = 1; i <= n; ++i){
if (a[a[i]] != i) continue;
res += d[i] + d[a[i]] + 2;
}
res >>= 1;
ans = max(ans, res);
printf("Case #%d: %d\n", ++cas, ans);
}
}

Google Codejam 2016 Round1A Problem C BFFs 简单图论的更多相关文章

  1. Google CodeJam 2016 round3-A.Teaching Assistant

    题目描述: 原题是纯英文,大意是:你每天可以选择一门课去学习,选题和提交答案.题目为Coding或者Jamming.选的题目如果和老师选的一致,提交答案也匹配,最后可以得10分,若选题不一致只能得5分 ...

  2. Google图片加载库Glide的简单封装GlideUtils

    Google图片加载库Glide的简单封装GlideUtils 因为项目里用的Glide的地方比较多,所有简单的封装了以下,其实也没什么,就是写了个工具类,但是还是要把基础说下 Glide的Githu ...

  3. 回顾Google IO 2016 -Keynote【图解】

    Google IO大会倒计时进行中~~ 两名演奏者在使用高空“古筝”. 最后5秒倒计时~~~~全场轰动~ 倒计时结束,IO大会正式开始.屏幕中,一个人把纯白的唱片放入唱片机中. 然后欢快的音乐响起,台 ...

  4. cdoj1580 简单图论问题

    地址:http://acm.uestc.edu.cn/#/problem/show/1580 题目: 简单图论问题 Time Limit: 3000/1000MS (Java/Others)     ...

  5. lh的简单图论

    lh的简单图论 http://10.64.70.166/problem/1112 lh的简单图论   Description 众所周知,集训队的lh同学txdy,有一天他在写着代码,突然哼起了rapr ...

  6. 2249: Altruistic Amphibians 01背包的应用 + lh的简单图论 图转树求lca

    第一个 写了两个比较简单的数论题目,就是整除理论的两个题目,第一个题目比较蠢,第二个稍微要动一点脑筋 Codeforces Round #347 (Div. 2) – A. Complicated G ...

  7. [Google Codejam] Round 1A 2016 - The Last Word

    [Problem Description] Problem On the game show The Last Word, the host begins a round by showing the ...

  8. Google Code Jam 资格赛: Problem A. Magic Trick

    Note: To advance to the next rounds, you will need to score 25 points. Solving just this problem wil ...

  9. Gym 101194A / UVALive 7897 - Number Theory Problem - [找规律水题][2016 EC-Final Problem A]

    题目链接: http://codeforces.com/gym/101194/attachments https://icpcarchive.ecs.baylor.edu/index.php?opti ...

随机推荐

  1. jsoup抓取网页+具体解说

    jsoup抓取网页+具体解说 Java 程序在解析 HTML 文档时,相信大家都接触过 htmlparser 这个开源项目.我以前在 IBM DW 上发表过两篇关于 htmlparser 的文章.各自 ...

  2. ubuntu16.04环境下安装配置openface人脸识别程序

    参考http://blog.csdn.net/weixinhum/article/details/77046873 最近项目需要用到人脸训练和检测的东西,选用了OpenFace进行,因而有此文. 本人 ...

  3. javascript系列-class6.String类型

    观察淘宝网商品数据   有一个东西叫服务器>>>>js的作用重要作用之一>>>>交互>>>>人机交互(事件)>>&g ...

  4. 大量文件时使用ls

    有时一个目录下的文件实在太多, ls的时候就卡住了. 其实, 如果不加排序的话, 就可以迅速的显示文件. ls -f 解释: -f do not sort, enable -aU, disable - ...

  5. JavaScript学习记录三

    title: JavaScript学习记录三 toc: true date: 2018-09-14 23:51:22 --<JavaScript高级程序设计(第2版)>学习笔记 要多查阅M ...

  6. 移动端 input 获取焦点后弹出带enter(类似于搜索,确定,前往)键盘,以及隐藏系统键盘

    一:调出系统带回车键的键盘 在项目中经常有输入框,当输入完成后点击确定执行相应的动作.但是有些设计没有确定或者搜索按钮,这就需要调用系统键盘,点击系统键盘的确定后执行相应动作. 但是单纯的input是 ...

  7. jquery/zepto在插件编写上的几点区别

    1. 自定义事件的命名空间 jq的时间命名空间是用点“.”,而zepto是用冒号“:” 如 //jquery $(this).trigger('cusevent.pluginname'); //zep ...

  8. python的import与from…import的区别

    [转]http://blog.csdn.net/windone0109/article/details/8996184 在python中用import或者from-import来导入相应的模块.模块其 ...

  9. Android 手势

    GestureDetector:手势监听类,通常在View的setOnTouchListener方法中设置TouchListener,在TouchListener的onTouch函数中把MotionE ...

  10. APICloud关闭Key Building Resolve

    顶部菜单 --> 扩展 --> keybinding resolver --> toggle