自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 收藏
  • 关注

原创 点分治(简要讲解 + 模板)

树上点分治思想两个点之间的距离无非就是两种关系:我们约定dis[i]dis[i]dis[i]表示这个点到当前根节点的距离dis[u]+dis[v]dis[u] + dis[v]dis[u]+dis[v],在同一个根节点的不同子树上。dis[u]+dis[v]dis[u] + dis[v]dis[u]+dis[v],在同一个根节点的同一个节点上。树上点分治的思想就是通过改变根节点从而转化任意两点的距离为在同一个根节点下的情况。举个例子当我们选定1号节点作为我们的根节点时,我们可以简单的得到

2020-05-30 22:04:37 723

原创 D. Multiset(树状数组 + 二分)

Multiset可能更好的阅读体验思路二分 + 树状数组做法我们发现每个数的范围是$ <= 1e6$的,所以可以直接在线操作,不用离散化离线操作。这个时候我们的treetreetree数组就相当与一个桶,每个桶里统计的是值为其下标的个数,通过树状数组的前缀和性质,我们可以通过二分轻松的锁定第kkk项的位置,然后进行删除操作,具体的操作细节看代码实现。权值线段树做法线段相较而言,常数大一些,维护的基本思路还是更树状数组是一样的。当我树状数组1122ms1122 ms1122ms过了之后,感

2020-05-28 16:35:04 489

原创 树的直径与重心

树的直径与重心或许更好的阅读体验树的直径求解方法一思路先选取一个点rt作为根节点,dfs去找到一个最长路径的点U,然后通过这个点去dfs,找到路径最长的点V,U->V就是这课树的直径。证明正确性:假如rt在直径上的话,最长路径的点U一定是直径的一个端点,这一点是显然的。假如rt不在直径上,那么从这个点出发也一定可以找到一条路到达直径上一点,接下来就如同上面一样了,无非就是在真正的dis上再加上一段固定的value,对我们最后的直径端点查找并无影响。代码#include <bit

2020-05-28 11:48:09 400

原创 D. The Best Vacation(贪心+前缀和+二分)

The Best Vacation思路前缀和加贪心贪心:我们的结尾点一定是在某一个月的最后一天。贪心部分证明:我们选定两组数A=an−2,an−1,an,b1,b2,b3……bn−2,bn−1A = a_{n - 2}, a_{n - 1}, a_{n}, b_{1}, b_{2}, b_{3}……b_{n - 2}, b_{n - 1}A=an−2​,an−1​,an​,b1​,b2​,b3​……bn−2​,bn−1​B=an−1,an,b1,b2,b3……bn−2,bn−1,bnB = a_

2020-05-27 15:17:56 2071 3

原创 梯度下降:求线性回归

梯度下降的直线拟合实现说明给定若干个x,yx, yx,y并且求得一个最佳的y=ax+by = ax + by=ax+b,也就是二元一次方程组的解。先放上给定的散点,以及求得的线性回归的直线的图片。我个人认为,这里的梯度优化,就是通过一个关键式子loss=∑(ax+b−y)2loss = \sum(ax + b - y) ^{2}loss=∑(ax+b−y)2,通过求解这个凹函数来得到他的最小值从而实现整个线性回归方程的最优解,具体的实现就如下分析。∂loss∂a=2x(ax+b−y)\frac{

2020-05-26 12:25:19 709 1

原创 Codeforces Round #643 (Div. 2)(A, B, C, D, E)

Codeforces Round #643 (Div. 2)Sequence with Digits思路一道暴力题,猜想在某一步一定会出现0,于是怀着忐忑提交了代码,结果还真的是这样。代码#include <bits/stdc++.h>using namespace std;typedef long long ll;ll judge(ll x) { int minn = x % 10, maxn = x % 10; ll temp = x; temp

2020-05-24 11:44:52 440

原创 最大流,最小费用最大流:解析 + 各种板子

网络流初步 + Edmond-Karp算法网络流的基本概念源点,这个点只有流量的流出,没有流入。汇点,这个点只有流量的流入,没有流出。容量,每条有向边的最大可承受的流的理论大小。流量,每条有向边的最大可承受的流的实际大小。最大流,从源点可流入汇点的最大流量。Edmond-Karp算法1、如果可以找到增广的路径,取这条路径上的最小的容量作为当前的可增广的流量。2、在这条增广的路径中的每一个有向边减去当前可增广的流量,同时在其反向边加上当前可增广的流量。3、重复1的操作,如果不能找到可增

2020-05-24 11:41:40 1916

原创 线段树优化的Dijkstra

板子我测得的是这个东西在不开O2O2O2的情况下比pair+priorityqueuepair + priority_queuepair+priorityq​ueue快了将近1/31/31/3#include<bits/stdc++.h>#define mid (l + r >> 1)#define lson rt << 1, l, mid#define rson rt << 1 | 1, mid + 1, rusing namespace s

2020-05-24 11:39:27 694

原创 简单dfs序 + 树链剖分

树链剖分DFS序先来讲一讲DFS序是什么东西,直接上图,方便理解。估计巨巨们应该知道了DFS序的两个重要的东西,in,outin,outin,out数组。ininin数组就是这个点进入DFS的时间。outoutout数组就是这个点退出DFS递归栈的时间。这个时间要注意,当有点进入的时候才加,没有点进入的时候不加也不减。所以我们发现一个节点的子树的遍历是将,刚好是区间[in,out][in, out][in,out],所以这里我们就可以通过线段树或者树状数组来维护其子树的节点权值以及节点权

2020-05-24 11:37:29 510

空空如也

空空如也

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

TA关注的人

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