当前位置: 首页 > news >正文

xtuoj 环

题目

思路

题目是一个环,且从1号节点出发,我们可以顺时针也可以逆时针走,所以我们可以定义两个数组,一个数组表示从1号节点出发顺时针走经过的边权之和,另外一个数组表示从1号节点出发逆时针走经过的边权之和。

注意这里不需要从1号点出发最后还要回到1号点,所以我们完全可以删掉一条边,比如说w[i]。

这里有两种策略,一种是顺时针走到某点后,然后再逆时针回到1号节点,再接着走完剩下的节点;另一种策略是逆时针走到某点后,顺时针回到1号节点,再走完剩下的节点;只有这两种情况才有可能是最短的,其实也挺好理解的,最短的肯定是要么在某条边走一次,要么走两次,走两次是为了转向,其实是避开边权较大的那些边,同一条边走三次其实就相当于走了一次,那么多的那两次其实不能起到什么作用,我们的目的是以最小的边权代价覆盖所有的节点,你走一次可以覆盖两个节点,同一条边走三次也是覆盖两个节点,而且边权代价变大了,其他的同理,那你可能问为什么在同一条边走一次就能覆盖两个节点,那你为什么还有的边要走两次,同一条边走两次不也是覆盖两个节点吗,对的,覆盖的节点数是相同的,但是有可能继续走下去总的边权会变得很大,所以我们选择走两次,这样我们可以通过转向继续走完的方式覆盖到所以节点。

这里的w[i]表示的是第i个节点与第i+1个节点之间的边权,但是w[n]表示的是第n个节点与第一个节点之间的边权,因为要构成一个环。pref[i]表示的是前缀和数组,pref[i]=w[1]+w[2]+...+w[i],也就是前i条边的和,相当于从1号节点顺时针到i+1号节点经过的边权之和;suf[i]表示的是后缀和数组,suf[i]=w[i]+w[i+1]+...+w[n],相当于从1号节点逆时针i号节点所经过的边权之和。

首先for (int i = 1; i <= n; i++)相当于在枚举要删

http://www.dtcms.com/a/504869.html

相关文章:

  • 第24讲:编译和链接
  • 免费网站建设seo外贸网站框架
  • 深圳网站运营托管农村自建房设计图软件
  • 做任务的正规网站那些做测评的网站好
  • 以联系发展的眼光设计系统:从ERP到通用架构模式
  • 怎么让公司网站随便就搜的到广州市建设工程交易中心网站
  • 河南那家公司做家具行业网站好不用服务器做视频网站
  • 那些网站可以上传自己做的视频广州会议室租用
  • 网站做百度百科网站建设kpi考核
  • public-apis 是一个包含丰富公共API资源的项目
  • 子域名的网站放到哪里去wordpress博客页面修改
  • 南京越城建设集团网站公司做网站的钱网银转账用途
  • 网站如何做播放线路汉阴网站建设
  • 网站建设会碰到什么问题快批小程序的收费标准
  • 建材网站开发安全教育平台
  • 网站title标点改动 影响郑州360房产网查询
  • 做木材加工的企业网站首页猎聘网网站建设目标
  • 网络营销课程的心得体会网站流量 seo
  • 泰安建材网站建设电话网站建设叁金手指花总8
  • fly飞控原理图讲解
  • SAUP 算法
  • 天津重型网站建设推荐专业的环保行业网站开发
  • 摄影网站设计素材开封网站制作公司
  • 国际学院网站建设的意义男生十大好就业专业
  • 乌审旗建设局网站瓯海建设网站
  • sys库中read readline readlines区别?笔试用哪个读取输入数据?用readline
  • 如何建设网站地图兰州建设
  • 满城建设局官方网站郑州建设信息网 首页
  • 山东钢铁股份有限公司莱芜分公司seo推广培训
  • Linux管道通信