07 2018 档案

摘要:只要知道套差分就没难度了。 因为你要区间添加一个等差数列,等差数列做差分的话,中间的值是一样的。 随便手膜几组数据,就会发现如何处理差分数组了: 对于点$l$:加上首项$k$。 对于区间$(l, r]$:加上公差$d$。 对于点$r + 1$:减掉等差数列的第$n$项。 只要减不要写成加就可以了。。 阅读全文
posted @ 2018-07-30 23:57 Garen-Wang 阅读(205) 评论(0) 推荐(0)
摘要:这道题和后面一道题是孪生兄弟。。。 给你两组单调递增的序列,可以拿里面的元素相互相加,要你求出第1至第$m$小的值。 同样是那样的思路,用堆。 设$y = a_i+b_i$,那么就同样有$n$个元素了。 这里固定b的下标先不定,向堆里面添加$a_i+b_1$。 然后执行$m$次出队,每次出队补充另一 阅读全文
posted @ 2018-07-30 23:52 Garen-Wang 阅读(154) 评论(0) 推荐(0)
摘要:这道题跟 "P1631 序列合并" 嘻嘻相关 题目给你$n$个二次函数,给你$a$,$b$,$c$。 不过仔细的话可以发现:这三个系数都是正整数! 所以意味着二次函数的对称轴在x轴负半轴,在我们考虑的$[1, +\infty]$中的整数区间都是单调递增的。 所以同一个函数中,$x=1$时的函数值是最 阅读全文
posted @ 2018-07-30 23:46 Garen-Wang 阅读(168) 评论(0) 推荐(0)
摘要:注意细节! 我一开始没有分清摄像头和区域,结果都视为一谈。结果只有10分。。。 松鼠敲摄像头的顺序就是拓扑序。 为了方便起见,把区域也视为结点,然后做toposort。 最后能删除多少个摄像头就有多少个摄像头被敲,拿总数$n$来减掉这个就是答案。 代码:(我打成嗲吗) cpp include inc 阅读全文
posted @ 2018-07-30 17:07 Garen-Wang 阅读(231) 评论(0) 推荐(0)
摘要:很气。。。 就是给你一个序列,让你支持四种操作: 1. 全体数字加一个数k。 2. 全体数字减一个数k。如果有元素的值小于minv则必须删去。 3. 添加一个元素。当且仅当元素值k小于minv时添加。 4. 查询全局第k大。是真的第k大。 ~~一开始就不会~~ 由于加减都是针对全局的,如果使用laz 阅读全文
posted @ 2018-07-30 00:46 Garen-Wang 阅读(143) 评论(0) 推荐(0)
摘要:这道题才是真正的模板题啊! 自信地把那个模板敲下来,只有60。 因为我又不知道如何判无解或者无穷解。 然后在漫长的查资料过程中,我改变了我的写法。 虽然原来那种解法理解起来也很容易,但是~~过不了~~,所以我决定抄另一种高斯消元模板。 代码从这里抄的:https://blog.csdn.net/ya 阅读全文
posted @ 2018-07-30 00:39 Garen-Wang 阅读(368) 评论(0) 推荐(0)
摘要:水古董题也不轻松。。。 题目都这么说了,就照它的意思去模拟吧。 但是注意:$0 \leq x \leq 100000$,不优化是会T的。但是优化也非常容易。 只需要记录下每一层楼有梯子的房间数cnt[i]即可。 然后多余的数就是在重复转圈,删除掉即可。 后来发现不能直接取模,在整除的时候加个特判就o 阅读全文
posted @ 2018-07-30 00:32 Garen-Wang 阅读(322) 评论(0) 推荐(0)
摘要:刷模板多好啊,不用动脑。。。 新学习了高斯消元。 其实高斯消元就是把我们小学就学过的解方程组用程序语言表达出来了而已。 小学学的东西有加减法,代入法。我们这里都会用到。 ~~但是也挺难记的~~ 给你三个形如ax+by+cz=d,怎么求出答案?n个呢? 所以还是老老实实地学习一下高斯消元。 首先,我们 阅读全文
posted @ 2018-07-29 17:53 Garen-Wang 阅读(188) 评论(0) 推荐(0)
摘要:简单的树链剖分,自己随便弄个样例就能过。 给你一个树,支持两个操作: 1. 从u点到v点的路径上的点的权值都添加上d。 2. 查询以u点为根的子树的权值和。 唯一可能错的就是1操作了。 u到v的路径,显然需要找出他们的lca。 那么就分为两部分:u到lca和lca到v。 但是发现:走这么一段路,df 阅读全文
posted @ 2018-07-27 18:08 Garen-Wang 阅读(168) 评论(0) 推荐(0)
摘要:至少我觉得比去年的D1T2简单。。。 题目已经叫你模拟这个cpu做事。 进程有优先级,显然就弄一个优先队列,重载小于号别弄错了。 这道题的重点我觉得是在“进程被优先级高的进程中断”最难。 后来发现可以记录一个lastnow变量,表示目前的上一个任务是在什么时候完成的。 发现没有进程中途加入最容易弄了 阅读全文
posted @ 2018-07-27 18:04 Garen-Wang 阅读(218) 评论(0) 推荐(0)
摘要:困扰了好久了这道题。 这道题我一开始就不懂。 距离为2?一个思路是必定有一个点可以中转! 还有,这道题是一棵树,讨论距离为2的点的可能性: 1. 互为爷孙关系。 2. 互为兄弟关系。 是的,就这两种。 爷孙关系的话,就直接拿它们的权值相乘。两个答案很容易维护。 重点在于兄弟关系。 对于最大值 显然, 阅读全文
posted @ 2018-07-27 00:24 Garen-Wang 阅读(185) 评论(0) 推荐(0)
摘要:语文神题。。。 翻题解才大概知道意思,题目就是不给你说清题意。 大意 现在给你$p$个点,其中与$s$个点相连无需费用。 然后要你连接起所有的点,求最优方案中需要的最大费用。 连接这$p$个点,当然是使用生成树$p 1$条边优。 更具体的是使用最小生成树,这样一定最优。 $s$个点相连无需费用,说白 阅读全文
posted @ 2018-07-27 00:05 Garen-Wang 阅读(222) 评论(0) 推荐(0)
摘要:MCMF的第一道非模板题,一脸懵逼。。。 其实这道题比较难用MCMF的思想想出,就算我做完也不怎么懂。 主要提示内容是主人公矛盾的心理,一个路程最短,一个周期最长。 况且题目所说的每一次周期,都相当于是一次从源点到汇点的增广。 其实每从源点到汇点走一遍,就是一个周期,这个题目其实没怎么细说。 那么用 阅读全文
posted @ 2018-07-25 23:50 Garen-Wang 阅读(156) 评论(0) 推荐(0)
摘要:第二个点想不出来。。。 题目给你一个有向图,然后问你两个问题: 1. 至少标记几个点,才能使所有点都被标记。 2. 还需要添加几条边,才能使整个图都连通。 其实像考tarjan的题目,大多都跟入度和出度相关联。就像那道“受崇拜的牛”。 直接用tarjan算法进行缩点,得到一个DAG。 有了一个DAG 阅读全文
posted @ 2018-07-25 23:32 Garen-Wang 阅读(144) 评论(0) 推荐(0)
摘要:拿分容易AC难。。。 ~~翻题解~~发现不用弄什么花里胡哨的dp,只要递推就可以了。 反正就只有一行,随便写写就能拿到90分。 但是题目有个没说的坑点,不过只坑了一个点,可以接受。 就是右边那一行,数字的取值范围从0到3。。。 我第一个数字没去判它是0的情况,结果就死了一个点。 实现过程只要首尾特判 阅读全文
posted @ 2018-07-25 15:38 Garen-Wang 阅读(142) 评论(0) 推荐(0)
摘要:真的不会dp。。 这道题就是求通过删除数字得到一个新序列,从而与(1, 2, 3, 4, ...)序列所能形成最多的匹配。 在题解翻到了两种做法: 1. 传统dp 设$dp[i][j]$为从原序列中的前$i$位取$j$个数所能形成的最多匹配。 注意:匹配的条件是$a[i]==j$,因为我们求的是新序 阅读全文
posted @ 2018-07-24 23:53 Garen-Wang 阅读(137) 评论(0) 推荐(0)
摘要:网络流快乐地跑。。。 这道题就是要求这个无向图的最小割。 根据最小割最大流定理,我们求个最大流就好了。 但是数据巨大。一百万个点,我们看上去就有2996001条边。 这个时候,如果按照网络流做法,建反向边的话,需要11984004条边,MLE。 其实我就没做过无向图的网络流。。。 结论:无向图网络流 阅读全文
posted @ 2018-07-24 21:47 Garen-Wang 阅读(180) 评论(0) 推荐(0)
摘要:这道水题水得有点吃力。。。 杨爷出的毒瘤数据。。。 首先是 非负权图 ,就用dijkstra。 边比较稀疏,用堆优化。 再打模板的时候发现问题: 在去出堆顶元素的时候,可能会出现重复节点。 重复节点使用一个done数组进行标记,如果不给的话会跑得很慢。 然后图又可能不连通。。。数据的锅。 不连通的d 阅读全文
posted @ 2018-07-24 21:04 Garen-Wang 阅读(268) 评论(0) 推荐(0)
摘要:学到了MCMF(min cost max flow),学到了EK算法。 我其实不会EK,只会死记dinic,事实证明EK算法非常的浅显易懂。 EK算法是怎么弄的? 说白了就是一个bfs找增广路径,只要有流量可以流,就去增广一波。 如果探到了t点的话,就可以进行一次成功的增广了。 如何实现? 我们需要 阅读全文
posted @ 2018-07-23 23:05 Garen-Wang 阅读(174) 评论(0) 推荐(0)
摘要:有点烧脑。。。 这道题是求二分图完美匹配。没看请题意还不知道是求完美匹配,结果爆零。 人一共分三种: 1. 在校学生 && 回家。这类人拥有一个床,但是不睡。 2. 在校学生 && 不回家。这类人拥有一个床,但也要睡一个床。有时不一定睡自己的。 3. 外来学生。这类人没床却想睡觉。 显然要用$2n$ 阅读全文
posted @ 2018-07-23 00:07 Garen-Wang 阅读(163) 评论(0) 推荐(0)
摘要:递推更新的就是坑。。。 设$dp[i][j]$为第$i$分钟,疲劳度为$j$的最大跑步距离。 发现了一种叫做“刷表法”的东西。我虽然不知道是什么东西,但是第一次写的时候就是用这种思想。 刷表法就是用已知的信息来更新后面的信息。而想记忆化搜索、普通递推的,叫做填表法。 下面是更新的方法: 你可以休息, 阅读全文
posted @ 2018-07-22 18:21 Garen-Wang 阅读(168) 评论(0) 推荐(0)
摘要:学了Cantor展开,顺便切掉八数码“难题”。。。 没什么好说的,我一遍过的。 为什么没有什么好说的呢?因为我做过。 曾经太菜不会Cantor,只会用map暴力存,结果用了8000+ms。 我觉得比魔板容易。 代码: 阅读全文
posted @ 2018-07-22 17:02 Garen-Wang 阅读(182) 评论(0) 推荐(0)
摘要:不看题解肯定不会系列。。。 这道题可以用Cantor展开解决。 Cantor展开可以求出一个数组是在全排列中的第几个。 具体怎么操作自己百度。 Cantor展开的公式是:$a[1] (n 1)! + a[2] (n 2)! + ... + a[n] 0!$ 这里注意一下:$0!=1$。 其中$a[i 阅读全文
posted @ 2018-07-22 16:32 Garen-Wang 阅读(127) 评论(0) 推荐(0)
摘要:厚颜无耻地自我介绍一波 本人蒟蒻,来自广东省潮州市,是来自弱省弱市的蒟蒻。 ~~看上面一句已经快哭出来了~~ 用了这个头像持续一年,可以yy出我大概长什么样。 本人是一个没事就喜欢弄电脑的人,即使一直弄电脑也没多厉害啊。。。 很喜欢折腾,比如我玩linux的时候:Ubuntu Archlinux D 阅读全文
posted @ 2018-07-22 00:17 Garen-Wang 阅读(317) 评论(1) 推荐(0)
摘要:第一次写炸了的话写第二次就好了。。。 这道题是luogu原创的啊,好题。。。~~因为我根本不会~~ 这道题就是告诉你一个实数序列,要你支持区间加,还要你求指定区间的平均数和方差。 我偷看了题解之后就写一波公式: 平均数这个不用说的。 $\frac{1}{n}[(a_1 \overline a)^2 阅读全文
posted @ 2018-07-21 23:43 Garen-Wang 阅读(173) 评论(0) 推荐(0)
摘要:这是我从luogu讲义弄下来的题目。 简化题意: 给你一棵树,每个结点有权值,父结点参加,子结点都不能参加。求最大权值和。 讲义告诉我们这道题用dp做。 本来我想的是用一维状态,结果发现错了。。。 加一维 也许加一维,问题就能更显然地解决,这道题数据范围不大,也说明要加一维了。。。 打出状态转移方程 阅读全文
posted @ 2018-07-20 15:12 Garen-Wang 阅读(95) 评论(0) 推荐(0)
摘要:时隔多日再次打网络流就错了。。。 跟那道“酒店之王”几乎一模一样,只不过数据大些,加当前弧照样过。 从luogu题解偷来一张图,有这张图就不用说话了。。。 代码: cpp include include include include const int maxn = 10005, maxm = 2 阅读全文
posted @ 2018-07-19 22:47 Garen-Wang 阅读(173) 评论(0) 推荐(0)
摘要:好吧,我又完全不会了。。。 这道题有两个限制条件: 1. 路径上的所有点的出边所指向的点 都 直接或间接与终点连通。 2. 在满足条件 1 的情况下使路径最短。 对于第一个条件,我们可以寻找与终点不连通的那些点。 如果有点的出边是不连通的点的话,那么这个点就一定不在路径上。 对于第二个条件,直接跑最 阅读全文
posted @ 2018-07-19 17:35 Garen-Wang 阅读(129) 评论(0) 推荐(0)
摘要:模板题,不讲太多。 同样是两个式子: $$a[r] a[l] \geq k$$ 和 $$0 \leq a[i] a[i 1] \leq 1$$ 建边之后,从0点为起点找最长路就对了。 差分约束差不多也就学到这里了。 代码: cpp include include include const int 阅读全文
posted @ 2018-07-19 17:22 Garen-Wang 阅读(180) 评论(0) 推荐(0)
摘要:我居然罕见地没看题解想出来了。。。 题目说了那么多,其实就是要你求出 所有人从1点出发再回来的最短路径 。 所有人的最短路径,可以由每个人的最短路径合成,结果一定最优。 从1点出发,容易,一个spfa就搞定。 但是回来呢? 我们发现,所有人回来的过程,是从所有点为起始,1点为终点的最短路。 试试看反 阅读全文
posted @ 2018-07-19 17:19 Garen-Wang 阅读(140) 评论(0) 推荐(0)
摘要:模板题了。。。 题意就是给你一个图,求最大的强联通分量和组成的这些点。 当然要用到tarjan算法啦,算法详情不讲。 求组成的点要注意:对一个时间状态的答案,要储存起来,才能判断字典序是否更小。 为了方便直接用 ,代码也很漂亮(自认为)。 只需要判断第一个元素即可,因为不可能一个点在多个强联通分量。 阅读全文
posted @ 2018-07-08 14:50 Garen-Wang 阅读(125) 评论(0) 推荐(0)
摘要:队列有毒。。。 当然是差分约束了! 两个条件:$a_r a_{l 1} \geq c$ 和 $0 \geq a_i a_{i 1} \leq 1$ 这里统一化为大于等于,成为最长路。 直接求出最长路即可。 PS:队列抽风了。。。有STL的队列才过了。我是不是得退役了。。。 代码: 阅读全文
posted @ 2018-07-08 14:10 Garen-Wang 阅读(107) 评论(0) 推荐(0)
摘要:第一道差分约束的题目,感觉有点懵。 差分约束有一点类似于拓扑排序建图的思想。 先给出解题套路: 形如$a \geq b + c$的满足一种最长路的性质,所以可以使用最长路解决,可以解决求最小的问题。 形如$a \leq b + c$的满足最短路的性质,使用最短路算法可以解决,可以解决求最大的问题。 阅读全文
posted @ 2018-07-08 00:31 Garen-Wang 阅读(170) 评论(0) 推荐(0)
摘要:做题像在抄题解一样。。。 这道题说实话我肯定想不到,况且想出状态转移方程之后也不一定会写。 先分析题意: 设$dp[i][j]$为第一个串前$i$位,第二个串前$j$位的最大匹配值。 对每一次匹配,有三个决策:(想不到) 1. 第一个串的第$i$位空着,第二个串不空着。 2. 第一个串不空着,第二个 阅读全文
posted @ 2018-07-07 16:30 Garen-Wang 阅读(133) 评论(0) 推荐(0)
摘要:好吧,承认不会。 这道题我拿到的时候就知道是一种最大匹配,要跑网络流的。 然后发现有两个事物要匹配。 我的第一感觉是:建两张图,一起跑,跑完取$min$就行了。 后来猛然发现:最大匹配可以有多种答案,而我们只能列出其中一种。 两个值取min是错误的,因为有可能改变匹配顺序能使答案更优。 所以我毫不犹 阅读全文
posted @ 2018-07-01 18:49 Garen-Wang 阅读(173) 评论(0) 推荐(0)