北京市商汤科技开发有限公司面向青少年研发了一款智能伴游机器人-- AI 伴游小精灵。一经推出,深受孩子们的喜爱,可爱又机智的小精灵会想出很多有趣的小游戏来启迪孩子们思考。今天,小精灵给你提出了一个神奇又有趣的多米诺骨牌小游戏。

你手上有一副神奇的多米诺骨牌,数量有 nn个,编号为 1 ~n。它们之间存在着 n−1 个单向推倒关系,即推倒 x 会导致 y 也被推倒,而且这样的关系都满足 x<y,且每组关系中的 y不会重复。

一开始只有 1号骨牌不会被其他骨牌推倒,所以你只需要推倒 1 号骨牌就可以推倒所有的骨牌。

小精灵给你提的问题是:如果我们允许去掉 2个骨牌,那么在最坏情况下你最少需要推倒几个骨牌才能使所有骨牌倒下?

输入格式

第一行输入一个整数 n,表示有 n个多米诺骨牌。

接下来有 n-1 行的输入,每行输入两个整数 x,y,表示x推倒 会导致 y也被推倒。

输出格式

输出一个整数表示去掉两个骨牌之后,最坏情况下你最少需要推倒几个骨牌才能使所有骨牌倒下。

数据规模

n<=5 x 10^3

样例输入复制

  1. 7
  2. 1 2
  3. 1 3
  4. 1 5
  5. 2 4
  6. 4 7
  7. 4 6

样例输出复制

  1. 5
  2.  
  3. 题解:在去掉两个牌之前,推一次一号牌就可以把所有牌推到,去掉的两个牌一定是与其他牌关联次数最多的那两个点(假设这两个点与其它点的给关联次数分别为x1,x2),
    去点这两个点之后,那么与这两个点存在关系的点就被孤立了,需要单独推一次,
    因此,加上要推的一号牌,去掉两个点之后最多可能要推1+x1+x2次,
    还有另外两种特殊情况要考虑一下:
    1、如果次数最多的两个牌有一个为一号牌,次数要减一。
    2、如果次数最多的两个点存在联系,次数要减一
  4.  
  1. #include<iostream>
  2. #include<algorithm>
  3. using namespace std;
  4. struct node
  5. {
  6. int pos;
  7. int cnt;
  8. }a[];
  9.  
  10. bool cmp(node a,node b)
  11. {
  12. return a.cnt>b.cnt;
  13. }
  14. int num[],vis[][];
  15. int main()
  16. {
  17. int n,x,y;
  18. cin>>n;
  19. for(int i=;i<=n;i++)//初始化,使点的号数与下标统一
  20. a[i].pos=i;
  21. for(int i=;i<n-;i++)
  22. {
  23. cin>>x>>y;
  24. vis[x][y]=;
  25. a[x].cnt++;
  26. }
  27. sort(a+,a+n-,cmp);
  28. int x1,x2,ans;
  29. x1=a[].cnt;
  30. x2=a[].cnt;
  31. ans=+x1+x2;
  32. if(vis[a[].pos][a[].pos]==)//关联次数最多的两个牌恰好存在推到的关系
  33. ans--;
  34. if(a[].pos==||a[].pos==)//因为一号牌不会被任何牌推倒,如果拿走了一号牌,次数要减一
  35. ans--;
  36. cout<<ans<<endl;
  37. return ;
  38. }
  1.  

AI 伴游小精灵的更多相关文章

  1. 2019 计蒜之道 初赛 第一场 商汤的AI伴游小精灵

    https://nanti.jisuanke.com/t/39260 根据题意我们可以知道  这是一个树 我们只需要找到出度最大的两个点就好了 如果包含根节点的话要-- 两个点相邻的话也要-- 数据很 ...

  2. 游戏AI系列内容 咋样才能做个有意思的AI呢

    游戏AI系列内容 咋样才能做个有意思的AI呢 写在前面的话 怪物AI怎么才能做的比较有意思.其实这个命题有点大,我作为一个仅仅进入游戏行业两年接触怪物AI还不到一年的程序员来说,来谈这个话题,我想我是 ...

  3. 马里奥AI实现方式探索 ——神经网络+增强学习

    [TOC] 马里奥AI实现方式探索 --神经网络+增强学习 儿时我们都曾有过一个经典游戏的体验,就是马里奥(顶蘑菇^v^),这次里约奥运会闭幕式,日本作为2020年东京奥运会的东道主,安倍最后也已经典 ...

  4. 普通程序员如何转向AI方向

    眼下,人工智能已经成为越来越火的一个方向.普通程序员,如何转向人工智能方向,是知乎上的一个问题.本文是我对此问题的一个回答的归档版.相比原回答有所内容增加. 一. 目的 本文的目的是给出一个简单的,平 ...

  5. AI人工智能系列随笔

    初探 AI人工智能系列随笔:syntaxnet 初探(1)

  6. MySQL Workbench建表时 PK NN UQ BIN UN ZF AI 的含义

    [转自网络]https://my.oschina.net/cers/blog/292191 PK Belongs to primary key 作为主键 NN Not Null 非空 UQ Uniqu ...

  7. 【AI开发第一步】微软认知服务API应用

    目录 介绍 API分类 使用‘视觉’API完成的Demo 点击直接看干货 介绍 从3月份Google家的阿尔法狗打败韩国围棋冠军选手李世石,到之后微软Build2016大会宣布的“智能机器人”战略.种 ...

  8. 扎克伯格开发的家用AI: Jarvis

    扎克伯格本周二在facebook发布了一篇文章,介绍自己利用个人时间开发的一套在自己家里使用的AI系统,并将它命名为Jarvis,对!就是电影钢铁侠里的AI助手Jarvis. 文章并没有讲细节的技术c ...

  9. 趣说游戏AI开发:对状态机的褒扬和批判

    0x00 前言 因为临近年关工作繁忙,已经有一段时间没有更新博客了.到了元旦终于有时间来写点东西,既是积累也是分享.如题目所示,本文要来聊一聊在游戏开发中经常会涉及到的话题--游戏AI.设计游戏AI的 ...

随机推荐

  1. d3基本图形

                                             柱状图                                   散点图.气泡图               ...

  2. ng -----监听变化($scope.$watch())

    需求:项目组件中遇到改变日期触发方法. 困难:日期组件中不涉及释焦功能 解决:在angularjs中用$scope.$watch() 其中name是字符串,是指监听到的具体对象值.

  3. Raspbian设置静态ip

    Raspbian static ip 最近入手了树莓派4b,并更具官方教程安装了Raspbian.由于直接通过wifi连接,每次ip跳来跳去很不方便,于是便想着设置静态ip. 由于Raspbian本身 ...

  4. Python栈溢出【新手必学】

    python3.5.4 递归函数最恶心的时候莫非栈溢出(Stack overflow).PS:另外很多人在学习Python的过程中,往往因为没有好的教程或者没人指导从而导致自己容易放弃,为此我建了个P ...

  5. js求两个整数的百分比

    function GetPercent(num, total) {                          num = parseFloat(num);                   ...

  6. mysql any和all的用法

      1.ANY关键字假设any内部的查询语句返回的结果个数是三个,如:result1,result2,result3,那么, select ...from ... where a > any(. ...

  7. JS操作小记

    this.Phenomenon.forEach(element => { if (element.value3 == this.prvphe) { this.Reason1 = element. ...

  8. Typora: Markdown Reference (Typora下Markdown语法使用说明)

    引言 由于一直在使用Typora,这个是我使用过的最棒的Markdown编辑器,但是总是忽略某一个功能,于是决定认真看一下其帮助文档 这里做一个简单主要功能的中文翻译(按键对应Windows下). 标 ...

  9. 有没有比NRF51822更好的智能穿戴蓝牙方案

    现在在智能穿戴领域市场不断的追求低功耗.低成本的蓝牙芯片.蓝牙芯片目前除了Dialog公司研制蓝牙芯片是最求超低功耗的但是对于其它性能上还比较满足不了其它领域的功能,另外NORDIC.TI的蓝牙芯片虽 ...

  10. PAN3501与AS3933完美兼容替代

    现在不少校园门禁卡都是采用奥地利的AS3933,市场需求是供不应求,当然价格上还是不断上升趋势.成本上压力也是越来越大,不少厂家在寻找能替代软硬件兼容AS3933的芯片方案.今天我就为大家介绍一款能否 ...