自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(78)
  • 问答 (1)
  • 收藏
  • 关注

原创 服务器安装colmap简要记录

在尝试执行项目https://github.com/ahojnnes/local-feature-evaluation/ 时,安装colmap的过程遇到的问题简要记录一下。主要是由于自己不熟悉linux和非root用户下配置和安装。解压Eigen3后,在 ceres-solver-1.14.0 的 FindEigen.cmake中添加Eigen3 的路径,否则会找不到Eigen3.在c...

2018-12-06 15:43:25 3755 2

原创 有上下界网络流建模方法

假设上界为 rrr, 下界为 lll无源汇可行流(循环流)法一:建立源点 sss 和汇点 ttt , 对于图中每条边 <u,v><u, v><u,v> ,拆成如下三条:$<s,v> $ ,容量为 lll$<u,t> $ ,容量为 ll

2018-11-20 22:40:24 206

原创 ZOJ - 2314 Reactor Cooling(有上下界网络流)

题目:给n个点和m个边,每条边有流量上界和下界,问能否使这n个点形成一个流量循环,每个点流入等于流出,每条边都在界限之内。分析:典型的有上下界无源汇网络流。法一:建立源点 sss 和汇点 ttt , 对于图中每条边 <u,v><u, v><u,v> ,拆成如下三条:<s,v>&l...

2018-11-15 20:36:27 240

原创 2018-2019 ICPC, NEERC, CodeForces 1070C Cloud Computing(权值线段树)

题目:有n天,每天需要k个cpu。现在有m个供应商,第i个供应商可在[li,ri]天之间,每天提供ci个cpu,每个cpu价格为pi。如果某一天的cpu无论如何也凑不够,那就把仅有的全用上。问n天的最小花费。分析:最开始的想法是,把供应商按价格排序,然后依次取供应商去提供一个时间段的cpu。在线段树上想办法把这个时间段做一个区间减法。但发现其实在线段树上很难操作,很难知道供应商提供的区间哪...

2018-11-14 22:03:17 234

原创 2018-2019 ICPC, NEERC (CodeForces 1070A)Find a Number

题意:给两个整数d和s,求出最小的整数n满足n%d==0且n的每一位数字和是s。分析:令状态{i, j}表示对d取模为i,数字位数和为j时的最小数,因为是从小到大枚举,所以可以保证第一次到达{i0,js}的状态的数字就是最小值。代码:#include <bits/stdc++.h>using namespace std;#define ms(a,b) memset(a,b...

2018-11-13 19:27:00 200

原创 2018-2019 ICPC, NEERC(CF 1071I) Privatization of Roads in Berland

题目:n个点m条边,无穷多个公司,给每个公司最多分配两条边,每条边都要被分配出去,且每个点相连的所有的边所属的公司数不超过k。输出一种边分配方案。分析:记录每个点的度数,如果一个点的度数d[i] <= k,那么这个点相连的边无需合并,可直接给每个边分配一个公司(因为公司有无穷多个)如果一个点的度数d[i] > k,那么这个点的边至少要合并 2*(d[i]-k)条,而每条边只能被...

2018-11-13 17:52:12 293

原创 2017acm香港区域赛 Black and White

题目:有一个初始颜色全为白色的n*n的棋盘,每次选一个长方形区域反转颜色,问最后会有几个黑色格子。n,k<=10000分析:和扫描线求面积并一样。记录每条横边,向x轴投影。只不过不区分上边和下边。按高度排序后,对于每条边,向x轴投影,将投影的区间进行一次 xor 1 的操作。所以线段树维护区间异或操作,然后每次询问区间和。代码:#include<bits/stdc++.h&g...

2018-11-05 21:56:56 316

原创 hdu1828 Picture (线段树+扫描线)

题目:给n个矩形求周长并。分析:唯一需要注意的地方就是,对线段排序的时候不能单纯只考虑高度,还要考虑是上边还是下边。如果有一个上边和一个下边高度一样,那么应该让上边在前下边在后。代码:#include <bits/stdc++.h>using namespace std;#define ms(a,b) memset(a,b,sizeof(a))#define lson ...

2018-11-05 11:33:01 122

原创 hdu1542 Atlantis (线段树+扫描线)

题目:给n个矩形,求矩形的面积并。n <= 100分析:扫描线求面积并模板题。需要注意的是,线段树记录的不是点,而是边。数轴上若有 1-n 共 n 个点,则会切出 n - 1 条不能再切分的小线段,将这些线段从左至右依次标号为 1 - (n-1)。线段树的每个叶子节点就表示一条小线段。线段树避免同一段重复加的方法是:对于某一段,如果tag[rt] > 0,则不通过子树来更新值...

2018-11-05 00:31:30 100

原创 NWERC 2017 :Installing Apps(背包+贪心)

题目:有一个手机,容量为CCC,网上有NNN个app,每个app有个安装包大小did_idi​,有个安装后的占用空间大小sis_isi​,安装app是瞬间完成的,即app的占用空间可以瞬间由did_idi​变成sis_isi​,而不需要其他多余的空间。问这个手机最多可以安装多少个app,输出最多可以安装的app数量和安装顺序。分析:若 d < s,则 d 没有作用,只考虑 s 就可以...

2018-11-03 20:42:54 479 2

原创 背包路径记录方法总结

0-1背包记录路径:不要求字典序:法一:逆推状态,看这个状态是由哪个状态推过来的,从而找到上一个状态即可。可用额外的标记数组,也可不标记直接用f[][]数组求解。此时如果f数组被滚动优化成了一维,就无法倒推了。for(int i=1;i<=n;i++){ for(int j=V;j>=0;j--){ f[i][j] = f[i-1][j]; if(j < c[...

2018-11-01 17:14:54 1043 2

原创 2017acm香港区域赛 Optimal Coin Change(完全背包+记录路径)

题目:用几种面额的钱凑一个面额,问最少需要多少枚硬币。数量相同时尽量使用小面额,输出每个硬币用多少枚。输入的硬币已经按面额小到大排好序。分析:完全背包+路径输出。因为要尽可能使用小面额的硬币,所以在转移的时候:如果 f[j-a[i]] + 1 < f[j],肯定是要转移,记录状态j用的i硬币转移来的。如果 f[j-a[i]] + 1 = f[j],也要转移,因为f[j]不变的情...

2018-10-31 19:55:45 305

原创 hdu3032 Nim or not Nim? (sg打表找规律)

题目:标准Nim游戏的基础上,增加了一个操作:可以将某堆石子分成两堆。分析:将石子分为两堆的操作可视为两个子游戏,那么此时的sg值就是两个子游戏sg异或值。然后打表找规律即可。代码:打表代码:#include <bits/stdc++.h>using namespace std;#define ms(a,b) memset(a,b,sizeof(a))#define ...

2018-10-29 13:07:53 116

原创 【网络流24题】太空飞行计划(最大权闭合图)

题目:W 教授正在为国家航天中心计划一系列的太空飞行。每次太空飞行可进行一系列商业性实验而获取利润。现已确定了一个可供选择的实验集合E={E1,E2,…,Em},和进行这些实验需要使用的全部仪器的集合I={I1,I2,…In}。实验Ej需要用到的仪器是I的子集RjÍI。配置仪器Ik的费用为ck美元。实验Ej的赞助商已同意为该实验结果支付pj美元。W教授的任务是找出一个有效算法,确定在一次太空飞行...

2018-10-17 22:42:56 112

原创 【网络流24题】圆桌问题

题目:假设有来自m 个不同单位的代表参加一次国际会议。每个单位的代表数分别为ri (i =1,2,……,m)。会议餐厅共有n 张餐桌,每张餐桌可容纳ci (i =1,2,……,n)个代表就餐。为了使代表们充分交流,希望从同一个单位来的代表不在同一个餐桌就餐。试设计一个算法,给出满足要求的代表就餐方案。对于给定的代表数和餐桌数以及餐桌容量,编程计算满足要求的代表就餐方案。分析:源点S向每...

2018-10-16 19:50:25 250

原创 【网络流24题】魔术球问题

题目:假设有n根柱子,现要按下述规则在这n根柱子中依次放入编号为1,2,3,…的球。(1)每次只能在某根柱子的最上面放球。(2)在同一根柱子中,任何2个相邻球的编号之和为完全平方数。试设计一个算法,计算出在n根柱子上最多能放多少个球。例如,在4 根柱子上最多可放11 个球。分析:枚举球数x,在图中建立节点1…x。如果 i < j,且 i+j是完全平方数,那么就建立一条 i 向 j...

2018-10-16 12:20:16 140

原创 【网络流24题】最小路径覆盖问题

题目:给定有向图G=(V,E)。设P 是G 的一个简单路(顶点不相交)的集合。如果V 中每个顶点恰好在P 的一条路上,则称P是G 的一个路径覆盖。P 中路径可以从V 的任何一个顶点开始,长度也是任意的,特别地,可以为0。G 的最小路径覆盖是G 的所含路径条数最少的路径覆盖。设计一个有效算法求一个有向无环图G 的最小路径覆盖。分析:将每个点拆成两个点,比如将x拆成x1,x2,将y拆成y1,y2...

2018-10-16 11:58:07 138

原创 Codeforces 1065D Three Pieces

题意:有一个n * n 的矩阵,不重不漏地随机放着 1到 n*n 的每个数。现在你站在数字1的位置,每次可以有三种走法:走直线,四个方向。一次可以走多个单位,不仅只能走到相邻的位置,就像中国象棋里的车。走斜线,四个方向。一次可以走多个单位,像国际象棋里的象。走日字,八个方向,一次只能走一个单位。就像中国象棋里的马。每走一次,需要花费一个精力值。如果切换了一次走法,需要额外花费一个精力值...

2018-10-12 15:02:51 459

原创 bzoj入门4839 蒲公英

题目:n个数m个询问,每个询问是一个[l,r],输出[l,r]之前的众数。有相同的输出小的。n <=40000,m<=50000,ai<=1e9分析:分块。预处理出f[i][j]表示第i个块到第j个块的众数。对于一个询问[l,r],中间整块的部分可以直接得到答案ans,然后对于两边的2*sqrt(n)个元素,查询出每个元素的出现次数,看是否能更新ans。至于,查找一个[l...

2018-10-09 21:00:00 268

转载 bzoj入门4839 作诗

题目:神犇SJY虐完HEOI之后给傻×LYD出了一题:SHY是T国的公主,平时的一大爱好是作诗。由于时间紧迫,SHY作完诗之后还要虐OI,于是SHY找来一篇长度为N的文章,阅读M次,每次只阅读其中连续的一段[l,r],从这一段中选出一些汉字构成诗。因为SHY喜欢对偶,所以SHY规定最后选出的每个汉字都必须在[l,r]里出现了正偶数次。而且SHY认为选出的汉字的种类数(两个一样的汉字称为同一种)越...

2018-10-09 18:58:21 153

原创 zoj4048 Red Black Tree(二分+LCA)

题意:一棵n个结点的树上有若干个点是红色。有q个询问,每个询问给出k个点,可以将树上一个非红色点染成红色,使得k个点中与红色点的最大距离最小,输出最小值。根节点是红色。2 <= n,m <= 1e5, 1 <= q <= 2e5分析:搜索的过程中将每个点距离最近红色点的距离和根节点的距离记录下来。二分答案,然后将k个点中距离红色大于答案的拿出来,求这些点的LCA,...

2018-09-18 20:57:29 293

原创 hdu5692 Snacks (dfs序+线段树)

题意:百度科技园内有n个零食机,零食机之间通过n−1条路相互连通。每个零食机都有一个值v,表示为小度熊提供零食的价值。由于零食被频繁的消耗和补充,零食机的价值v会时常发生变化。小度熊只能从编号为0的零食机出发,并且每个零食机至多经过一次。另外,小度熊会对某个零食机的零食有所偏爱,要求路线上必须有那个零食机。为小度熊规划一个路线,使得路线上的价值总和最大。 输入数据第一行是一个整数T(...

2018-09-15 21:05:12 210

原创 bzoj2342 [Shoi2011]双倍回文 (回文树)

题意:在字符串s中寻找一个最长字串,这个子串必须是回文串并且这个字串的前半部分也是回文串。这个最长字串长度是4的倍数。分析:对于结点u,它的fail结点就是一个最长回文后缀,再fail一下,就又是一个短了一些的回文后缀,以此类推。对于u,我们只需要一直往上fail,看有没有一个fail结点长度是u的一半,有的话就找到了一个。将这个过程反向过来,建立一个fail的树,从根节点dfs一...

2018-09-10 17:07:17 173

原创 hdu5785 Interesting (回文树)

题意:找出字符串中所有三元组(i,j,k)使得s[i,j]和s[j+1,k]均为回文串。问所有三元组的i*k的和是多少。分析:令中间的j固定,然后计算两边所有的i和k。可以计算出∑i∑i\sum i,∑k∑k\sum k,然后这两个和相乘,就是j固定时所有的i*k的和。对于第j个字符,可以在回文树上计算出,所有以字符j结尾的回文串个数num[j]和这些回文串的长度总和sum[j],...

2018-09-07 16:05:22 205

原创 bzoj2565 最长双回文串(回文树)

题目:顺序和逆序读起来完全一样的串叫做回文串。比如acbca是回文串,而abc不是(abc的顺序为“abc”,逆序为“cba”,不相同)。 输入长度为n的串S,求S的最长双回文子串T,即可将T分为两部分X,Y,(|X|,|Y|≥1)且X和Y都是回文串。分析:正反建立两棵回文树分别求前缀和后缀即可。代码:#include <bits/stdc++.h>usin...

2018-09-06 20:06:45 175

原创 bzoj3676 [Apio2014]回文串 (回文树)

题目:考虑一个只包含小写拉丁字母的字符串s。我们定义s的一个子串t的“出现值”为t在s中的出现次数乘以t的长度。请你求出s的所有回文子串中的最大出现值。分析:回文树裸体。借此学习回文树,记录模板。两个基本原理对于任何一个串S,它的本质不同的回文串的个数不会超过|S|个如果在串S后面加入一个字符,新增的本质不同的回文串的个数不会超过1个。证明 利用数学归纳法来证明...

2018-09-06 17:37:36 176

原创 hdu6477 YJJ's Salesman (线段树+dp)

题目:一个人从(0,0)走到(10^9,10^9),每次只能往右、上、右上走一个单位。 在地图上,有n个村庄,每个村庄有一个收获值,只有当从左下方走到某个点的时候,这个点的收获值才能被获取。给出n个村庄的坐标和每个村庄的收获值,问最大的收获值和是多少。 (1≤N≤105)分析:用线段树根据y轴维护收获值和。 对y离散化,然后对所有村庄按照x从小到大,y从大到小的顺序排序。对于第i...

2018-08-26 00:48:08 402

原创 hdu1087 Super Jumping! Jumping! Jumping!(线段树+DP)

题目:求一个数列的最长上升子序列和。(1≤n≤105,ai是32位整数)(1≤n≤105,ai是32位整数)(1 \leq n \leq 10^5, a_i是32位整数)分析:其实这个题的数据没有那么大,n^2的算法也可以过,在此提供一种O(nlogn)的做法。转移方程是dp[i] = max(dp[j]) + a[i], (1<= j < i, a[j] < ...

2018-08-26 00:23:28 117

原创 线性代数的本质 - 11 - 抽象线性空间

抽象向量空间思考一个问题,什么是向量?你可能会说:一组数字,一个有向箭头,空间中一个点等等。为了打破这种思维定势,更加全面客观地认识向量,我们考虑这样一种特殊的向量,它既不是一组数字也不是一个有向箭头,但同样具有向量特性,它就是函数。假设有函数 f(x)f(x)f(x) 和 g(x)g(x)g(x) ,(f+g)(x)(f+g)(x)(f+g)(x) 自然就等于 f(x)+g(x...

2018-06-11 01:15:33 1109

原创 线性代数的本质 - 10 - 特征向量与特征值

特征值和特征向量 AAA 是 nnn 阶矩阵,如果数 λλ\lambda 和 nnn 维非零列向量 x⃗ x→\vec x 使关系式Ax⃗ =λx⃗ Ax→=λx→A\vec x = \lambda \vec x成立,那么,这样的数 λλ\lambda 称为矩阵 AAA 的特征值,非零向量 x⃗ x→\vec x 称为 AAA 的对应于特征值 λλ\...

2018-06-10 17:48:07 1193

原创 线性代数的本质 - 09 - 基变换

基变换同一个向量,同不同的基表示,会得到不同的结果。假如现在有一组新的基底 b1=[21]b1=[21]b_1 = \left[ \begin{matrix} 2 \\ 1 \end{matrix}\right] 和 b2=[−11]b2=[−11]b_2 = \left[ \begin{matrix} -1 \\ 1 \end{matrix}\right] ,令 A=[b1b2]...

2018-06-10 00:52:41 1113

原创 线性代数的本质 - 08 - 以线性变换的眼光看叉积

线性变换的眼光看叉积我们在计算向量v⃗ ,w⃗ v→,w→\vec v,\vec w的叉积p⃗ p→\vec p时,通常如此: 并且被告知p⃗ p→\vec p具有如下三个几何性质:长度等于v⃗ ,w⃗ v→,w→\vec v,\vec w张成的平行四边形的面积方向与v⃗ ,w⃗ v→,w→\vec ...

2018-06-05 15:26:45 2472 2

原创 线性代数的本质 - 07 - 点积与对偶性

二维到一维线性变换两个向量,v⃗ ,w⃗ ,v→,w→,\vec v, \vec w的点积的值等于v⃗ v→\vec v在 w⃗ w→\vec w上的投影长度 ××\times w⃗ w→\vec w自己的长度 。方向相同时是正数,相反时是负数。至于谁投影到谁之所以无区别,因为可用对称性和倍增解决。为什么点积和投影有关系?讨论这个...

2018-06-04 14:36:31 2401

原创 线性代数的本质 - 06 - 逆矩阵、列空间与零空间

线性方程组、逆矩阵矩阵是解线性方程组很好的工具。线性方程组长这个样子: 未知量放在左边常数项放右边未知量竖直对齐必要时补0我们就可以将一个线性方程组写成这样 同样,我们可以从几何的角度解释这个方程,Ax⃗ =v⃗ Ax→=v→A\vec x = \vec v意味着寻找一个向量x⃗ x→\vec x使得x⃗ x→\vec x在经...

2018-05-31 00:52:17 1126

原创 线性代数的本质 - 05 - 行列式

行列式行列式的值就是按照这个矩阵变换后的 i-hat 和 j-hat 组成的区域的面积的缩放倍数。因为变换时保持“所有线平行且原点不变”的,所以这个倍数是任何区域面积变化的倍数。行列式被用来描述一个变换对空间的缩放程度。 一个二维线性变化的行列式值为0,表示它将空间压缩到了一条直线或一个点上。所以,用行列式就可以知道变换是否给空间降了维。其实行列式是允许负值的,负值与空间的方...

2018-05-30 16:24:05 728 3

原创 线性代数的本质 - 04 - 矩阵乘法与线性变换复合

线性变换的组合比如先旋转再剪切,从头到尾的总体作用是另一个线性变换,这个新的变换通常被称为前两个独立变换的“复合变换”。我们可以通过得到变换后的 i-hat 和 j-hat来得到这个复合变换。但这没有体现出两个变换复合的动态变化,只体现了最后的结果,如何通过两个变换得到这个新变换呢?有一种方法是这样的: 从数值上看,这是对一个向量先旋转后剪切,无论所选的向量是什么,结果都...

2018-05-30 14:45:59 1626 1

原创 线性代数的本质 - 03 - 矩阵与线性变换

何为线性变换?“变换”本质上是“函数”的一种花哨的说法,它接收输入内容,并输出对应结果。只不过在线性代数下,我们考虑的是接收一个向量并且输出一个向量的变换。 既然如此,为何还用多余的属数术语“变换”,而不用“函数”呢?使用“变换”是在暗示以特定方式来可视化这一输入-输出关系。一种理解“向量的函数”的方式是使用运动,即将输入向量移动到输出向量的位置上。整个平面内所有的向量都按照规则变换,也就完成了整

2018-05-03 00:52:25 356

原创 线性代数的本质 - 02 - 线性组合、张成的空间与基

一种有趣的方式看待坐标当看到一对描述向量的数时,如 (3,−2)(3,−2)(3,-2)。把它的每个坐标看作是一个标量,也就是说它们如何压缩或拉伸一个向量。在xy坐标系中有两个特殊向量,i-hat 和 j-hat, 也就是xy两个方向的单位向量。从这一角度看,(3,−2)(3,−2)(3,-2) 就是两个经过缩放的向量的和。i-hat和j-hat在坐标系中异常重要,被称为坐标系的“基向...

2018-05-02 15:24:05 1387

原创 2018计蒜客蓝桥杯A组模拟(三) 蒜头君的数字

题目:有n个数,每次从左边或右边取一个,直到取完。每取一个数会有一个分数,问总分最大是多少? 分数计算如下:第一次拿的分数是数字本身。随后每次得到的分数是这个数与之前已取数的极差的乘积。分析:动态规划问题,我们可以用dp[i][j]表示剩余序列为第 i 个数到第 j 个数时已经获得的最大分数,可以通过 dp[i−1][j] 和 dp[i][j+1] 转移过来,需要注意边界情况,同时我们需要维

2018-04-30 13:31:06 481

原创 计蒜客2018蓝桥A模拟赛(三)蒜头君的01串

题目:蒜头君想知道长度为50且连续的1和连续的0的个数都不超过10的01串有多少个。分析:用dp[i][j][k] 表示长度为i 最后一位为j 这一位已经出现了k次 的数有多少。 转移时,最后一位只出现1次的可由最后一位是另一个数的所有情况得到,而出现超过 k 次的可由之前结尾是一样的数且出现 k - 1次的转移得到。代码:#include <bits/stdc++.h>using name

2018-04-27 19:38:34 193

空空如也

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

TA关注的人

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