自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

LiRewriter的博客

一个蒟蒻咸鱼OIer的博客

  • 博客(62)
  • 收藏
  • 关注

原创 blog迁移

https://lire.yuyuko.cc kino觉得CSDN的公式太丑了。。于是就帮我搭了一个qwq 所以说大概以后主要会在那边。。 于是luogu博客->文化课博客捎带发题解(x 其它的大多会发在那边qwq 这边基本上就不怎么用了 大概就是这样...

2018-02-12 09:36:47 582 3

原创 lyd读书笔记 0x05 排序(下)

终于看到了完结的曙光。。话说我规划今天做后面的题诶。。k大数随机选取一个数,将比它大的放在左边,小的放在右边,设有cntcntcnt个比它小的,k≤cntk≤cntk \leq cnt就在左半段找,否则去右半段。这样递归即可,复杂度O(n)O(n)O(n)。 万能的STL有nth_element()分治排序与逆序对#include <iostream>...

2018-02-12 00:14:21 413 2

原创 lyd读书笔记 0x05 排序(中)

中位数货仓选址求∑ni=1|ai−x|∑i=1n|ai−x|\sum^n_{i = 1}|a_i - x|的最小值。如果x<中位数,x后面的数的增加量大于前面的数的减少量 反之亦然。 所以x为中位数。ljt神犇: 将(i,ai)(i,ai)(i, a_i)投影到坐标平面上 然后用直线x=kx=kx = k去扫,可以想象到在上下点分布平均时距离总和最小。均分...

2018-02-10 22:31:51 420

原创 lyd读书笔记 0x05 排序(上)

好长,好复杂。。排序算法第一类O(n2)O(n2)O(n^2)算法:选择、插入、冒泡 第二类O(nlogn)O(nlogn)O(nlogn)算法:堆排、归并、快排 第三类玄学算法:计数、基数、桶排 然而我并没有仔细学过。。所以就先从最基础的地方开始。选择排序:每次从序列中选一个最小的放在最前面,重复执行。插入排序:假设前k个已经排好序,我们就可以找到新的数插进去。如果用二...

2018-02-10 12:35:58 367

原创 lyd读书笔记 0x03递归 0x04二分

递归二分不分家~~~~递归递归的宏观描述将解答的应用场景扩大到原问题的状态空间,并且扩展过程中每个步骤有相似性,则可以考虑递归和递推。 推导路线难以确定,从路线上反向回溯的遍历方式是递归。 假如我们能够做到:缩小问题状态空间规模,尝试求解规模缩小后的问题,找到规模缩小后的问题可以将答案扩展,如果失败去寻找其他变换路线直到确定无解。 其中规模缩小后的子问题用原问题解决是...

2018-02-08 22:52:55 461

原创 lyd读书笔记 0x02 枚举、模拟、递推

费解的开关http://www.joyoi.cn/problem/tyvj-1266 Tyvj挂了以后说实话。。joyoi好sabi啊。。 好吧其实挺好看的。。 首先有两条并不显然的性质。一个是,每个位置至多被点一次,这是因为如果有多于一次的点击就相当于浪费。 另一个是,如果第一行固定,那么剩余位置也随之固定。证明如下: 第一行固定则第一行固定。 假定前k行的是确定的,那么如果想把...

2018-02-08 15:25:14 277

原创 exgcd 重修

kino好强啊orz 突然发现连青蛙的约会都没过 怎么办 威严尽失(似乎从未存在) 重修好了! 新年版的CSDNemmmmmexgcd的数学推导真是受不了最近的CSDN了。。数学公式怎么可以那么丑!!! 先证gcd的性质,即gcd(a,b)=gcd(b,a mod b)gcd(a,b)=gcd(b,a mod b)gcd(a , b) ...

2018-02-08 09:38:52 415

原创 lyd读书笔记 0x01位运算

回来了一本算法竞赛进阶指南。可喜可贺,可喜可贺。 于是怀揣着期末考试GG的决心,我….开刷了(x) 顺便一提。。打*的题太丧病了所以就不做了。。基本概念bit是度量信息的基本单位。 0x表示16进制,0xff代表-1,0x7f代表128。 在m位二进制中,从右到左最低位为第0位,最高位为第m-1位。 我们常用0x3f3f3f3f表示最大值,因为二倍是int最大整数,每8位相同

2018-02-06 20:22:31 399

原创 codeforces914C Travelling Salesman and Special Numbers 二进制特性+组合数学+递推

比较骚的一道题。。 题意大概是,我们定义一次操作α" role="presentation" style="position: relative;">αα\alpha:将一个数i" role="presentation" style="position: relative;">iii二进制是1的位数取出来。 比如说,1010=10102" role="presentation"

2018-01-30 23:10:29 627 1

原创 luogu3194/BZOJ1007/HNOI2008 水平可见直线 单调栈/计算几何入门

题意乍一看不是很明确…所以首先解释一下题干。 如上图,蓝色的是各式各样的直线,而我们要求的就是最上面的这一部分包含哪些直线。 就相当于求一个分段函数函数的极值。并且,我们称这些部分的集合为凸壳。 我们一点一点来思考。首先介绍一下单调栈的概念: 如果有一个栈,支持不断弹出以维护单调性,那么就称这个栈叫做单调栈。对单调性的维护方法是因题而异的。由于每个元素至多进入一次,所以其复杂度是O(n

2018-01-18 22:10:19 395

原创 luogu2387/NOI 2014 魔法森林 SPFA动态加点

很毒的一道题 蒟蒻不会LCT,看到有SPFA的做法…于是(看题解)水一发我们发现我们要求两个权值之和的最小值。这是没有办法实现的,所以我们不妨换个思路,也就是在某一权值的条件下看看达到的最小值是多少(有些拗口)。 换句话说,如果我们以a为关键字对边进行从小到大排序的话,依次加入边,之后对b进行最短路处理。如何处理呢?将这条边的两个顶点加入队列中进行松弛。 显然这个时候加入该边之前最优

2018-01-13 17:33:38 334

原创 并查集的删除操作

有一类删除叫做惰性删除,其特点是,这个点仍然在集合中但不去统计它。 对于并查集,一般来说想要实现删除是有些困难的,不过如果用一些黑科技就会非常简洁。 首先先引入按秩合并并查集的概念。用路径压缩的并查集,复杂度虽然是O(nα(n))O(n \alpha (n)),但是会破坏原本的结构,这是比较令人不爽的。 但是朴素的并查集在最坏的情况下查询会被卡成O(n)O(n),这是无法接受的慢。所以我们需

2018-01-13 09:37:11 2508

原创 BZOJ1003/luogu1772/ZJOI2006 物流运输

很有趣的一道图论+DP。首先看数据范围,m小于等于20,直观感受状压DP…不过蒟蒻并没有想出来怎么转移。 有一个自然而然的想法:能不能每次将堵塞的边的代价加上去,然后最后求一次最短路?但是这样很难维护转多少次,所以PASS. 于是我就可耻的看了一下题解区。 首先我们先列这样一个转移方程: dp[i]=min{dp[k]+g[k+1][i]∗(i−k)+K}dp[i] = min\{ d

2018-01-11 16:49:52 321

原创 母函数入门

今天好像终于对困惑已久的母函数有了些感觉的样子….赶紧水一波.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 +

2018-01-06 00:10:12 902 1

原创 一个诗人的一生——诗人小G的人生

看到群里有人说周末作文是以一个诗人的一生为题写作文…于是就突发脑洞写了这么个东西。 哇发出来好羞耻啊(x诗与人生某一天,在某一个地方,小G诞生了。 小G原本是有自己的名字的,但是在某一天之后,他就改名叫做小G了。没有人知道为什么,也没有人在意。 小G喜欢写诗。他喜欢自己的诗心在无边的美景中徜徉,喜欢盯着周遭的事物。人们都说他痴了,没有救了。 春日花开的时候,他会踏足在杨柳岸边,细细盯着一片片

2017-12-23 23:38:21 905

原创 平衡树学习笔记(1) BST

BST,二叉排序树。这个东西应该算是联赛算法?然而我一直没有学orz。 于是我就调了一天。。真菜啊我 BST的原理很简单,保证中序遍历是有序的,我们称之为BST性质。存储为了方便之后的操作,这里我们用结构体来实现struct node{ int son[2], fa, size, val; //son[0]为左儿子,son[1] 为右儿子}a[100003];遍历inline void

2017-12-23 18:04:47 335

原创 分块(一) 分块的思想与基础功能实现

其实分块是什么东西很清楚的。 一个数列进行操作是O(mn)O(mn)的,那么每n√\sqrt n个分成一段,共分成n√\sqrt n段,然后我们操作时,对于在一段内的直接单点暴力修改,跨段部分按段转移,这样每次操作复杂度就降成了O(n√)O( \sqrt n)。 非常简单的思想,糟心的是如何实现。建块首先我们先求出块的数目bct = (int)sqrt(n) 然后用block数组记录某一个元素

2017-12-17 17:13:32 1003

原创 codeforces898D Alarmclock

有些类似线段覆盖的贪心。蛮巧妙的。题意大概是这样的, 有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

2017-12-17 00:26:39 337

原创 codeforces895C Square Subsets

什么,这是状压DP??? 是在下输了…输的心服口服… ABC都是好题啊…前排提醒,由于latex没有^这个符号,所以用⨁\bigoplus 代替 首先看看数据范围,70这个玄学范围,emmm… 理性分析查找题解一波,我们想起来要的是完全平方数,那么就可以搞一些大新闻: 用dp[i][j]dp[i][j]表示前ii个数达到状态jj的情况有多少种,这里的状态jj表示某一个因子有奇数个还是偶数个

2017-12-16 00:52:38 387

原创 codeforces895B XK segments

蛮有趣的一道题。 先来说说题意,大概是:对一个数组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]一定是符合条件的一个区间,然后考虑

2017-12-15 22:45:16 273

原创 codeforces895A Pizza Seperation

Div2的T1出这个真的好吗… 思考余地很大的一道题。来说说题意吧。有一个和为360的环形数列,将其分成两半使得差最小。一个直观的做法是滚动n次,然后我们可以预处理一个前缀和,并从前往后扫一遍,这样可以过掉这道题,复杂度是O(n2)O(n^2)的。但这个复杂度显然不能让我们满意。 于是作者给出了一个很有趣的做法: 首先明确一点,对于一个环形数列来说,将之展开之后,分成两部分,一定有一部分是处于

2017-12-14 22:34:07 184

原创 网络流(三) 最小割 平面图转对偶图

嗯,将两个放在一起的原因…只是因为单另分开篇幅不够罢。 绝对不是因为例题只有BZOJ1001什么的最小割最大流定理搜了一圈没有找到什么是最小割,然后懵逼了。 嗯…… 首先,什么是割?其实,割=割边=去掉以后使图不连通的边的集合 然后,容量和最少的割集称为最小割。 对于割,有这样一个重要定理: 最小割=最大流嗯,最小割就这么多东西。 为什么正确?这里给出一种直观的想法 (原PO:h

2017-12-10 13:39:09 2178

原创 网络流(二) 最大流算法的实现

嗯接着前篇…有了前面的原理铺垫,接下来的可能会简单一些…? FF看见烦,SAP不想学。 所以只剩下EK和Dinic了。 模板题:luogu3376Edmond-Karp算法基本上上把EK的queue改成stack就成了FF,所以这里不讨论FF的问题。 先贴代码,然后再说一说其含义。#include <bits/stdc++.h>using namespace std;#define MA

2017-12-10 00:00:25 3076 1

原创 网络流 (一) 最大流的原理图解

嗯…于是学一波网络流罢 之前学过一波,不过失败了orz 希望这次能学成功(x)建模想象一下,你在调度货车运输(不是最小生成树+LCA那道题放心吧),但是有些桥是有载重限制的。比如下图: 绿色的边表示桥,上面的数字表示载重。 老板打算从A到G。 显然,作为一个老板,超载是不合适的,姑且不论货物安全,还有可能受到法律惩罚!那么,最多能一次载多少货物呢?在解决这个问题之前,我们先为这一模型定

2017-12-09 15:09:52 19910 10

原创 空间向量的应用

其实这个是计算几何哒! 文化课真好.jpg 好吧其实是单纯的发现老师没讲点线距和线线距有些好奇而已定性分析线面平行在面上找两条不共线的向量,如果该线能用这两个向量线性表示,则线面平行。 a→∈α,b→∈α,a→≠kb→,l→=λa→+μb→⇒l→//α\overrightarrow a \in \alpha, \overrightarrow b \in \alpha, \overrightar

2017-12-02 15:09:30 2442

原创 codeforces893D Credit Card

对着AC代码苦思冥想两个小时终于顿悟…真是神奇的做法。 大概算奥妙重重的贪心? 我给它起名叫:区间贪心!(雾)惯例题意。一个人在银行里有一张信用卡。 晚上会有钱进来,不过: 1)如果送进来正数元,那就很棒。但是如果超过某个上限k,这个人就会被双规。 2)如果送进来0元,那就是在传递信号,第二天会有人查账户,要求账户不透支。 3)如果送进来负的,那就很惨。而且,信用卡是有可能透支的。 为

2017-11-25 17:37:06 889

原创 codeforces893A chess for three题解

第一次遇到A一点思路都没有……最后写了个栈还WA掉了,看到题解觉得很巧妙。惯例说说题意,三个人在做无聊的双人游戏,但是这样对第三个人很不友好。于是他们制定了一个规则:先第一个和第二个人玩,然后胜者和第三个人玩。就这样roll。 他们将胜利情况记录下来,但是又怀疑其正确性。 现在想要让你检验是否合法。 比如: 参加者 参加者 胜者 记录 1 2 1 1 1

2017-11-25 14:58:33 276

原创 codeforces891B Gluttony题解

玄学题..一开始以为是状压DP啥的想了半天发现一脸不可做 于是生无可恋的洗洗睡了 早晨看到题解和AC代码感觉只有一个:蛤?惯例说说题意。 一个由nn个元素构成的数列TT(满足互异性),假定T′T'为TT的一个排列。 如果满足∀M⊂S\forall M \subset S,其中SS表示1−n1-n构成的集合,有∑TMi≠∑T′Mi\sum T_{M_i} \neq \sum T'_{M_i}恒

2017-11-18 15:52:53 347

原创 cf891A Pride 题解

有史以来第一次rating为正..手速之力是无穷的!(雾) 这题还是蛮有趣..想到了区间DP但是发现转移不动,还是naive..来看看题意。一串数,每次只能将相邻两个元素中的一个变成1,问要求最少多少次GCD才能全为1。如果不能,就输出-1。 如: [2, 2, 3, 4, 6]变换: - [2, 1, 3, 4, 6] - [2, 1, 3, 1, 6] - [2, 1, 1, 1,

2017-11-18 12:00:37 950

原创 cf886E Maximum Elements 题解

DP神题。也是本蒟蒻做的第一道组合数学+DP题。先来看看题意。Petya嫌弃自己求区间最大值的做法太慢了,所以发明了这样一个函数:int fast_max(int n, int a[]) { int ans = 0; int offset = 0; for (int i = 0; i < n; ++i) if (ans < a[i]) {

2017-11-15 22:43:05 408

翻译 [翻译]扫描线算法(Line Sweep Algorithm)(2)

考试前来练一波英语阅读……(并不)长方形并集给出一个集合包含N个轴对称的矩形(矩形的边与x轴、y轴平行),找到所有的重叠的矩形。 一个矩形可以由两个点代表,一个是左下角的点,一个是右上角的点。这个问题的事件,是垂直的边。当我们遇到一条左边,我们进行一些操作;遇到一条右边,进行另一些操作。左边由左下角来代表,右边由右下角代表。 我们以对x坐标的排序来开始整个算法。当一个长方形左下角的

2017-11-13 17:34:12 10303

原创 NOIP专题复习(三) 状压DP学习笔记

其实并不是三,已经走了很多专题了。 之后慢慢填坑吧。我觉得学普通的DP已经救不了我了。 发觉似乎NOIP状压蛮裸的(flag立的飞起),于是学一波。其实在下作为一只蒟蒻,认为状压DP属于很好理解但不太好写的类型。 还是从经典例题互不侵犯开始。luogu1896 互不侵犯 在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案。国王能攻击到它上下左右,以及左上左下右上右下八个方向上

2017-11-05 22:30:54 881 1

原创 NOIP专题复习(二) 八皇后与各种优化

以八皇后为例来复习一下常见的几种搜索优化方法。 讲真,我觉得,位运算优化的八皇后就是一道状压DP… luoguP1219朴素算法八皇后的核心是c[n]数组,表示第n行在第c[n]个位置。 然后枚举一下1~n-1行即可。 另一大关键是如何判断对角线,也很简单,|c[n]-c[x]|=|n-x|#include <bits/stdc++.h>using namespace std;#defi

2017-10-24 23:42:17 1172

原创 NOIP专题复习(一) 基础的背包问题

之所以要走这么一个专题原因也很简单,在下的基础实在是太薄弱了… 所以接下来可能会变成非常基础的题、略有难度的题和模板题并存的东西.. 于是就是这样,就先从背包开始吧(dp[i][j]=max(dp[i-1][j],dp[i-1][j-w[i]]+v[i]) 滚动数组优化版:dp[i]=max(dp[i],dp[i-w[i]]+v[i])而对于完全背包,dp[i]=max(dp[i],dp[i-

2017-10-17 22:57:15 729

原创 cf870c Maximum splitting 题解

先来说说题意。将一个数剖成一些合数,问最多能剖成多少个。我们知道,最小的合数是4,所以贪心思路就是尽量多的get到4这个合数。 分析一下,显然,如果这个数是4的倍数,直接除4;如果除4余2,那么不妨来思考一下,除以4之后剩下一个2,刚好可以和4凑一个6。 而对于除4余1的情况,我们发现1+4+4=9是个合数,所以这里需要两个4才能凑出来,也就是a/4-1。对于除4余3的情况,3+4+4+4=15

2017-10-15 19:29:31 294

原创 刘书学习笔记(4)线性结构上的dp(上)

LISdp[i]=max{dp[j]}+1LCSA[i]=A[j] dp[i][j]=dp[i-1][j-1]+1 否则 dp[i][j]=max(dp[i-1][j],dp[i][j-1])9-6比较蛋疼的语文题…… 如果语文比较好几乎是裸LIS…虽说大概需要纠结一下常系数9-7dp[i]=min(dp[j]+1|s[j+1~i]为回文串) 并不太明显的LIS,不过不妨思考一下。 [LIS

2017-09-08 20:37:10 349

原创 刘书学习笔记(3)多阶段决策问题

多段图的最短路单向TSP问题状态:从[i][j]开始的最小开销 转移:dp[i][j]=min(dp[i+1][(j-1)%m],dp[i][j+1],dp[i+1][(j+1)%m] 现在的问题是,我们如何求出字典序最小? 有个规律请牢记: 正序前驱最小,逆序后继最小。 换句话说,逆推可以保证字典序最小。可能有些不太明白是什么意思,不过我们不妨设想一下,逆推就是从后往前,所以这样

2017-09-05 23:07:33 725

原创 刘书学习笔记(2)DAG上dp(下)

硬币模型有n种硬币,面值V1,V2,...,VnV_1,V_2,...,V_n且有无限多个。给定S,可以选出多少硬币,使得总额为S?求出该数量的最大值和最小值。硬币模型的区别在于,这里的起点和终点都是确定的。我们求的就是确定起点、终点的DAG最短路。 以最短路为例,转移方程:dp[i]=min{dp[i-V[j]]},这里的i表示从0出发到i的最短路径长度。 实现:#include <iostr

2017-09-04 22:13:59 367

原创 刘书dp学习笔记(1) 数字三角形与DAG上dp(上)

我之前没怎么看过刘书,然后前几天看了一下dp,感觉dp观被刷新了… 终于明白为什么说刘书是神书了! 用[]括住的是在下的一些浅见与笔记。 顺便一提,在下不保证代码是能过评测的,因为只试了其中几个数据。数字三角形数字三角形应该是最基础的dp题之一吧…转移方程 dp[i][j]=a[i][j]+max(dp[i+1][j],dp[i+1][j+1]) 其特点为全局最优解包含局部最优解。记忆化搜

2017-09-02 15:48:07 432

翻译 [翻译]扫描线算法(Line Sweep Algorithm)(1)

原地址:https://www.hackerearth.com/zh/practice/math/geometry/line-sweep-technique/tutorial/ 在cf评论区偶然看见的,顺便学习一下好了……然后发现是个大坑 我英语比较菜,如有谬误还请纠正……在这篇文章,我们将会学到一些基于计算几何的算法。 扫描线是一条想象中的向右扫过平面的竖直线。也因此,以此思想为基础的算法也

2017-08-23 21:49:07 14548

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除