第二篇题解!

可能是退役之前的最后一篇题解了

(好像总共都只写了两篇)

不说了,讲题:

题面

题意:

有T个数据

有一颗树(保证所有的的节点都是相连的),有n个节点,每个节点都有相应的权值与序号,现在你要进行M次操作,操作是:

找到权值最大的节点(如果有权值相同且又是最大的节点,则选择序号较小的节点),与节点直接相连的节点权值+1(本身不增加权值)

最后输出权值最大的节点(有相同的则输出序号较小的节点)。

数据范围:

对于 100% 的数据,1≤N≤2×10^6,

1≤M≤10^18,

1≤A i≤2^31-1,

1≤T≤10

部分分就不写了。

反正很大就是了,看到这个M小于等于10的18次方,你怕了吗


题解(主要是思路):

首先看题目,有人看完题面可能会不知道为什么是一棵树只有你会,题目给出的是N个点,由N-1条双向路径相连,

C 国一共有 N 个村庄,N-1 条道路。这些道路都可以双向通行。
保证小 S 可以从一座村庄到其他任何一座村庄。
这 N 个村庄编号为 1 到 N。

保证小 S 可以从一座村庄到其他任何一座村庄

众所周知,想要组成环,至少需要与节点数相同的路径,而题意又保证各个节点一定相连,就必须要N条路径,但题目给出的只有n-1条路径

,则是一棵树。

好啰嗦

看完题意看数据范围,发现M的范围巨大,连O(M)的算法都过不了,不可做

于是我陷入了思考,先写一下数据推推规律:

三个点
2 6 3
都相连
2->6->3
M次操作
//1:
num[2]:6最大
3 6 4
//2:
num[2]:6最大
4 6 5
//3:
num[2]:6最大
5 6 6
出现了!相等的点!但是num[2]序号小,答案依旧是选num[2];
//4:
num[2]:6最大
6 6 7
num[3]大于num[2]了;
//5:
num[3]:7最大
6 7 7
又相等了,num[2]序号小,选num[2]。
//6:
num[2]:7最大
7 7 8
num[3]最大了

推到这就差不多了,可以得出以下规律:

(此处的权值指的是初始权值)

x1为权值最大的节点,y1为与它相连的权值相对最大的节点

  • 只需要记录下x1与y1,而其他的节点,拜托,他们超逊的!可以从数据中看出,与6相连的num[1]由于小于num[2],在答案的选择中没有任何竞争力,不与权值最大的节点直接相连的节点就更不要说了。(觉得不对的同学可以自己写几组数据试试)

  • 在M小于num[2]与num[3]的差时,答案恒为num[2],(num[2]:哼,没点时间还想超过我?)可以转化为-----当M小于x1-y1,选x1;

  • 然后就是M>=他们的差时:看数据,第3次操作到第6次操作答案是有循环的,很容易得到是跟M的奇偶性有关的(等于的话就是直接取序号最小就行了),先将M减去x1-y1,奇数取y1,偶数取x1.

这一切都是建立在这个图是一颗树的前提下。

代码实现就行

然后就没了

吗?

还有特判!

在代码实现中,当n=1时的情况要特殊考虑

我就是被这个点坑杀了4个点

85分没了

结束

不点个赞再走?

有什么意见可以发在评论区哦

「MCOI-03」村国题解的更多相关文章

  1. LuoguP7043 「MCOI-03」村国 题解

    Content 有 \(T\) 组询问,每组询问给定一个有 \(n\) 个节点的数,编号为 \(1\sim n\),每个节点一开始都有权值 \(a_i\).现有 \(m\) 次操作,每次操作选择树上所 ...

  2. LuoguP7127 「RdOI R1」一次函数(function) 题解

    Content 设 \(S_k\) 为直线 \(f(x)=kx+k-1\),直线 \(f(x)=(k+1)x+k\) 与 \(x\) 轴围成的三角形的面积.现在给出 \(t\) 组询问,每组询问给定一 ...

  3. LOJ #2541. 「PKUWC 2018」猎人杀(容斥 , 期望dp , NTT优化)

    题意 LOJ #2541. 「PKUWC 2018」猎人杀 题解 一道及其巧妙的题 , 参考了一下这位大佬的博客 ... 令 \(\displaystyle A = \sum_{i=1}^{n} w_ ...

  4. LOJ #2540. 「PKUWC 2018」随机算法(概率dp)

    题意 LOJ #2540. 「PKUWC 2018」随机算法 题解 朴素的就是 \(O(n3^n)\) dp 写了一下有 \(50pts\) ... 大概就是每个点有三个状态 , 考虑了但不在独立集中 ...

  5. 「GXOI / GZOI2019」简要题解

    「GXOI / GZOI2019」简要题解 LOJ#3083. 「GXOI / GZOI2019」与或和 https://loj.ac/problem/3083 题意:求一个矩阵的所有子矩阵的与和 和 ...

  6. 【题解】#6622. 「THUPC 2019」找树 / findtree(Matrix Tree+FWT)

    [题解]#6622. 「THUPC 2019」找树 / findtree(Matrix Tree+FWT) 之前做这道题不理解,有一点走火入魔了,甚至想要一本近世代数来看,然后通过人类智慧思考后发现, ...

  7. 「POJ 3666」Making the Grade 题解(两种做法)

    0前言 感谢yxy童鞋的dp及暴力做法! 1 算法标签 优先队列.dp动态规划+滚动数组优化 2 题目难度 提高/提高+ CF rating:2300 3 题面 「POJ 3666」Making th ...

  8. FileUpload控件「批次上传 / 多档案同时上传」的范例--以「流水号」产生「变量名称」

    原文出處  http://www.dotblogs.com.tw/mis2000lab/archive/2013/08/19/multiple_fileupload_asp_net_20130819. ...

  9. LOJ #2542. 「PKUWC 2018」随机游走(最值反演 + 树上期望dp + FMT)

    写在这道题前面 : 网上的一些题解都不讲那个系数是怎么推得真的不良心 TAT (不是每个人都有那么厉害啊 , 我好菜啊) 而且 LOJ 过的代码千篇一律 ... 那个系数根本看不出来是什么啊 TAT ...

随机推荐

  1. if else与switch for与foreach

    if...else...适用于变量判断 switch适用于常量判断(switch只判断一次,if else 判断多次) foreach只适用于集合和数组查询(foreach不支持增加删除操作) for ...

  2. Harmony OS 开发避坑指南——源码下载和编译

    Harmony OS 开发避坑指南--源码下载和编译 本文介绍了如何下载鸿蒙系统源码,如何一次性配置可以编译三个目标平台(Hi3516,Hi3518和Hi3861)的编译环境,以及如何将源码编译为三个 ...

  3. OpenCV图像处理学习笔记-Day4(完结)

    OpenCV图像处理学习笔记-Day4(完结) 第41课:使用OpenCV统计直方图 第42课:绘制OpenCV统计直方图 pass 第43课:使用掩膜的直方图 第44课:掩膜原理及演示 第45课:直 ...

  4. 什么是ICD文件

    ICD就是IED Capability Description的简称,中文为IED能力描述文件.其中 IED是Intelligent Electronic Device的简称,是智能电子设备 智能电子 ...

  5. apline无法向gitlab上传git lfs问题

    1 背景 在k8s中基于alpine做底层系统的容器进行git lfs push操作时,发现报错无法上传成功 Fatal error: Server error: http://git.ops.xxx ...

  6. springboot2.2.2企业级项目整合redis与redis 工具类大全

    1.springboot2.2.2整合redis教程很多,为此编写了比较完整的redis工具类,符合企业级开发使用的工具类 2.springboot与redis maven相关的依赖 <depe ...

  7. ansible2.4安装和体验

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  8. 经验分享:计算机 web 浏览器——访问剪切板图片

      有时候,我们希望能访问用户的剪切板,来实现一些方便用户的功能:但是另一方面,剪切板里的数据对用户来说又是非常隐私的,所以浏览器在获取信息方面有安全限制,同时也提供访问接口. 当我们需要实现在富文本 ...

  9. linux时间校准 设置时间为上海时区

      [root@localhost log]# rm -f /etc/localtime [root@localhost log]# cp /usr/share/zoneinfo/Asia/Shang ...

  10. Ubuntu安装zookeeper问题

    在Ubuntu系统安装zookeeper后,启动报错: root@host8:/usr/solrcould/service1/zookeeper-3.5.0-alpha# sh bin/zkServe ...