<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[LiRewriter的博客]]></title><description><![CDATA[一个蒟蒻咸鱼OIer的博客]]></description><link>https://blog.youkuaiyun.com/LiRewriter</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; LiRewriter]]></copyright><item><title><![CDATA[blog迁移]]></title><link>https://blog.youkuaiyun.com/LiRewriter/article/details/79314683</link><guid>https://blog.youkuaiyun.com/LiRewriter/article/details/79314683</guid><author>LiRewriter</author><pubDate>Mon, 12 Feb 2018 09:36:47 +0800</pubDate><description><![CDATA[https://lire.yuyuko.cc 
kino觉得优快云的公式太丑了。。于是就帮我搭了一个qwq 
所以说大概以后主要会在那边。。 
于是luogu博客-&amp;gt;文化课博客捎带发题解（x 
其它的大多会发在那边qwq 
这边基本上就不怎么用了 
大概就是这样...]]></description><category></category></item><item><title><![CDATA[lyd读书笔记 0x05 排序（下）]]></title><link>https://blog.youkuaiyun.com/LiRewriter/article/details/79314064</link><guid>https://blog.youkuaiyun.com/LiRewriter/article/details/79314064</guid><author>LiRewriter</author><pubDate>Mon, 12 Feb 2018 00:14:21 +0800</pubDate><description><![CDATA[终于看到了完结的曙光。。话说我规划今天做后面的题诶。。





k大数

随机选取一个数，将比它大的放在左边，小的放在右边，设有cntcntcnt个比它小的，k≤cntk≤cntk \leq cnt就在左半段找，否则去右半段。这样递归即可，复杂度O(n)O(n)O(n)。 
万能的STL有nth_element()



分治排序与逆序对



#include &amp;lt;iostream&amp;gt;...]]></description><category></category></item><item><title><![CDATA[lyd读书笔记 0x05 排序（中）]]></title><link>https://blog.youkuaiyun.com/LiRewriter/article/details/79307405</link><guid>https://blog.youkuaiyun.com/LiRewriter/article/details/79307405</guid><author>LiRewriter</author><pubDate>Sat, 10 Feb 2018 22:31:51 +0800</pubDate><description><![CDATA[中位数



货仓选址

求∑ni=1|ai−x|∑i=1n|ai−x|\sum^n_{i = 1}|a_i - x|的最小值。

如果x&amp;lt;中位数，x后面的数的增加量大于前面的数的减少量 
反之亦然。 
所以x为中位数。

ljt神犇： 
将(i,ai)(i,ai)(i, a_i)投影到坐标平面上 
然后用直线x=kx=kx = k去扫，可以想象到在上下点分布平均时距离总和最小。



均分...]]></description><category></category></item><item><title><![CDATA[lyd读书笔记 0x05 排序（上）]]></title><link>https://blog.youkuaiyun.com/LiRewriter/article/details/79304194</link><guid>https://blog.youkuaiyun.com/LiRewriter/article/details/79304194</guid><author>LiRewriter</author><pubDate>Sat, 10 Feb 2018 12:35:58 +0800</pubDate><description><![CDATA[好长，好复杂。。



排序算法

第一类O(n2)O(n2)O(n^2)算法：选择、插入、冒泡 
第二类O(nlogn)O(nlogn)O(nlogn)算法：堆排、归并、快排 
第三类玄学算法：计数、基数、桶排 
然而我并没有仔细学过。。所以就先从最基础的地方开始。


选择排序：每次从序列中选一个最小的放在最前面，重复执行。
插入排序：假设前k个已经排好序，我们就可以找到新的数插进去。如果用二...]]></description><category></category></item><item><title><![CDATA[lyd读书笔记 0x03递归 0x04二分]]></title><link>https://blog.youkuaiyun.com/LiRewriter/article/details/79294262</link><guid>https://blog.youkuaiyun.com/LiRewriter/article/details/79294262</guid><author>LiRewriter</author><pubDate>Thu, 08 Feb 2018 22:52:55 +0800</pubDate><description><![CDATA[递归二分不分家~~~~





递归



递归的宏观描述

将解答的应用场景扩大到原问题的状态空间，并且扩展过程中每个步骤有相似性，则可以考虑递归和递推。 
推导路线难以确定，从路线上反向回溯的遍历方式是递归。 
假如我们能够做到：缩小问题状态空间规模，尝试求解规模缩小后的问题，找到规模缩小后的问题可以将答案扩展，如果失败去寻找其他变换路线直到确定无解。 
其中规模缩小后的子问题用原问题解决是...]]></description><category></category></item><item><title><![CDATA[lyd读书笔记 0x02 枚举、模拟、递推]]></title><link>https://blog.youkuaiyun.com/LiRewriter/article/details/79290177</link><guid>https://blog.youkuaiyun.com/LiRewriter/article/details/79290177</guid><author>LiRewriter</author><pubDate>Thu, 08 Feb 2018 15:25:14 +0800</pubDate><description><![CDATA[费解的开关

http://www.joyoi.cn/problem/tyvj-1266 
Tyvj挂了以后说实话。。joyoi好sabi啊。。 
好吧其实挺好看的。。 
首先有两条并不显然的性质。一个是，每个位置至多被点一次，这是因为如果有多于一次的点击就相当于浪费。 
另一个是，如果第一行固定，那么剩余位置也随之固定。证明如下： 
第一行固定则第一行固定。 
假定前k行的是确定的，那么如果想把...]]></description><category></category></item><item><title><![CDATA[exgcd 重修]]></title><link>https://blog.youkuaiyun.com/LiRewriter/article/details/79286142</link><guid>https://blog.youkuaiyun.com/LiRewriter/article/details/79286142</guid><author>LiRewriter</author><pubDate>Thu, 08 Feb 2018 09:38:52 +0800</pubDate><description><![CDATA[kino好强啊orz 
突然发现连青蛙的约会都没过 
怎么办 威严尽失（似乎从未存在） 
重修好了！ 
新年版的优快云emmmmm



exgcd的数学推导

真是受不了最近的优快云了。。数学公式怎么可以那么丑！！！ 
先证gcd的性质，即gcd(a,b)=gcd(b,a&amp;nbsp;mod&amp;nbsp;b)gcd(a,b)=gcd(b,a&amp;nbsp;mod&amp;nbsp;b)gcd(a , b) ...]]></description><category></category></item><item><title><![CDATA[lyd读书笔记 0x01位运算]]></title><link>https://blog.youkuaiyun.com/LiRewriter/article/details/79274244</link><guid>https://blog.youkuaiyun.com/LiRewriter/article/details/79274244</guid><author>LiRewriter</author><pubDate>Tue, 06 Feb 2018 20:22:31 +0800</pubDate><description><![CDATA[回来了一本算法竞赛进阶指南。可喜可贺，可喜可贺。 
于是怀揣着期末考试GG的决心，我….开刷了（x） 
顺便一提。。打*的题太丧病了所以就不做了。。



基本概念

bit是度量信息的基本单位。 
0x表示16进制，0xff代表-1，0x7f代表128。 
在m位二进制中，从右到左最低位为第0位，最高位为第m-1位。 
我们常用0x3f3f3f3f表示最大值，因为二倍是int最大整数，每8位相同]]></description><category></category></item><item><title><![CDATA[codeforces914C Travelling Salesman and Special Numbers 二进制特性+组合数学+递推]]></title><link>https://blog.youkuaiyun.com/LiRewriter/article/details/79212102</link><guid>https://blog.youkuaiyun.com/LiRewriter/article/details/79212102</guid><author>LiRewriter</author><pubDate>Tue, 30 Jan 2018 23:10:29 +0800</pubDate><description><![CDATA[比较骚的一道题。。 
题意大概是，我们定义一次操作&#x03B1;" role="presentation" style="position: relative;">αα\alpha：将一个数i" role="presentation" style="position: relative;">iii二进制是1的位数取出来。 
比如说，1010=10102" role="presentation"]]></description><category></category></item><item><title><![CDATA[luogu3194/BZOJ1007/HNOI2008 水平可见直线 单调栈/计算几何入门]]></title><link>https://blog.youkuaiyun.com/LiRewriter/article/details/79101387</link><guid>https://blog.youkuaiyun.com/LiRewriter/article/details/79101387</guid><author>LiRewriter</author><pubDate>Thu, 18 Jan 2018 22:10:19 +0800</pubDate><description><![CDATA[题意乍一看不是很明确…所以首先解释一下题干。 
 
如上图，蓝色的是各式各样的直线，而我们要求的就是最上面的这一部分包含哪些直线。 
就相当于求一个分段函数函数的极值。并且，我们称这些部分的集合为凸壳。 
我们一点一点来思考。首先介绍一下单调栈的概念： 
如果有一个栈，支持不断弹出以维护单调性，那么就称这个栈叫做单调栈。对单调性的维护方法是因题而异的。由于每个元素至多进入一次，所以其复杂度是O(n]]></description><category></category></item><item><title><![CDATA[luogu2387/NOI 2014 魔法森林  SPFA动态加点]]></title><link>https://blog.youkuaiyun.com/LiRewriter/article/details/79052666</link><guid>https://blog.youkuaiyun.com/LiRewriter/article/details/79052666</guid><author>LiRewriter</author><pubDate>Sat, 13 Jan 2018 17:33:38 +0800</pubDate><description><![CDATA[很毒的一道题 
蒟蒻不会LCT，看到有SPFA的做法…于是（看题解）水一发



我们发现我们要求两个权值之和的最小值。这是没有办法实现的，所以我们不妨换个思路，也就是在某一权值的条件下看看达到的最小值是多少（有些拗口）。 
换句话说，如果我们以a为关键字对边进行从小到大排序的话，依次加入边，之后对b进行最短路处理。如何处理呢？将这条边的两个顶点加入队列中进行松弛。 
显然这个时候加入该边之前最优]]></description><category></category></item><item><title><![CDATA[并查集的删除操作]]></title><link>https://blog.youkuaiyun.com/LiRewriter/article/details/79049523</link><guid>https://blog.youkuaiyun.com/LiRewriter/article/details/79049523</guid><author>LiRewriter</author><pubDate>Sat, 13 Jan 2018 09:37:11 +0800</pubDate><description><![CDATA[有一类删除叫做惰性删除，其特点是，这个点仍然在集合中但不去统计它。 
对于并查集，一般来说想要实现删除是有些困难的，不过如果用一些黑科技就会非常简洁。 
首先先引入按秩合并并查集的概念。用路径压缩的并查集，复杂度虽然是O(nα(n))O(n \alpha (n))，但是会破坏原本的结构，这是比较令人不爽的。 
但是朴素的并查集在最坏的情况下查询会被卡成O(n)O(n)，这是无法接受的慢。所以我们需]]></description><category></category></item><item><title><![CDATA[BZOJ1003/luogu1772/ZJOI2006 物流运输]]></title><link>https://blog.youkuaiyun.com/LiRewriter/article/details/79036029</link><guid>https://blog.youkuaiyun.com/LiRewriter/article/details/79036029</guid><author>LiRewriter</author><pubDate>Thu, 11 Jan 2018 16:49:52 +0800</pubDate><description><![CDATA[很有趣的一道图论+DP。

首先看数据范围，m小于等于20，直观感受状压DP…不过蒟蒻并没有想出来怎么转移。 
有一个自然而然的想法：能不能每次将堵塞的边的代价加上去，然后最后求一次最短路？但是这样很难维护转多少次，所以PASS. 
于是我就可耻的看了一下题解区。 
首先我们先列这样一个转移方程： 
dp[i]=min{dp[k]+g[k+1][i]∗(i−k)+K}dp[i] = min\{ d]]></description><category></category></item><item><title><![CDATA[母函数入门]]></title><link>https://blog.youkuaiyun.com/LiRewriter/article/details/78986157</link><guid>https://blog.youkuaiyun.com/LiRewriter/article/details/78986157</guid><author>LiRewriter</author><pubDate>Sat, 06 Jan 2018 00:10:12 +0800</pubDate><description><![CDATA[今天好像终于对困惑已久的母函数有了些感觉的样子….赶紧水一波.jpg



例一 骰子问题

掷两个清廉正直的骰子，点数之和为7的情况有多少？ 
我们来思考一下，嗯，7 = 1 + 6 = 2 + 5 = 3 + 4所以有6种。但是这样看上去一脸不爽的样子，所以我们不妨来搞一些事情。 
令f(x)=x+x2+x3+x4+x5+x6f(x) = x + x^2 + x^3 + x^4 + x^5 +]]></description><category></category></item><item><title><![CDATA[一个诗人的一生——诗人小G的人生]]></title><link>https://blog.youkuaiyun.com/LiRewriter/article/details/78882929</link><guid>https://blog.youkuaiyun.com/LiRewriter/article/details/78882929</guid><author>LiRewriter</author><pubDate>Sat, 23 Dec 2017 23:38:21 +0800</pubDate><description><![CDATA[看到群里有人说周末作文是以一个诗人的一生为题写作文…于是就突发脑洞写了这么个东西。 
哇发出来好羞耻啊（x诗与人生某一天，在某一个地方，小G诞生了。 
小G原本是有自己的名字的，但是在某一天之后，他就改名叫做小G了。没有人知道为什么，也没有人在意。 
小G喜欢写诗。他喜欢自己的诗心在无边的美景中徜徉，喜欢盯着周遭的事物。人们都说他痴了，没有救了。 
春日花开的时候，他会踏足在杨柳岸边，细细盯着一片片]]></description><category></category></item><item><title><![CDATA[平衡树学习笔记（1） BST]]></title><link>https://blog.youkuaiyun.com/LiRewriter/article/details/78881343</link><guid>https://blog.youkuaiyun.com/LiRewriter/article/details/78881343</guid><author>LiRewriter</author><pubDate>Sat, 23 Dec 2017 18:04:47 +0800</pubDate><description><![CDATA[BST，二叉排序树。这个东西应该算是联赛算法？然而我一直没有学orz。 
于是我就调了一天。。真菜啊我 
BST的原理很简单，保证中序遍历是有序的，我们称之为BST性质。存储为了方便之后的操作，这里我们用结构体来实现struct node{
    int son[2], fa, size, val; //son[0]为左儿子，son[1] 为右儿子
}a[100003];遍历inline void]]></description><category></category></item><item><title><![CDATA[分块（一） 分块的思想与基础功能实现]]></title><link>https://blog.youkuaiyun.com/LiRewriter/article/details/78826207</link><guid>https://blog.youkuaiyun.com/LiRewriter/article/details/78826207</guid><author>LiRewriter</author><pubDate>Sun, 17 Dec 2017 17:13:32 +0800</pubDate><description><![CDATA[其实分块是什么东西很清楚的。 
一个数列进行操作是O(mn)O(mn)的，那么每n√\sqrt n个分成一段，共分成n√\sqrt n段，然后我们操作时，对于在一段内的直接单点暴力修改，跨段部分按段转移，这样每次操作复杂度就降成了O(n√)O( \sqrt n)。 
非常简单的思想，糟心的是如何实现。建块首先我们先求出块的数目bct = (int)sqrt(n) 
然后用block数组记录某一个元素]]></description><category></category></item><item><title><![CDATA[codeforces898D Alarmclock]]></title><link>https://blog.youkuaiyun.com/LiRewriter/article/details/78822135</link><guid>https://blog.youkuaiyun.com/LiRewriter/article/details/78822135</guid><author>LiRewriter</author><pubDate>Sun, 17 Dec 2017 00:26:39 +0800</pubDate><description><![CDATA[有些类似线段覆盖的贪心。蛮巧妙的。题意大概是这样的， 
有nn个闹钟，第ii个会在第aia_i时刻开始叫mm分钟，如果在某一段区间[L,L+m][L, L + m]有超过kk个闹钟响小明就会被吵醒，求最少关掉多少闹钟会使得小明不被吵醒，并且在区间外开始响的闹钟不计入区间中。 
1 ≤ k ≤ n ≤ 2⋅1051 ≤ k ≤ n ≤ 2·10^5, 1 ≤ ai,m ≤ 1061 ≤ a_i, m]]></description><category></category></item><item><title><![CDATA[codeforces895C Square Subsets]]></title><link>https://blog.youkuaiyun.com/LiRewriter/article/details/78817834</link><guid>https://blog.youkuaiyun.com/LiRewriter/article/details/78817834</guid><author>LiRewriter</author><pubDate>Sat, 16 Dec 2017 00:52:38 +0800</pubDate><description><![CDATA[什么，这是状压DP？？？ 
是在下输了…输的心服口服… 
ABC都是好题啊…前排提醒，由于latex没有^这个符号，所以用⨁\bigoplus 代替 
首先看看数据范围，70这个玄学范围，emmm… 
理性分析查找题解一波，我们想起来要的是完全平方数，那么就可以搞一些大新闻： 
用dp[i][j]dp[i][j]表示前ii个数达到状态jj的情况有多少种，这里的状态jj表示某一个因子有奇数个还是偶数个]]></description><category></category></item><item><title><![CDATA[codeforces895B XK segments]]></title><link>https://blog.youkuaiyun.com/LiRewriter/article/details/78817405</link><guid>https://blog.youkuaiyun.com/LiRewriter/article/details/78817405</guid><author>LiRewriter</author><pubDate>Fri, 15 Dec 2017 22:45:16 +0800</pubDate><description><![CDATA[蛮有趣的一道题。 
先来说说题意，大概是：对一个数组a，定义符合条件的二元组(i,j)(i, j)表示恰好存在kk个整数，满足ai≤y≤aja_i \leq y \leq a_j且yy为xx的倍数，求符合条件的二元组数量。一上来有些懵逼，不妨先找找规律。 
我们知道，假定存在kk个这样的整数，那么首先[L,L+(k−1)∗x][L, L + (k - 1) * x]一定是符合条件的一个区间，然后考虑]]></description><category></category></item></channel></rss>