02 2021 档案
摘要:传送门 解题思路 先遍历一遍树,求出size[u](节点u的所有相邻节点的点权和),和图中联合权值的最大值。 如何求最大值? 求出每个点相连的点的第一大和第二大点权,相乘后与ans取max。 再求和: 再遍历一遍树,对于每个点u,答案加上w[u]*(size[v]-w[u])。 AC代码 1 #in
阅读全文
摘要:洛谷传送门 CF传送门 解题思路 先考虑没有限制负数的情况,很显然就是用一个栈,每次与栈顶能配对就配对。 当有限制负数时,会出现错误,如 1 1 3 3 -1 -1,此时我们不能让前两个1相配对。 这是进行以下两个改动: 因为要求是正数在负数前面,所以我们进行倒序枚举。 若当前数要求为负数,则直接入
阅读全文
摘要:洛谷传送门 CF传送门 解题思路 先想O(n^2)暴力,第一层循环为序列a1的最终长度i,第二层循环为序列a3的最终长度j,那么操作次数为原序列a1给a2和a3的数字个数+a2给a1a3的个数+a3给a1a2的个数。 可以预处理出三个数组,cnt1[i]表示序列a1中1……i中有几个数字,cnt2[
阅读全文
摘要:洛谷传送门 CF传送门 解题思路 紫题?? 洛谷的题目颜色真的太准! 读完题,我们可以发现以下结论: 栈内元素清空后,剩下的元素从大到小放入答案序列尾部; 比栈顶元素小的元素在栈底则无解 所以思路即为:把给定的元素全部压入栈中,压入栈的过程中同时能弹出就弹出(要符合字典序,即从1开始),然后对剩下的
阅读全文
摘要:传送门 解题思路 先读懂题目: 有一个等差数列(未排序),共有n个数字,需要你猜出公差和最小的数字。 你共有60次询问机会,每一次有两种选择: ?i,返回ai的值 > i,返回是否存在一个数严格大于i 最后给出答案。 思路? 首先用二分查找得到最大值,使用最多三十次左右询问次数(a<=10^9)。
阅读全文
摘要:传送门 解题思路 看到题的第一眼,直觉告诉我要把所有的数乘在最大的数身上,但举了一个反例: 2 1 2 2 3 这样乘在2身上明显答案更优。 所以并不能确定应该乘在谁的身上,但是可以保证一定是把所有数都乘在一个数身上。 那么怎么优化O(n^2)的时间复杂度呢? 我们可以预处理一个数组存所有数字二进制
阅读全文
摘要:传送门 解题思路 开21棵线段树,把数字拆成二进制存,然后对每一位进行操作。 注意+-*/和&^|等不能混用,都各自是闭环,两者毫无规律可言! 所以就开21棵线段树。 AC代码 1 #include<iostream> 2 #include<algorithm> 3 #include<cmath>
阅读全文
摘要:传送门 莫队 莫队就是一个优雅的暴力。 莫队就是把询问分块+排序,第一关键字为左端点在第几块,第二关键字为区间右端点。 条件?问题离线,询问的是区间。 名字由来?一个国家队队长发明的= 解题思路 对于区间i...j,成功的概率为: 不必解释了(学过排列组合的都懂,像我一样没学过的也想不懂) 整理一下
阅读全文
摘要:传送门 解题思路 一言一概之,动态求区间众数。 瞄一眼数据范围,大约n根号n——分块大法好! 先把读入的数据离散化,然后进行分块处理。 对于每一个询问,把它分成整块和零散快处理: 整块:预处理i到j块的众数,直接O(1)询问。 零散快:预处理从1到n每个数出现的位置,枚举零散快的数字,二分查找询问的
阅读全文
摘要:前言 wc真是比某某学堂实惠多了 Day1~Day3 三天快乐的网课时光。 竟然有两个课堂…… 默默地QQ问问xhy有没有录 禁 赛 三 年 警 告 !! Day4 上午继续网课,下去一点半贾老师开车带着我们去济南的山东师范大学。 路上车轮胎出问题了,高速上耽误了一个多小时…… 当然就是多看了一个多
阅读全文
摘要:传送门 分块大法好 分块 什么是分块 就是把一连串的东西分成几个部分,通常是分成√n个部分,每个部分√n个数字,然后每一块分开处理。(当然有别的情况) 有什么用 时间得到了优化,把n变成了sqrt(n)*log(sqrt(n))。这是一种优雅的暴力呢 主要思路? 每一块内按照权值排序。对于每一次操作
阅读全文
摘要:传送门 启发式合并 通俗点讲,就是将两个数据合并时,小的合并到大的里,这样就可以节约时间。 解题思路 再看看这个题,就是个板子题。 在两个节点信息合并起来时,让颜色数少的节点合并到颜色点多的节点上,实际操作时则是都是儿子的信息合并到父亲上,但是若儿子信息多于父亲,则交换一下信息(swap可做到O(1
阅读全文