这道题原本写了一个很复杂的DFS,然后陷入绝望的调试。

看了一下题解发现自己完全想复杂了。

这里大概就是补充一些题解没有详细解释的代码吧。。。


(小声BB)现在最优解rank4(话说$O2$负优化什么鬼啊)

 1 read(n);
 2 for(register int i=1;i<=n;++i)read(c[i]);
 3 for(register int i=1;i<=n;++i){
 4     read(a[i]);
 5     if(a[i]==i){
 6         vis[i]=1;
 7         ans+=c[i];
 8     }
 9 }
10 for(register int i=1;i<=n;++i){
11     if(vis[i])continue;
12     for(register int j=i;;j=a[j]){
13         if(vis[j]){
14             if(vis[j]==i+1)ans+=find(j);
15             break;
16         }
17         vis[j]=i+1;
18     }
19 }
20 write(ans);

程序主题内容如下。

前面是读入数据没有什么好讲的。

在读入a的时候先判断一下有没有自环,有的话就不用看了直接加上。

然后我们对每一个点都瞎搞搞(其实就是一个DFS)。

我们从这个点开始一直向下跳。如果遇到已经走过的点就说明有环出现了,这个时候根据vis的值决定是不是这一轮跳出的环(由于可能是之前的)。

然后我们在这个环上跑一下求最小值。(为什么只在环上不在链上前面题解讲得很清楚了)

如果不是已经走过的点,那我们还在链上,继续往下跳吧。

find函数如下:

1 inline int find(int s){
2     int res=c[s];
3     for(register int i=a[s];;i=a[i]){
4         if(i==s)return res;
5         else res=min(res,c[i]);
6     }
7 }


转载于:https://www.cnblogs.com/ilverene/p/9846272.html

题解 CF1027D 【Mouse Hunt】相关推荐

  1. CF1027D Mouse Hunt(topo总结)

    题意:有n个房间和若干只老鼠(该题可直接当做一只处理),给定n值,以及每个房间来老鼠后下一个会去的房间号,还给了每个房间布置陷阱所需花的成本,求能让老鼠最终落网的布置陷阱的最小成本 本题需要用的数据结 ...

  2. cf Educational Codeforces Round 49 D. Mouse Hunt

    原题: Medicine faculty of Berland State University has just finished their admission campaign. As usua ...

  3. 2.25-3.2 周记

    2.25-3.2 1. 计算几何 1.1 二维几何基础 struct Point{double x,y;Point(double x = 0, double y = 0):x(x),y(y){} } ...

  4. 安卓开发 高德地图定位的封装 十分钟上手

    前言 地图作为开发中三方sdk中较常遇到的一项,集成起来并不麻烦但是不小心踩坑可能会浪费较多时间,如果项目中多处使用还容易造成代码大量冗余,今天我们来将高德地图定位功能集成一个功能化模块,只需两分钟应 ...

  5. 吴恩达机器学习作业8(下)--- 推荐系统

    文章目录 代码分析 数据集 代码分析 导入数据 datafile = 'data/ex8_movies.mat' mat = scipy.io.loadmat( datafile ) Y = mat[ ...

  6. movie_recommendation_spark1

    mllib建立推荐模型 数据准备 数据包含在ml-100k的文件夹中,文件夹中比较重要的几个文件是u.user(用户属性数据集).u.item(电影元数据)和u.data(用户对电影的评分数据) (1 ...

  7. 斯坦福机器学习Coursera课程:第八次作业--推荐系统

    根据已有的1682部电影和943用户及部分用户对电影的评分数据,对新用户作电影推荐或预测未评价的评分. 一. 准备工作 1. 加载ex8_movies.mat数据 Y (1682*943) 用户评份数 ...

  8. 电影则选择以下几种类型的题材

    电影则选择以下几种类型的题材: 1.励志类电影:励志是少年成长时的积累和渴望,正因为有了渴望才拥有了腾飞的梦想,正因为有了积累才拥有了收获的喜悦.有时候一部经典影片,赋予你的却是无限的正能量.在这里没 ...

  9. java猫和老鼠_【进化史】猫和老鼠游戏进化史 Tom and Jerry Games 1989 - 2020

    https://youtu.be/7grgYL-Rp7M History Of Tom and Jerry Games 1989 to 2020 作者:M Pro Channel 1. Tom and ...

最新文章

  1. 算法设计思想(1)— 穷举法
  2. 接入新浪、腾讯微博和人人网的Android客户端实例 接入新浪、腾讯微博和人人网的Android客户端实例...
  3. ASP.NET 的数据绑定,DataList,Repeater 的绑定示例
  4. linux 修改默认脚本,linux环境初始脚本
  5. 5G毫米波三大自然缺陷
  6. 如何“反编译” Java类文件? [关闭]
  7. c语言界面飞机图形代码,求个用最简单的的代码来实现图形界面…
  8. C++/ python 计算硬币正面朝上的概率
  9. 生成VOC2012数据集
  10. 处理器架构 (十三) ARMv6架构下 各微架构的不同
  11. echarts横向柱状图
  12. 计算机网卡的安装过程,千兆网卡怎么装_千兆网卡安装步骤
  13. 设置selected选中的多种方法(总结)
  14. sis新地址_坚若磐石不掉速,老平台升级新选择,入手昱联Asint 500G SSD
  15. 【Hexo搭建个人博客】(八)添加背景效果(点击鼠标显示红心并浮现社会主义核心价值观)
  16. 基于pyagme用python做接小球游戏
  17. 仙境传说 第一章之四 卢渊*梦魇过后的情缘
  18. python--打字练习的成绩判定
  19. 淘宝旺旺智能回复软件 旺旺智能客服 旺旺聊天机器人
  20. BUUCTF:很好的色彩呃?

热门文章

  1. 伪元素写竖线_欧洲杯 | 让我们做个时髦伪球迷
  2. 《图像分析基础》的专有名词解析
  3. 学python lesson4
  4. android 缓冲区,android – 超过最小排队缓冲区数
  5. linux内核中union,Linux上的Union mount
  6. 学python前端需要哪些基础知识_简析前端学习python3的基础
  7. image加载图片 ui unity_【Unity游戏客户端框架搭建】四、资源管理之理论篇
  8. 大数据营销案例沃尔玛_实现大数据营销的方式有哪些
  9. node 获取表单数据 为空_寻offer之JS数据结构与算法 -- 栈
  10. win10 安装 cognos 10.2.0