随笔分类 -  OJ--Luogu

摘要:Luogu 3648 [APIO2014]序列分割 "题目链接" 题解: 首先要发现一个重要的性质: 分割的顺序是不会影响答案的 证明: 首先对于没有交的两段区间,显然先后顺序改变不会有影响 而对于在同一段区间上的两次分割: 设有一段序列由长度为$x,y,z$的三段拼接起来 如果先分割$xy$和$z 阅读全文
posted @ 2019-03-19 21:27 nianheng 阅读(149) 评论(0) 推荐(0)
摘要:[LnOI2019]加特林轮盘赌(DP,概率期望) "题目链接" 题解: 首先特判掉$p=0/1$的情况... 先考虑如果$k=1$怎么做到$n^2$的时间复杂度 设$f[i]$表示有$i$个人,$k=1$的时候幸存的概率 设$g[i][j]$表示$i$个人每个人挨一下恰好死$j$个人的概率 我们就 阅读全文
posted @ 2019-03-10 17:23 nianheng 阅读(421) 评论(0) 推荐(0)
摘要:Luogu 5004 专心OI 跳房子(矩阵快速幂) "题目链接" 题解: 先考虑最朴素的dp 设$f[i][0/1]$表示第$i$个位置跳/不跳的方案数,则: $$ \begin{cases} f[i][0]=f[i 1][0]+f[i 1][1]\\ \\ f[i][1]=f[i m 1][0] 阅读全文
posted @ 2019-03-10 12:21 nianheng 阅读(129) 评论(0) 推荐(0)
摘要:Luogu 3250 [BJOI2017]魔法咒语(AC自动机,矩阵快速幂) "题目链接" 题解: 多串匹配问题,很容易想到是AC自动机 先构建忌讳词语的AC自动机,构建时顺便记录一下这个点以及它的所有后缀有没有忌讳词语,即对于每个AC自动机上的结点$x$,$p[x].p|=p[p[x].f].p$ 阅读全文
posted @ 2019-03-10 09:13 nianheng 阅读(189) 评论(0) 推荐(0)
摘要:Luogu 3250 [HNOI2016]网络 题面 "Luogu 3250" 题解 CDQ分治...这个应该算是整体二分吧 二分重要度,按照时间从小到大加入大于重要度的边 对于一个询问,如果经过这个点的边数不等于加入的边数,那就说明有比重要度大而且不经过这个点的边,然后分成两部分继续做 看Cand 阅读全文
posted @ 2018-12-26 21:35 nianheng 阅读(129) 评论(0) 推荐(0)
摘要:Luogu 1975 [国家集训队]排队 题面 "Luogu 1975" 题解 题意:给出一个长度为n的数列以及m个交换两个数的操作,问每次操作后逆序对数量 时间,下标和数的大小三维偏序,,,把交换操作看成是减去两个数再加上两个数,套板子就好了 发现这种计数类型的CDQ一般有两种写法: 按a排序,C 阅读全文
posted @ 2018-12-26 21:17 nianheng 阅读(116) 评论(0) 推荐(0)
摘要:Luogu 3527 [POI2011]MET Meteors 题面 "Luogu 3527" 题解 感觉和上一那道题是一个类型的,直接二分答案,用BIT维护区间加(差分)即可 代码 ~~~cpp include include include include include include inc 阅读全文
posted @ 2018-12-25 22:46 nianheng 阅读(128) 评论(0) 推荐(0)
摘要:Luogu 1527 [国家集训队]矩阵乘法 题面 "Luogu 1527" 题解 ~~昨天学CDQ分治时做了一些题,但是因为题(wo)太(tai)水(lan)了(le)并没有整理~~ 学了一晚上的整体二分,拿这道模板题练练手qaq 整体二分的思想:对答案进行分治 每次处理一段答案区间时,二分一个m 阅读全文
posted @ 2018-12-25 22:26 nianheng 阅读(170) 评论(0) 推荐(0)
摘要:虚树第一题 对于每次询问的点建立一棵虚树,然后在树上DP,一个点的答案就是这个点的父边切断的代价与所有儿子切断的代价去最小值,当然如果这个节点是资源点则必须切父边 注意在虚树上一条边的代价应该是中间所有边代价的最小值,在这道题里可以用到根节点边的最小值 建虚树的时候可以不去建那些在其他资源点下面的资 阅读全文
posted @ 2018-12-04 20:16 nianheng 阅读(123) 评论(0) 推荐(0)
摘要:$trie$树建广义后缀自动机: $dfs$遍历$trie$树,将树上的一个节点插入$sam$时,将他的$fa$在$sam$上所在的节点作为$last$ cpp include include include include include include using namespace std; 阅读全文
posted @ 2018-12-04 20:05 nianheng 阅读(116) 评论(0) 推荐(0)
摘要:广义后缀自动机+DP 对于作文库建出广义后缀自动机,广义自动机就是在每次添加一个字符串之前把$last=0$,然后正常添加就好了 对于每个询问串,预处理出每个位置$i$能向前匹配的最长长度$pp[i]$。 二分长度$L$,对于位置$i$,设往前匹配到$j$,满足$i pp[i] include in 阅读全文
posted @ 2018-12-04 19:59 nianheng 阅读(125) 评论(0) 推荐(0)
摘要:这道题应该是后缀数组的套路题啊,把单词连接起来,中间用没有出现过且互不相同的字符来分隔开,求一下$height$数组。 对于一个单词来说,设单词长$len$,所在的后缀为$i$,如果某后缀$j$满足$lcp(i,j)==len$,则$j$的前缀与这个单词相等。因为和$i$的$lcp$大小是从$i$向 阅读全文
posted @ 2018-11-30 09:32 nianheng 阅读(137) 评论(0) 推荐(0)
摘要:这题和在我长郡考试时的一道题思路差不多...考虑折半搜索,预处理左半边选的方案所产生的数量差值$x$以及价值差值$y$,把$y$扔到下标为$x$的set里面,然后在搜索右半边,每搜出一个状态,设他的数量差值为$a$,价值差值$b$,根据题意,要满足数量差值小于1,就要找左半边的状态来互补一下,很显然 阅读全文
posted @ 2018-11-29 22:38 nianheng 阅读(176) 评论(0) 推荐(0)
摘要:$\sum_{i include include include include include using namespace std; typedef long long ll; const int maxn=1e6+100; struct SA{ int sa[maxn],tp[maxn],r 阅读全文
posted @ 2018-11-29 22:19 nianheng 阅读(113) 评论(0) 推荐(0)
摘要:这题好像只要会用set/平衡树以及裸的$Excrt$就能A啊...然而当时我虽然看出是$Excrt$却并不会...今天又学了一遍$Excrt$,趁机把这个坑给填了吧 现预处理一下,找出每条龙用哪吧剑,把所有龙都砍$tmp$刀到负血。 设之后每条龙都砍了a刀,对于第$i$条龙,剑的攻击力为$w_i$, 阅读全文
posted @ 2018-11-27 22:55 nianheng 阅读(115) 评论(0) 推荐(0)
摘要:几何题,二次函数,化一下式子吧 设二次函数$y=ax^2+bx$,对于一个线段$(x,y1)$,$(x,y2)$,与他相交的条件是$y1=y1$,可以化为变量为$a,b$的一次函数$b =xa+\frac{y1}{x}$,这可以表示成(a b)平面上的一个半平面... 如果一些线段的半平面交不为空, 阅读全文
posted @ 2018-11-24 22:40 nianheng 阅读(127) 评论(0) 推荐(0)
摘要:凸多边形的面积就相当于半平面交 求几个凸多边形面积交就相当于一堆半平面一起求交 ~~~cpp include include include include using namespace std; const int maxn=1e3+100; struct Point{ double x,y; 阅读全文
posted @ 2018-11-24 22:25 nianheng 阅读(120) 评论(0) 推荐(0)
摘要:把地面看成半平面,能看到所有位置的点所在的区域即为半平面的交 因为分段函数的极值只会在转折处或边界取到,所以对于半平面上和地面上的每一个交点都求一下距离就好了 ~~~cpp include include include include using namespace std; const int 阅读全文
posted @ 2018-11-24 22:23 nianheng 阅读(145) 评论(0) 推荐(0)
摘要:考虑网络流,二分时间,源点向巫妖连流量为攻击次数的边,把每个巫妖向他能打的小精灵连一条流量为一的边,每个小精灵向汇点连一条边。 预处理每个小精灵能被那些巫妖打,这道题好像视线与树相切也算能打~~(雾~~。 ~~~cpp include include include include include 阅读全文
posted @ 2018-11-23 22:30 nianheng 阅读(146) 评论(0) 推荐(0)
摘要:题目中给出了三种金属的比例,实际上只用考虑两个就可以,第三个可以由另外两个确定qwq 如果把原料和需求看做二维平面上的点,可以发现两种原料能混合成的比例就在他们相连的线段上,也就是说线段上的点都能混合出来。所以如果一种需求包含在一些原料构成的多边形中,他就是可以被混合出来的,题目就变成了用最少的原料 阅读全文
posted @ 2018-11-23 22:18 nianheng 阅读(111) 评论(0) 推荐(0)