09 2019 档案

摘要:题意简述:给定一颗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) 编辑
摘要:一、前言 本博客适合已经学会欧几里得算法的人食用~~~ 二、扩展欧几里得算法 为了更好的理解扩展欧几里得算法,首先你要知道一个叫做贝祖定理的玄学定理: 即如果a、b是整数,那么一定存在整数x、y使得ax+by=gcd(a,b)。 通俗的说就是:如果ax+by=c有解,那么$c\%gcd(a, 阅读全文
posted @ 2019-09-15 21:34 shao0320 阅读(756) 评论(0) 推荐(0) 编辑
摘要:考虑二分答案+可持久化线段树。 对于这种最大化最小值的问题,通常使用二分来解决。于是我们想到了对果汁按其d值排序。然后使用下标为费用的一棵可持久化线段树来维护费用。 check函数可以这样写:如果我们发现以mid为根的线段树本身还不够li升,就可以直接返回0了,否则贪心地查询其最小花费,如果也符合要 阅读全文
posted @ 2019-09-09 22:59 shao0320 阅读(225) 评论(0) 推荐(0) 编辑
摘要:今天上午省选字符串......只会KMP、连hash都不会的我被大佬虐惨了......于是我要发奋图强学习字符串,学习字符串当然就要从Trie树这种可爱的数据结构开始啦!!! 一、什么是Trie树??? 字典树,顾名思义,用来保存一些字符串。 二、Trie树的优势/用途??? 那么就有人会问了:保存 阅读全文
posted @ 2019-09-08 23:02 shao0320 阅读(301) 评论(0) 推荐(0) 编辑
摘要:CDQ用来解决分治时左半部分对右半部分造成影响的问题。 CDQ分治的经典问题是三维偏序问题。 要想解决三维偏序问题,首先你要知道什么是偏序。(废话) 一维偏序: 给出直线上的n个点,问有多少对点满足xi<=xj 对于这个问题,直接排序就可以了。 二维偏序: 给定平面内的n个点,问有多少对点满足xi< 阅读全文
posted @ 2019-09-07 15:28 shao0320 阅读(694) 评论(0) 推荐(0) 编辑

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