随笔分类 -  A.题目难度—紫题

摘要:题意简述:给定一颗N个点边带权的树,再给定M条链,问将树上的某条边权值改为0后,这些链中最长的至少有多长。 由于答案显然具有单调性,因此可以考虑二分答案。 二分答案后就变成了这样一个问题:将一条边的边权变为0后,是否可以让所有m条路径中每条的权值都小于mid; 这个问题乍一看还是没啥思路 阅读全文
posted @ 2019-09-28 20:43 shao0320 阅读(203) 评论(0) 推荐(0) 编辑
摘要:NOIP2016D1T2...... 我连D1T2都需要看题解才能做了...... AFO...... 题目传送门 解析: 考虑有一个玩家,其起点为u,终点为v。 则其路径可以分成两部分,一部分为u>lca(u,v),另一部分为lca(u,v)>v 对于前半部分,可以对点x(x在 阅读全文
posted @ 2019-09-25 22:16 shao0320 阅读(192) 评论(0) 推荐(0) 编辑
摘要:树上莫队模板题。 使用欧拉序将树上路径转化为普通区间。 之后莫队维护即可。不要忘记特判LCA 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<cmath> 5 #include<algorithm> 6 # 阅读全文
posted @ 2019-09-24 22:48 shao0320 阅读(228) 评论(0) 推荐(0) 编辑
摘要:设当前询问端点为l,r,则目前有n中不同颜色的袜子,分别是a1,a2...an,第i种颜色的袜子有cnti只 则抽到两只袜子的情况数有cnt1(cnt11)/2+cnt2(cnt21)/2+......+cntn(cntn1)/2种。 化简:$ 阅读全文
posted @ 2019-09-21 20:57 shao0320 阅读(180) 评论(0) 推荐(0) 编辑
摘要:考虑模拟退火。 题目要我们找到一个点,使得整个系统平衡。 这个要求等价于让我们找到一个点,使得系统总能量最小。 我们退火出一个点,然后计算其能量即可。 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<alg 阅读全文
posted @ 2019-09-20 11:09 shao0320 阅读(147) 评论(0) 推荐(0) 编辑
摘要:毒瘤莫队卡常题,卡了一早上的常数,才开O2勉强过。 带修莫队模板题。 普通莫队要离线下来做,遇到这种带修改的题目直接就萎了,但是全国广大的OIer们在莫队的基础上,发明了带修莫队这种玄学算法。 具体来说就是给修改和求值打上时间戳,然后在普通莫队双指针的基础上增加一个指针tim指向时间,在这一个维度上 阅读全文
posted @ 2019-09-19 09:56 shao0320 阅读(179) 评论(0) 推荐(0) 编辑
摘要:题目传送门 维护一个区间内不同数的个数,最直观的想法是直接排序后用树状数组维护即可。但是我们发现n只有3e4,于是我们想到了可以拿一个O(nn)的莫队维护。关于莫队算法如果有不知道的或者不会写的,建议看一看这位大佬的博客 1 #pragma GCC optimize(3) 2 #i 阅读全文
posted @ 2019-09-18 23:02 shao0320 阅读(174) 评论(0) 推荐(0) 编辑
摘要:考虑二分答案+可持久化线段树。 对于这种最大化最小值的问题,通常使用二分来解决。于是我们想到了对果汁按其d值排序。然后使用下标为费用的一棵可持久化线段树来维护费用。 check函数可以这样写:如果我们发现以mid为根的线段树本身还不够li升,就可以直接返回0了,否则贪心地查询其最小花费,如果也符合要 阅读全文
posted @ 2019-09-09 22:59 shao0320 阅读(225) 评论(0) 推荐(0) 编辑
摘要:CDQ用来解决分治时左半部分对右半部分造成影响的问题。 CDQ分治的经典问题是三维偏序问题。 要想解决三维偏序问题,首先你要知道什么是偏序。(废话) 一维偏序: 给出直线上的n个点,问有多少对点满足xi<=xj 对于这个问题,直接排序就可以了。 二维偏序: 给定平面内的n个点,问有多少对点满足xi< 阅读全文
posted @ 2019-09-07 15:28 shao0320 阅读(694) 评论(0) 推荐(0) 编辑
摘要:闲来无事,特意回味一下去年担当NOIPD1T3(防AK却没能防住)之大任的经典好题。 首先看到什么“最短赛道的长度尽可能大”,就知道离不开二分。于是我们想到了一种思路:二分+树上贪心。 二分判定很简单,就是对于二分出来的答案mid,检查树上是否有大于m条不相交的,权值和大于mid的链。而如何凑出尽可 阅读全文
posted @ 2019-07-28 22:15 shao0320 阅读(1071) 评论(0) 推荐(0) 编辑
摘要:题目传送门 省选D2T3考板子可真是不多见呢。。。。~~~ 这题就是一个裸的树链剖分,对于每一个Add操作,维护从u至v的路径,对于每一个Query操作,询问以u为根的子树之和。如果不会树链剖分可以看我的往期博客,具体细节在代码之中就不多赘述了~ 下面给出参考代码: 1 #include<iostr 阅读全文
posted @ 2019-07-07 08:26 shao0320 阅读(189) 评论(0) 推荐(0) 编辑
摘要:树链剖分用来解静态树上维护路径信息的问题,例如:给定一颗点带权的树,每次去修改某条路径上所有点的点权,或是求某条路径上的点权之和,当这棵树的形态为一条链时,这实际上就是一个区间修改求和的问题,可以用线段树等数据结构方便地求解。对于其他的情况,由于树的形态不变,因此树链剖分的策略是把这棵树恰当的剖分为 阅读全文
posted @ 2019-07-04 14:44 shao0320 阅读(236) 评论(0) 推荐(0) 编辑
摘要:洛谷上的翻译是真的哲学♂♂♂ 非常van的题目传送门♂♂♂ 个人认为这题充其量也就是个蓝(nan)题,首先处理-1的情况,-1的情况是不等式组无解,按照差分约束的规则,无解说明出现了负环,先跑一遍以0为源点的SPFA判断有无负环即可。再来处理-2的情况,结果为-2就说明1号和n号节点不存在直接的或间 阅读全文
posted @ 2019-06-26 20:20 shao0320 阅读(232) 评论(0) 推荐(0) 编辑
摘要:题目传送门 差分约束系统很棒的应用,首先运用前缀和的思想,令s[k]为0~k中被选出来数的个数,则s[b[i]]>=s[a[i]-1]+c,这样会有一个问题,那就是下标可能会出现负数,因此我们可以改变前缀和表示的方法,设s[k]为0~k-1中被选出来的数,则约束条件可以转化为:s[b[i]+1]-s 阅读全文
posted @ 2019-06-25 20:35 shao0320 阅读(156) 评论(0) 推荐(0) 编辑
摘要:题目传送门 评分:省选/NOI-,难度:普及+/提高 这题真的和RMQ没有半点关系,只需要一个裸的线段树,连pushdown都不需要,只需要两种操作:区间修改和区间求最小值,在回溯时加上标记即可,唯一有点思维含量的是对环的处理,如果左端点大于了右端点,就维护(l,n)(1,r),否则正常维护即可,不 阅读全文
posted @ 2019-06-22 13:49 shao0320 阅读(304) 评论(0) 推荐(0) 编辑
摘要:题目描述 为了提高智商,ZJY开始学习组合数学。某一天她解决了这样一个问题:给一个网格图,其中某些格子有财宝。每次从左上角出发,只能往右或下走。问至少要走几次才可能把财宝全捡完。 但是她还不知足,想到了这个问题的一个变形:假设每个格子中有好多块财宝,而每一次经过一个格子至多只能捡走一块财宝,其他条件 阅读全文
posted @ 2019-04-13 12:40 shao0320 阅读(203) 评论(0) 推荐(0) 编辑

****************************************** 页脚Html代码 ******************************************
点击右上角即可分享
微信分享提示