![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
又决定放弃
这个作者很懒,什么都没留下…
展开
-
leetcod 第五题 最长回文子串
核心是这个trick :不断地动态更新 当前最好的 “回文的中心点” 和 “回文半径”。原创 2022-12-07 15:03:47 · 90 阅读 · 0 评论 -
关于Colmap中BA的Ceres源码
关于Colmap中BA的Ceres源码如果遗忘了Ceres的用法,请查看这个博客,理解Ceres的用法https://blog.csdn.net/cqrtxwd/article/details/78956227Colmap源码中,关于BA的部分总体由如下部分执行: BundleAdjuster bundle_adjuster(ba_options, ba_config); bundle_adjuster.Solve(reconstruction_);看着是,先实例化一个对象,然.原创 2021-06-14 19:16:10 · 1054 阅读 · 1 评论 -
1分钟搞懂仿函数的定义和用法
仿函数的技巧,就是,在结构体内,对()进行重载。因为这样做了的话,该结构体的一个实例就能具有类似一个函数的性质,在代码编写过程中就能当做一个函数一样来使用。下面用例子来说明:比如Myclass类的一个实例Obj1,如果Myclass里对()进行了重载,那Obj1被创建之后,就可以将Obj1这个实例当做函数来用,比如Obj(x)、Obj(1) 、Obj(2) 这样,为了方便读者理解,下面随便编一段简单的示例代码,凑活看看吧。//仿函数的示例代码#include<iostream>usin原创 2021-06-14 14:36:38 · 401 阅读 · 0 评论 -
JAVA 最少拦截系统 HDU - 1257
题意就是;一个随机数列中,单调不上升子序列共有几个那么其实想说的只有这一句话:单调不上升子序列个数 等于 最大上升序列的长度那么问题转化为求随机序列的最大上升序列长度很直接的问题,代码如下:public class Main { static int[]a,dp; public static void main(String[] args) { Scanner sc=new Scanner(new BufferedInputStream(System.in)); int n=0;原创 2020-07-05 23:16:27 · 244 阅读 · 0 评论 -
拓展欧几里得模板-Java
我钦佩他们的勇气拓展欧几里得static long tgcd(long a,long b){ if(b==0){ x=1; y=0; return a; } long ans=tgcd(b,a%b); //x,y作为公共变量被改变,最终得出解 long temp=x; x=y; y=temp-a/b*y; return ans; //返回的是ab的最小公倍数}//...原创 2020-03-26 14:18:31 · 110 阅读 · 0 评论 -
大区间素数-LightOJ-1197-JAVA-区间筛
题意LOJ-1197题意很简单,求[a,b]之间的素数。但是题目要求 a,b取值范围是 1 - (2^31)并且 b-a保证 不大于 100000思路看到这么大的范围,知道直接筛肯定超时, 又看到人家给了左右区间差, 还是比较小的,因此就想到了区间筛。区间筛选,人话就是, 利用 1到根号b 之间的素数, 取倍数从而删除掉a和b之间的非素数。剩下的就是 a到b之间的素数了。如图详细证...原创 2020-03-25 10:34:23 · 249 阅读 · 0 评论 -
说拓扑排序
拓扑排序从入门角度来说,适用解决范围就是对于关系的排序问题。假如存在三个人,这三个人的关系可能是一个环形关系( 两人环 或者 三人环),或者一个链形关系,或者分散 开,没有什么关系。利用拓扑排序可以解决对于任何人关系的排序,理论思想如下:如果 入度为零的人>1, 必然判断不出关系。1.我们 将入度为零的人加入队列2. 弹出队列中的人,并且 判断它的射出节点,是不是仅有自己一个射...原创 2020-03-19 22:07:12 · 112 阅读 · 0 评论 -
最小花费最大流-保证理解-java模板
假如你已经知道了什么是最大流了。我们直到,从 源点 到 汇点 的 最大流,我们确信这个值是唯一的,一定有最大流的存在。那么最小花费最大流也就是:这个最大的值,可能有多个情况,从源点 经过了不同的路径到达的 汇点,纵使最后得到的最大流值相同。 仍然可能有 不同的路径,假如每个路径的代价还不同,这意味着,我们一边要找最大流,一边还要确保我们走的路径代价要尽可能低。这两个因素导致我们不确定该不该走...原创 2020-03-18 21:37:26 · 242 阅读 · 0 评论 -
二分类-hdu2444-匈牙利算法-Java
大意: 给一堆人的两两配对关系,让你把他们分两组(一个组中间不能有任何可以配对的),然后让两组之间可以配对的进行连线,问你最多有几个连线?先判断是不是二分图: 节点染色,并且只用知道, 不是二分图的条件是:某个点染为1,这个点下一个自然染 -1,可是却发现下个点的下一个点也被染成是-1 ,出现某根线段两端点同色了如果是二分图,直接套用匈牙利算法就行了。第一步的染色和第二步使用匈牙利算...原创 2020-03-16 00:04:38 · 121 阅读 · 0 评论 -
Network of Schools POJ - 1236 Java
先做一次裸tarjan,题目的思想主要是: 把一个SCC(强连通)看作一个点(缩点), 我们统计一下,每个SCC 的 入度和出度,因而再统计入度为零和出度为零的个数。 最后的两个答案, 是 入度为零的个数 和 max(入度为零,出度为零)。import java.io.BufferedInputStream;import java.util.Arrays;import java.util...原创 2020-03-13 08:49:50 · 101 阅读 · 0 评论 -
矩阵消元模板
https://vjudge.net/problem/SPOJ-DETER3纯矩阵消元, 取模注意import java.io.BufferedInputStream;import java.util.Scanner;public class sopjdeter3_矩阵消元 { static long[][] c,temp; static long n,m,k; sta...原创 2020-03-12 09:16:36 · 65 阅读 · 0 评论 -
次小生成树-JAVA-两个模板
次小生成树应用场景在于: 让你求除了最小生成树之外的那个 第二小的生成树。Prim算法,次小生成树:原理是: 首先看看 纯prim最小生成树的模板, 我们不用改太多,只用额外维护一个数组,这个数组是 Max[a][b] ,意思是 任意两个点a和b,树上从a到b的路径中的最大边。给人的感觉是挺难弄的,a到b路径的最大边,感觉是挺复杂的, 但是如果你熟悉 prim 的模板,请你看看下面的代码,...原创 2020-03-10 11:40:52 · 150 阅读 · 0 评论 -
Jury Compromis-Poj1015-Java版-思维dp
引用晶之王的文字描述:题意:从n个人中选出m个人,选法为控方满意度之和s1与辩方满意度之和s2的差的绝对值最小,若有多种方案,则选择控方满意度之和s1与辩方满意度之和s2的和最大的一组,先输出这是第几组数据,下一行分别输出选择出来的方案中的控方满意度之和s1与辩方满意度之和s2。最后一行输出选择的人的编号,按从小到大的顺序排列。思路:用一个二维dp[i][k],第一维i代表已经选择了的人数...原创 2020-03-08 11:55:56 · 123 阅读 · 0 评论 -
hdu1176_反向dp入门_Java
经典反向dp,多练练import java.io.BufferedInputStream;import java.util.Arrays;import java.util.Scanner;public class Main { static int[][] sta,dp; public static void main(String[] args) { Scanner sc ...原创 2020-03-07 10:35:49 · 143 阅读 · 0 评论 -
hdu1540-Java-包含某点的最长连续区间
这是个好题(因为自己水平太烂了), 同时在这里记录一下。。。题意给定 n 个村子,比如是5,这n个村子相邻连接。就例如 ,1-2-3-4-5。1.我们可以删除村子,比如 删除第二个村子, 整个就变成了 1- -3-4-52.我们可以询问某个村子周围相邻(包括自己)一共有几个村子,比如询问1,答案就是1,询问3,4,5答案就是3,询问2,当然就是03.我们可以修复村子,比如修复...原创 2020-03-04 13:06:22 · 250 阅读 · 0 评论 -
zoj1610-Java
这题有几个注意点,如果规避掉还是比较平凡的一题吧:1. 区间固定是 [1 ,8000], n是操作次数,不要搞混了2. 染色时候,注意左边是开区间,因此左边边界+1,再燃色3. 染色值可以有0,我一般让它加上1,最后再减去1就行了,当然对零处理也可以4. 注意题意,问你的是整个区间有几个颜色块( 不相邻的颜色块可以视为两个颜色块),而不是你可以看到几种颜色, 因此在query时候打个pr...原创 2020-03-03 15:27:44 · 180 阅读 · 0 评论 -
最小生成树备忘
最小生成树的题目,不知为何,几个题目算是做的比较顺畅,为防遗忘,再次做出总结基本上两个思考方式,先贴出自己的模板,再进行解释基本上两个套路,prim就拿这个题为例子,hdu1233package coding;import java.io.BufferedInputStream;import java.util.PriorityQueue;import java.util.Scan...原创 2020-02-29 17:35:49 · 89 阅读 · 0 评论 -
poj3026-Java-bfs生成路径+krus板
import java.io.BufferedInputStream;import java.util.Arrays;import java.util.LinkedList;import java.util.PriorityQueue;import java.util.Queue;import java.util.Scanner;public class Main{ stati...原创 2020-02-29 15:54:52 · 158 阅读 · 0 评论 -
poj1751-Java-Prim带打印路径
这个题走了点坑,我先用Prim写这个, 但是最后打印路径的时候,就没想到在贪心边的时候怎么找到这个边的起点,于是觉得无法打印出端点,就觉得应该上Kruskal, kruskal打印边多舒服啊。但是事实是, n=750的数据,加边的话是 n*n/2 的数据量,内存限制又是10000k ,所以果然MLE了。回头想想用prim的话,其实只用再维护一个from[]数组,在更新当前最短距离的时候顺便更新...原创 2020-02-28 14:52:03 · 360 阅读 · 0 评论 -
poj-1984;Java;二维并查集
poj1984有n个网格状的农田,每个农田之间有距离,会依次给出关系,在给出关系后询问两个农田之间的曼哈顿距离是多少?若无法判断则输出-1。Input对于每组案例:首先输入两个数字n和m,表示有n块农田,农田从1开始编号。接下来m行,每行给出a,b,l,d,a和b表示农田的编号,l表示之间的距离,d表示b在a的d侧(只有四种,北-N,南-S,西-W,东-E)。然后输入一个数字k,代表...原创 2020-02-25 15:42:03 · 171 阅读 · 0 评论 -
hdu4370-Java-spfa
这个题容易错,第一点是考虑两种情况,1-n的最短路 对比 1自环和n自环的和,较小的那个就是结果的值。第二点是,求自环的时候,一定要初始化dis[1]为inf,(之前改了很多没用的东西),第三点,java要使用读入挂, 否则tleimport java.io.BufferedInputStream;import java.io.BufferedReader;import java.io...原创 2020-02-23 16:46:39 · 89 阅读 · 0 评论 -
hdu3416--Java-网络流+djk最短路径
题目含义: 一个单向图中(可能有重边), 让你求起点到终点的最短路径有几条?规定每个边只能走一次。1.利用djk求最短路径2.根据最小路径dis[]的值,保留,仅在最短路径上的,所有边。得到新图3.求新图的起点到终点的网络流。 package coding; import java.io.BufferedInputStream; import java.util.Arrays; ...原创 2020-02-23 13:21:59 · 142 阅读 · 0 评论 -
Dijkstra+堆优化+Java模板
1.链式前向星+Dijkstra适用范围:链式前向星作为存储结构, 不用担心重边Dijkstra ,传统n次循环+ 循环找最小dis+更新无堆优化。import java.io.BufferedInputStream;import java.util.Arrays;import java.util.Scanner;public class 链星_dijkstra { st...原创 2020-02-19 13:31:09 · 705 阅读 · 1 评论 -
Floyd,求闭包,模板题poj3660
poj3660 ,大致就是, 已有一些奶牛顺序,再去把这个顺序拓展开。这里的闭包是,根据已有的奶牛顺序,确定出所有可以确定的奶牛顺序。比如 我们知道 :1<22<3我们通过闭包运算,经过处理得到三组不等式:1<22<31<3而算法角度,任意两点的大小关系,用floyd再好不过。根据已有的奶牛顺序,确定出所有可以确定的奶牛顺序,最后再判断,是否某个点...原创 2020-02-18 14:04:51 · 156 阅读 · 0 评论 -
poj3259-BellmanFord判断负环模板
判断负环,裸BellmanFord,没啥好说的import java.io.BufferedInputStream;import java.util.Scanner;//bellman判负环public class Main{ static int[] dis; static int n; static int m; static int w; static int con;...原创 2020-02-17 17:10:00 · 133 阅读 · 0 评论 -
弄懂为什么Bellman-Ford 需要n-1次循环
首先明确,不是这个算法规定了一定要n-1次循环而是这个算法最坏的情况下需要n-1次循环。为什么?一说就懂什么情况下最好?这是我们的图: 很简单的一个图,四个节点,三个边(长度分别是:3 7 12)1 --(3)---2--(7)---3--(12)--4让你求出,从1出发的最短路径1 .假如题目这样描述:1 2 32 3 73 4 12能理解吧? ...原创 2020-02-17 14:57:18 · 1695 阅读 · 6 评论 -
spfa随笔
本博客并无技术参考价值,若想学习SPFA算法,请找寻其他博客Dijkstra算法,较之spfa,对于我来说,是相对容易接受的,因为前者使用二维数组进行图的存储,但凡题目中给出边的信息也好,点的信息也好,都可以将图的信息保存在一个map数组中。 之后在进行 Djk算法实现的时候,基本流程也很简洁。1 .初始化dis 数组2. for n 次 ,每次找出 没处理过的那些点之中 最短的那个3. ...原创 2020-02-17 12:55:02 · 114 阅读 · 0 评论 -
hdu1043
康托展开 + 离线bfs(打表) ,菜的不说了,wa了一页( javaio真杀死我)package coding;import java.util.Arrays;import java.util.LinkedList;import java.util.Queue;import java.util.Scanner;public class hdu1043 { static i...原创 2020-02-14 15:40:25 · 271 阅读 · 0 评论 -
什么是逆序数,序列中两个数的对换必定改变逆序数奇偶又是什么?
逆序数在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序。一个排列中逆序的总数就称为这个排列的逆序数。如2 4 3 1中,2 1,4 3,4 1,3 1是逆序,逆序数是4。翻转规律将一个排列中某两个数的位置互换,而其余的数不动,得到一个新排列.这种变换称为一次对换.每一次对换都改变逆序数奇偶.例如,把2 4 3 1 变换一下:2...原创 2020-02-14 11:16:48 · 6826 阅读 · 0 评论 -
hdu2612
这个题目我只想说一点:我第一次傻乎乎的遍历每个@, 然后求Y和M到这个点的BFS 的和,再求出所有的和里面的最小值。这个想法很简单直接,但是会TLE,因为你想想如果 这个地图上的@很多很多的话,你是不是相当于,每个@都是两次bfs , 那么你的bfs次数就太多了!正确的想法是整个题,只用做两次bfs ,第一次 对Y来说, 生成一个Y到所有@的最短距离, 也就是 bfs判断条件种,走到...原创 2020-02-12 16:40:08 · 155 阅读 · 0 评论 -
poj3414
尽管我的代码写的如此冗长,难入法眼。我承认自己的弱。但至少此刻我很开心。import java.io.BufferedInputStream;import java.util.Collections;import java.util.LinkedList;import java.util.Queue;import java.util.Scanner;import java.util...原创 2020-02-09 19:31:18 · 158 阅读 · 0 评论 -
泰坦尼克-决策树实现
两个数据集, 你本地新建个 train.csv 和 test.csv, 下面的链接的内容粘贴进去就行了:train.csv:https://raw.githubusercontent.com/cystanford/Titanic_Data/master/train.csvtest.csv:https://raw.githubusercontent.com/cystanford/Titan...原创 2020-01-27 15:24:07 · 788 阅读 · 0 评论 -
KNN算法
邻近算法,或者说K最近邻(kNN,k-NearestNeighbor)分类算法是数据挖掘分类技术中最简单的方法之一。所谓K最近邻,就是k个最近的邻居的意思,说的是每个样本都可以用它最接近的k个邻居来代表.人话就是:KNN算法用来解决, 如何判定某个点,归属于哪个集合中的问题。解决办法是:这个点和谁近, 就属于谁。 所谓K,就是找最近的K个点,这K个里面,谁多就听谁的。例子如下图,绿色圆...原创 2020-01-27 12:15:07 · 161 阅读 · 0 评论 -
用KNN算法对鸢尾花数据进行分类(代码)
过程分为五步:1. 获取数据2. 划分数据集3. 特征工程:标准化4. KNN算法估计器5. 模型评估(对比真实值和估计值 ; 计算准确率)#coding=UTF-8from sklearn.datasets import load_irisfrom sklearn.model_selection import train_test_splitfrom sklear...原创 2020-01-26 22:01:05 · 2917 阅读 · 0 评论 -
3. 无重复字符的最长子串
跳转注意:第一: 没要求输出最长的,只让你找最长的长度第二: 逻辑较简单,但有细节class Solution {public: int lengthOfLongestSubstring(string s) { // abcbefg int res=0,left=0; int map[260]={0}; //模拟哈希 ...原创 2019-08-31 13:33:19 · 57 阅读 · 0 评论 -
2. 两数相加; 最基础但也最需要理解的链表相加
原题/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode*...原创 2019-08-30 18:12:31 · 92 阅读 · 0 评论 -
1. 两数之和;暴力和哈希两种解法
https://leetcode-cn.com/problems/two-sum/class Solution {public: vector<int> twoSum(vector<int>& nums, int target) { vector<int> res; for(int i=0;i<nums....原创 2019-08-30 14:31:13 · 180 阅读 · 0 评论