题目大意:

某个公司有n个程序员,每个程序员心中都认为自己是公司最好的程序员或者认为自己是第二好的

现在要将程序员们分成多个team,每次先选出一个当前没有被分组的程序员创立一个组,然后这个程序员认为最好的那个程序员如果没有加入任何组织的话,就将那个程序员加入这个组,同时在考虑新加入这个组的程序员认为最好的那个人,直到当前这个组里的程序员认为最好的人已经被分组。这个组就分配完毕,重新选择新的未分组的人创立新的组进行分配,直到所有人分配完毕。

现在给出所有的编号为i的程序员认为最好的程序员的编号 nex[i],问最多能分出多少组,最少能分出多少组

大致思路:

首先,这是一个有着n条有向边,n个顶点的图,要使得分的组数少的话,就是先每次选入度为零的点进行标记,然后沿着有向边一路标记下去,这样子可以有k1个组 ( k1 为入度是0的点的数量) 然后处理成环且环上的点都没有与其它入度为零的点有连接的情况,得到k2,那么 k1 + k2 即为答案

至于要最大分组,便是  总人数n - 形成环的人的个数 x  + 环的个数y

代码如下:

Result  :  Accepted     Memory  :  1692 KB     Time  :  46 ms

/** Author: Gatevin* Created Time:  2014/7/23 12:30:27* File Name: test.cpp*/
#include<iostream>
#include<sstream>
#include<fstream>
#include<vector>
#include<list>
#include<deque>
#include<queue>
#include<stack>
#include<map>
#include<set>
#include<bitset>
#include<algorithm>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cctype>
#include<cmath>
#include<ctime>
#include<iomanip>
using namespace std;
const double eps(1e-8);
typedef long long lint;int n;
int nex[100010];
int vis[100010];
int step[100010];
int notzero[100010];
int main()
{while( scanf("%d",&n) == 1){memset(notzero, 0, sizeof(notzero));for(int i = 1; i <= n; i++){scanf("%d",&nex[i]);notzero[nex[i]] = 1;}memset(vis, 0, sizeof(vis));memset(step, 0, sizeof(step));int now = 1;int cnt = 0;int loop = 0;int tmp;for(int i = 1; i <= n; i++){tmp = i;if(vis[i] == 0){vis[i] = now;step[i] = 1;while(!vis[nex[i]]){vis[nex[i]] = now;step[nex[i]] = step[i] + 1;i = nex[i];}if(vis[i] == vis[nex[i]]){cnt += (step[i] - step[nex[i]] + 1);loop++;}}now++;i = tmp;}memset(vis, 0, sizeof(vis));int answer = 0;for(int i = 1; i <= n; i++){tmp = i;if(!notzero[i]){vis[i] = 1;answer++;while(!vis[nex[i]]){i = nex[i];vis[i] = 1;}}i = tmp;}for(int i = 1; i <= n; i++){tmp = i;if(!vis[i]){answer++;vis[i] = 1;while(!vis[nex[i]]){i = nex[i];vis[i] = 1;}}i = tmp;}printf("%d %d\n",answer, n - cnt + loop);}return 0;
}/*
2
1 2
2 2 2
2 1
1 1 6
1 3 4 2 6 5
3 3
*//*
122 3 4 5 2 4 8 11 8 7 12 9
3 6 16
2
3
4
1
3
5
5
2
4
9
12
13
11
14
16
16
*/

URAL 1742 Team building相关推荐

  1. CodeForces - 1316E Team Building(状压dp)

    题目链接:点击查看 题目大意:给出 n 个人,现在需要 p 个球员和 k 个啦啦队员,n 个人当啦啦队员以及当第 i 个位置的球员所做的贡献都会给出,现在问如何分配可以使得总贡献和最大 题目分析:因为 ...

  2. CodeCraft-20 (Div. 2) E.Team Building

    题目链接 大意:n个人,选k个观众,p个球员,每个人当观众的能力为 a i a_i ai​,在每个位置的能力为 s i , j s_{i,j} si,j​,让你选择 p + k p+k p+k个人使得 ...

  3. 软技巧相关【5002】Team管理之绩效考核

    我们最早期的绩效考核,是从以下五个方面着手 以下指标,有量化指标,也有软性指标,软性指标会参照几位Leader给出的综合数值 五个指标: 衡量尺度 Weight of indicator accord ...

  4. 《题目与解读》红书 训练笔记目录《ACM国际大学生程序设计竞赛题目与解读》

    虽然2012年出版的老书了,但是是由三次世界冠军的上海交大ACM队出版的书籍,选择的题目是ACM经典中的经典,书中有非常详细的题解,可以学到很多东西,值得一刷. 目录 第一部分 第一章 数学 1.1 ...

  5. 微软职位内部推荐-Software Development Engineer II

    微软近期Open的职位: Job Title:Software Development EngineerII Division: Server & Tools Business - Comme ...

  6. 上海往事之参加上海分公司组织的TeamBuilding

    上海往事之参加上海分公司组织的TeamBuilding 上周日(2015-08-23) 上午,应邀参加上海分公司某People Manager组织的一个Team Building. 所谓的team b ...

  7. 微软职位内部推荐-Principal Dev Manager

    微软近期Open的职位: Title: Principal Dev Manager Location: Beijing The R&D of Shared Data Platform at S ...

  8. 双 11 的狂欢,干了这碗「流量防控」汤

    来源 | 悟空聊架构(ID:PassJava666) 临近双十一,从 2009 年第一届双十一开始,成交量只有 5000 万,到去年 2019 年,成交量达到了 2684 亿.今年迎来了第十二届双十一 ...

  9. “三板斧”式文化价值体系互助协作,打通企业全流程管理模式

    在职场上是有三种能力层级的,分别是执行层,管理层和决策层.如果你有一个比自己能力强的下属,那么恭喜你.因为有这样的人在,有些任务才能更好的执行下去. 承认下属比自己强,并不是件丢人的事,因为发现和培养 ...

  10. 从《翔谈》说起,看美团

    翔谈说起 最近在读<翔谈>系列,最开始是想看看左晖那本,因为还是对于链家这种打通线上线下的玩法比较好奇,看看背后有什么方法论.线上互联网那套看的比较多了,线下的方法论接触的还比较少,好奇. ...

最新文章

  1. 麦肯锡:优秀数据科学家的5个特征!
  2. 计算机CAD作文,【2人回答】职校课堂里我最喜欢上CAD课600字作文-3D溜溜网
  3. mac的mysql数据库管理_Mac使用MySQL Workbench管理MySQL数据库
  4. 深入理解并行编程-分割和同步设计(一)
  5. python open 打开是什么类型的文件-详解Python中open()函数指定文件打开方式的用法...
  6. [学习笔记]数字电路技术
  7. only SOY MILK IS NOT ENOUGH FOR BREAKFAST
  8. linux源代码安装程序
  9. 盘点Win10系统的实用“小设计”
  10. 关于序列建模,是时候抛弃RNN和LSTM了
  11. win7 64安装工商网银U盾软件
  12. Java面向对象 网络编程 上
  13. 如何安全地进行ddos压力测试
  14. 260,我要满血复活了。
  15. uni-app实现支付及项目打包上传
  16. Back键和Home键的屏蔽
  17. 用Wireshark抓包分析协议 计算机网络
  18. (附源码)计算机毕业设计ssm高校线上教学系统
  19. 淘宝客解析url优惠链接获取商品ID
  20. SQLyog的免费使用方式

热门文章

  1. 新浪php工程师面试题
  2. linux下安装陈桥五笔
  3. 厦门大学计算机专业录取分数线2019,厦门大学2019年各省录取分数线及各专业录取分数线...
  4. 前台获取model中的值,json数据,json字符串,双引号变为 ‘ quto;‘
  5. c语言调试程序错误,如何调试C程序的语法错误和逻辑错误
  6. 世界上第一台计算机论文,世界上公认的第一台电子计算机是1946年诞生。.doc
  7. Android Studio 文件名颜色代表含义
  8. 什么时间做职业生涯规划最合适?
  9. 游戏策划学习:笔试整理
  10. matlab在电磁场方向,基于matlab的电磁场仿真与分析探究.pdf