算法
文章平均质量分 63
武倔
科技就是力量
展开
-
RetinaNet详细解读
网络名称RetinaNet发表时间2018年1月作者Tsung-Yi Lin, Priya Goyal, Ross Girshick, Kaiming He, and Piotr Dollar机构Facebook AI Research (FAIR)领域目标检测(object detection)简介使用Focal Loss解决样本不均衡问题,让one-stage网络达到two-stage的精度。简介针对one stage网络中类别不均衡问题,本...原创 2021-02-27 13:36:40 · 1936 阅读 · 0 评论 -
算法题 快速幂(Python)
题目给定nn组ai,bi,pi对于每组数据,求出ai^bi modpi的值。输入格式第一行包含整数n接下来nn行,每行包含三个整数ai,bi,pi输出格式对于每组数据,输出一个结果,表示ai^bi modpi的值。每个结果占一行。数据范围1≤n≤1000001≤ai,bi,pi≤2∗10^9输入样例:23 2 54 3 9输出样例:41代码def qmi(a, b, p): base = a res = 1 ..原创 2020-12-17 12:30:31 · 322 阅读 · 0 评论 -
算法题 筛法求欧拉函数(Python)
题目给定一个正整数n,求1~n中每个数的欧拉函数之和。输入格式共一行,包含一个整数n。输出格式共一行,包含一个整数,表示1~n中每个数的欧拉函数之和。数据范围1≤n≤106输入样例:6输出样例:12代码n = int(input())primes = []values = [1]*(n+1)st = [True]*(n+1)def get_eulor(n): for i in range(2, n+1): if s原创 2020-12-16 13:37:20 · 805 阅读 · 0 评论 -
算法题 欧拉函数(Python)
题目:给定n个正整数aiai,请你求出每个数的欧拉函数。欧拉函数的定义1 ~ N 中与 N 互质的数的个数被称为欧拉函数,记为ϕ(N)ϕ(N)。若在算数基本定理中,N=pa11pa22…pammN=p1a1p2a2…pmam,则:ϕ(N)ϕ(N)=N∗p1−1p1∗p2−1p2∗…∗pm−1pmN∗p1−1p1∗p2−1p2∗…∗pm−1pm输入格式第一行包含整数n。接下来n行,每行包含一个正整数aiai。输出格式输出共n行,每行输出一个正整数aiai的欧拉函数。..原创 2020-12-11 17:25:30 · 2693 阅读 · 0 评论 -
算法题 最长上升子序列及相关例题(Python)
标准题给定一个长度为N的数列,求数值严格单调递增的子序列的长度最长是多少。输入格式第一行包含整数N。第二行包含N个整数,表示完整序列。输出格式输出一个整数,表示最大长度。数据范围1≤N≤1000−10^9≤数列中的数≤10^9输入样例:73 1 2 1 8 5 6输出样例:4代码n = int(input())line = input()nums = list(map(int, line.split()))dp = [1]*(n...原创 2020-12-11 16:45:53 · 1706 阅读 · 0 评论 -
算法题 欧几里得算法求最大公约数(Python)
题目给定n对正整数ai,biai,bi,请你求出每对数的最大公约数。输入格式第一行包含整数n。接下来n行,每行包含一个整数对ai,bi.输出格式输出共n行,每行输出一个整数对的最大公约数。数据范围1≤n≤10^51≤ai,bi≤2∗10^9输入样例:23 64 6输出样例:32代码def gcb(a, b): return gcb(b, a%b) if b else an = int(input())for _ in ra原创 2020-12-09 10:35:07 · 1120 阅读 · 0 评论 -
算法题 约数之和 (Python)
题目给定n个正整数aiai,请你输出这些数的乘积的约数之和,答案对109+7取模。输入格式第一行包含整数n。接下来n行,每行包含一个整数aiai。输出格式输出一个整数,表示所给正整数的乘积的约数之和,答案需对109+7取模。数据范围1≤n≤1001≤ai≤2∗10^9输入样例:3268输出样例:252代码约数之和:(p1^0+p1^1...)***(pn^0 + pn^1 +....)from collections import原创 2020-12-07 17:06:37 · 1874 阅读 · 2 评论 -
算法题 试除法求约数(Python)
题目:给定n个正整数aiai,对于每个整数aiai,请你按照从小到大的顺序输出它的所有约数。输入格式第一行包含整数n。接下来n行,每行包含一个整数aiai。输出格式输出共n行,其中第 i 行输出第 i 个整数aiai的所有约数。数据范围1≤n≤1002≤ai≤2∗10^9输入样例:268输出样例:1 2 3 6 1 2 4 8 代码:n = int(input())def divide(a): res = [] fo原创 2020-12-07 16:22:43 · 994 阅读 · 0 评论 -
算法题 约数个数 (Python)
题目:给定n个正整数aiai,请你输出这些数的乘积的约数个数,答案对109+7109+7取模。输入格式第一行包含整数n。接下来n行,每行包含一个整数aiai。输出格式输出一个整数,表示所给正整数的乘积的约数个数,答案需对109+7109+7取模。数据范围1≤n≤1001≤ai≤2∗10^9输入样例:3268输出样例:12代码:n = int(input())from collections import defaultdictdi.原创 2020-12-07 16:16:30 · 1723 阅读 · 2 评论 -
算法题 筛质数(Python)
题目:给定一个正整数n,请你求出1~n中质数的个数。输入格式共一行,包含整数n。输出格式共一行,包含一个整数,表示1~n中质数的个数。数据范围1≤n≤10^6输入样例:8输出样例:4代码:方法1:诶氏筛法 O(nloglogn)n = int(input())st = [True]*(n+1)cnt = 0primes = []for i in range(2, n+1): if st[i]: cnt += 1原创 2020-12-03 12:24:59 · 1773 阅读 · 0 评论 -
算法题 分解质因数(Python)
题目:给定n个正整数aiai,将每个数分解质因数,并按照质因数从小到大的顺序输出每个质因数的底数和指数。输入格式第一行包含整数n。接下来n行,每行包含一个正整数aiai。输出格式对于每个正整数aiai,按照从小到大的顺序输出其分解质因数后,每个质因数的底数和指数,每个底数和指数占一行。每个正整数的质因数全部输出完毕后,输出一个空行。数据范围1≤n≤1001≤ai≤2∗10^9输入样例:268输出样例:2 13 12 3代码:d原创 2020-12-03 11:19:48 · 1746 阅读 · 0 评论 -
算法题 试除法判断质数(Python)
判断质数:给定n个正整数aiai,判定每个数是否是质数。输入格式第一行包含整数n。接下来n行,每行包含一个正整数ai。代码:n = int(input())def is_prime(a): if a == 1: return False for i in range(2, int(a**0.5)+1): if a % i == 0: return False return True for _ in range(n):原创 2020-12-03 10:33:08 · 534 阅读 · 0 评论 -
算法题 匈牙利算法 求二分图最大匹配(Python)
题目:给定一个二分图,其中左半部包含n1n1个点(编号1~n1n1),右半部包含n2n2个点(编号1~n2n2),二分图共包含m条边。数据保证任意一条边的两个端点都不可能在同一部分中。请你求出二分图的最大匹配数。二分图的匹配:给定一个二分图G,在G的一个子图M中,M的边集{E}中的任意两条边都不依附于同一个顶点,则称M是一个匹配。二分图的最大匹配:所有匹配中包含边数最多的一组匹配被称为二分图的最大匹配,其边数即为最大匹配数。输入格式第一行包含三个整数n1n1、n2n2和...原创 2020-12-02 21:58:51 · 912 阅读 · 0 评论 -
算法题 Prim算法求最小生成树(Python)
题目:给定一个n个点m条边的无向图,图中可能存在重边和自环,边权可能为负数。求最小生成树的树边权重之和,如果最小生成树不存在则输出impossible。给定一张边带权的无向图G=(V, E),其中V表示图中点的集合,E表示图中边的集合,n=|V|,m=|E|。由V中的全部n个顶点和E中n-1条边构成的无向连通子图被称为G的一棵生成树,其中边的权值之和最小的生成树被称为无向图G的最小生成树。输入格式第一行包含两个整数n和m。接下来m行,每行包含三个整数u,v,w,表示点u和点v之间原创 2020-12-02 10:03:38 · 1384 阅读 · 0 评论 -
算法题 染色法判断二分图(Python)
题目:给定一个n个点m条边的无向图,图中可能存在重边和自环。请你判断这个图是否是二分图。输入格式第一行包含两个整数n和m。接下来m行,每行包含两个整数u和v,表示点u和点v之间存在一条边。输出格式如果给定图是二分图,则输出“Yes”,否则输出“No”。数据范围1≤n,m≤10^5输入样例:4 41 31 42 32 4输出样例:Yes代码:n, m = map(int, input().split())st = [0]*(n+1)原创 2020-12-01 18:07:35 · 760 阅读 · 0 评论 -
算法题 Kruskal算法求最小生成树(Python)
题目:给定一个n个点m条边的无向图,图中可能存在重边和自环,边权可能为负数。求最小生成树的树边权重之和,如果最小生成树不存在则输出impossible。给定一张边带权的无向图G=(V, E),其中V表示图中点的集合,E表示图中边的集合,n=|V|,m=|E|。由V中的全部n个顶点和E中n-1条边构成的无向连通子图被称为G的一棵生成树,其中边的权值之和最小的生成树被称为无向图G的最小生成树。输入格式第一行包含两个整数n和m。接下来m行,每行包含三个整数u,v,w,表示点u和点v之间原创 2020-12-01 17:24:05 · 1299 阅读 · 0 评论 -
算法题 Floyd多源最短路(Python)
题目:给定一个n个点m条边的有向图,图中可能存在重边和自环,边权可能为负数。再给定k个询问,每个询问包含两个整数x和y,表示查询从点x到点y的最短距离,如果路径不存在,则输出“impossible”。数据保证图中不存在负权回路。输入格式第一行包含三个整数n,m,k接下来m行,每行包含三个整数x,y,z,表示存在一条从点x到点y的有向边,边长为z。接下来k行,每行包含两个整数x,y,表示询问点x到点y的最短距离。输出格式共k行,每行输出一个整数,表示询问的结果,若询问两点间原创 2020-12-01 16:50:10 · 427 阅读 · 0 评论 -
算法题 spfa判断是否存在负权回路(Python)
题目:给定一个n个点m条边的有向图,图中可能存在重边和自环,边权可能为负数。请你判断图中是否存在负权回路。输入格式第一行包含整数n和m。接下来m行每行包含三个整数x,y,z,表示存在一条从点x到点y的有向边,边长为z。输出格式如果图中存在负权回路,则输出“Yes”,否则输出“No”。数据范围1≤n≤20001≤m≤10000图中涉及边长绝对值均不超过10000。输入样例:3 31 2 -12 3 43 1 -4输出样例:Yes代码:.原创 2020-12-01 12:16:45 · 231 阅读 · 0 评论 -
Leetcode 第 217 场周赛题解 (Python)
Leetcode 第 217 场周赛题解周赛日期:2020/11/29题目1:1672. 最富有客户的资产总量难度: 简单给你一个 m x n 的整数网格 accounts ,其中 accounts[i][j] 是第 i 位客户在第 j 家银行托管的资产数量。返回最富有客户所拥有的 资产总量 。客户的 资产总量 就是他们在各家银行托管的资产数量之和。最富有客户就是 资产总量 最大的客户。示例 1:输入:accounts = [[1,2,3],[3,2,1]]输...原创 2020-12-01 10:51:04 · 1331 阅读 · 0 评论 -
算法题 spfa算法求单源最短路(Python)
题目:给定一个n个点m条边的有向图,图中可能存在重边和自环,边权可能为负数。请你求出1号点到n号点的最短距离,如果无法从1号点走到n号点,则输出impossible。数据保证不存在负权回路。输入格式第一行包含整数n和m。接下来m行每行包含三个整数x,y,z,表示存在一条从点x到点y的有向边,边长为z。输出格式输出一个整数,表示1号点到n号点的最短距离。如果路径不存在,则输出”impossible”。数据范围1≤n,m≤10^5图中涉及边长绝对值均不超过1000.原创 2020-11-30 23:44:14 · 544 阅读 · 0 评论 -
算法题 Bellman-Ford算法(Python)
题目:有限边限制下的最短路给定一个n个点m条边的有向图,图中可能存在重边和自环,边权可能为负数。请你求出从1号点到n号点的最多经过k条边的最短距离,如果无法从1号点走到n号点,输出impossible。注意:图中可能存在负权回路。输入格式第一行包含三个整数n,m,k。接下来m行,每行包含三个整数x,y,z,表示存在一条从点x到点y的有向边,边长为z。输出格式输出一个整数,表示从1号点到n号点的最多经过k条边的最短距离。如果不存在满足条件的路径,则输出“impossi...原创 2020-11-28 21:37:55 · 740 阅读 · 0 评论 -
算法题 堆优化版本Dijkstra(Python)
题目:给定一个n个点m条边的有向图,图中可能存在重边和自环,所有边权均为非负值。请你求出1号点到n号点的最短距离,如果无法从1号点走到n号点,则输出-1。输入格式第一行包含整数n和m。接下来m行每行包含三个整数x,y,z,表示存在一条从点x到点y的有向边,边长为z。输出格式输出一个整数,表示1号点到n号点的最短距离。如果路径不存在,则输出-1。数据范围1≤n,m≤1.5×10^5图中涉及边长均不小于0,且不超过10000。输入样例:3 31 2 22原创 2020-11-28 21:08:27 · 719 阅读 · 3 评论 -
算法题 朴素版dijkstra算法求最短路(Python)
题目:给定一个n个点m条边的有向图,图中可能存在重边和自环,所有边权均为正值。请你求出1号点到n号点的最短距离,如果无法从1号点走到n号点,则输出-1。输入格式第一行包含整数n和m。接下来m行每行包含三个整数x,y,z,表示存在一条从点x到点y的有向边,边长为z。输出格式输出一个整数,表示1号点到n号点的最短距离。如果路径不存在,则输出-1。输入样例:3 31 2 22 3 11 3 4输出样例:3代码 :n, m = map(int,原创 2020-11-27 23:55:52 · 512 阅读 · 0 评论 -
算法题 有向图的拓扑排序(Python)
题目:给定一个n个点m条边的有向图,点的编号是1到n,图中可能存在重边和自环。请输出任意一个该有向图的拓扑序列,如果拓扑序列不存在,则输出-1。若一个由图中所有点构成的序列A满足:对于图中的每条边(x, y),x在A中都出现在y之前,则称A是该图的一个拓扑序列。输入格式第一行包含两个整数n和m接下来m行,每行包含两个整数x和y,表示存在一条从点x到点y的有向边(x, y)。输出格式共一行,如果存在拓扑序列,则输出任意一个合法的拓扑序列即可。否则输出-1。数据范围1原创 2020-11-27 15:34:34 · 1846 阅读 · 0 评论 -
算法题 图中点的层次(Python)
题目:给定一个n个点m条边的有向图,图中可能存在重边和自环。所有边的长度都是1,点的编号为1~n。请你求出1号点到n号点的最短距离,如果从1号点无法走到n号点,输出-1。输入格式第一行包含两个整数n和m。接下来m行,每行包含两个整数a和b,表示存在一条从a走到b的长度为1的边。输出格式输出一个整数,表示1号点到n号点的最短距离。数据范围1≤n,m≤10^5输入样例:4 51 22 33 41 31 4输出样例:1代码:n, m原创 2020-11-27 14:32:11 · 452 阅读 · 0 评论 -
算法题 树的重心(Python)
题目给定一颗树,树中包含n个结点(编号1~n)和n-1条无向边。请你找到树的重心,并输出将重心删除后,剩余各个连通块中点数的最大值。重心定义:重心是指树中的一个结点,如果将这个点删除后,剩余各个连通块中点数的最大值最小,那么这个节点被称为树的重心。输入格式第一行包含整数n,表示树的结点数。接下来n-1行,每行包含两个整数a和b,表示点a和点b之间存在一条边。输出格式输出一个整数m,表示将重心删除后,剩余各个连通块中点数的最大值。数据范围1≤n≤10^5输入样.原创 2020-11-27 11:39:12 · 593 阅读 · 0 评论 -
算法题 八数码 Python版
在一个3×3的网格中,1~8这8个数字和一个“x”恰好不重不漏地分布在这3×3的网格中。例如:1 2 3x 4 67 5 8在游戏过程中,可以把“x”与其上、下、左、右四个方向之一的数字交换(如果存在)。我们的目的是通过交换,使得网格变为如下排列(称为正确排列):1 2 34 5 67 8 x例如,示例中图形就可以通过让“x”先后与右、下、右三个方向的数字交换成功得到正确排列。交换过程如下:1 2 3 1 2 3 1 2 3 1 2 3x 4原创 2020-11-26 15:10:15 · 3785 阅读 · 0 评论 -
算法题 走迷宫 宽度优先遍历 Python版
题目:https://www.acwing.com/problem/content/846/实现:n, m = 5, 5lines = ['0 1 0 0 0','0 1 0 1 0','0 0 0 0 0','0 1 1 1 0','0 0 0 1 0']grids = []for i in range(n): grids.append(list(map(int, lines[i].split())))move = [(0, 1), (1, 0), (-1, 0),原创 2020-11-26 10:48:56 · 1461 阅读 · 0 评论 -
算法题 n-皇后 Python版
题目:https://www.acwing.com/problem/content/845/实现:n = int(input()) # 输入ncol = [True]*n # 列dg, udg = [True] * (2*n), [ True] * (2*n) # 正对角, 反对角res = [['.']*n for _ in range(n)]def dfs(row): global n if row == n: for i in range(n):原创 2020-11-26 09:53:22 · 423 阅读 · 0 评论 -
算法题 手写实现字符串哈希
题目来源:https://www.acwing.com/problem/content/843/C++#include <iostream>using namespace std;typedef unsigned long long ULL;const int N = 1e5+10, P = 131; # 根据经验得到,不容易冲突的质数int n, m;int h[N], p[N];char str[N];ULL get(int l, int r){ re原创 2020-11-25 21:49:02 · 189 阅读 · 0 评论 -
二分查找 (二分搜索) 最通俗易懂的图解与实现
二分查找场景二分搜索用于在一个单调或者局部单调有序数组中查找一个符合某些条件的值,时间复杂度为O(logN)二分查找原理图解拿升序数组为例子进行解释,假设我们需要再数组中找到目标值key的下标。1、首先可以将数组按key所在下标划分为三个部分,左边是小于key的部分,然后中间是key值,右边为大于key的部分。用left和right两个指针不断地缩小搜索区域。2、取mid为left和right的中间值,如果mid在key的下标的左边(即nums[mid] <..原创 2020-11-14 19:31:21 · 8788 阅读 · 0 评论 -
Python 归并排序 原理及实现
归并排序 python 实现原理参考:https://zhuanlan.zhihu.com/p/124356219代码实现:n = 5nums = [3, 1, 2, 4, 5]def mergesort(l, r): if l >= r: return # 长度小于等于1,无需排序,返回 mid = l + r >> 1 mergesort(l, mid) mergesort(mid+1, r) tmp = nums[l:r.原创 2020-11-11 11:18:21 · 6685 阅读 · 0 评论 -
算法题 第K个数
题目:(来自https://www.acwing.com/problem/content/788/)给定一个长度为n的整数数列,以及一个整数k,请用快速选择算法求出数列从小到大排序后的第k个数。输入格式第一行包含两个整数 n 和 k。第二行包含 n 个整数(所有整数均在1~109109范围内),表示整数数列。输出格式输出一个整数,表示数列的第k小数。数据范围1≤n≤1000001≤n≤100000,1≤k≤n1≤k≤n输入样例:5 32 4 1 5 3输出原创 2020-11-11 09:52:09 · 7442 阅读 · 0 评论 -
快速排序的两种常见写法-python
快速排序1、固定基准法,左固定和右固定nums = [5, 9, 8, 6, 7, 12, 6, 1]def quick_sort_right(l, r): if l >= r: return # 如果当前区间小于等1,无需排序,直接返回 i, j = l, r while i < j: while i < j and nums[i] <= nums[r]: i += 1 while i < j and .原创 2020-11-10 11:25:20 · 6703 阅读 · 0 评论 -
面试算法题(1)
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/kexuanxiu1163/article/details/99024362题目描述给你数字 0 ,1 ,2 ,那么所有排列从小到大就会是 012,021,102,120,201,210,那么如果给你 0,1,2,3,4,5,6,7,...转载 2019-08-15 15:44:19 · 137 阅读 · 0 评论 -
算法分析:求最近点对问题(c++)
算法分析:求最近点对问题(c++)1、 准备部分: 对于最近点问题,需要将问题代码化,所以要先创建一个点类,来使得计算使用时候更加方面,class Points //点类{public: float x; float y;};因为会多次计算距离,需要一个计算两点之间距离的函数。float Distance(Points p1,Points p2)//求原创 2017-11-18 01:14:58 · 16400 阅读 · 6 评论 -
N皇后问题可视化实现(java)
package queens;import java.awt.Color;import java.awt.GridLayout;import java.awt.Image;import java.io.IOException;import java.util.Scanner;import javax.swing.ImageIcon;import javax.swing.JFrame原创 2017-11-18 13:06:42 · 10444 阅读 · 0 评论 -
opengl实现俄罗斯方块
#include "Angel.h"#pragma comment(lib, "glew32.lib")#include #include #include using namespace std;int starttime; // 控制方块向下移动时间int which; // 那种方块int score = 0; // 得分int gamespeed =原创 2017-11-18 16:40:26 · 15086 阅读 · 11 评论 -
DES与3DES 加解密实例(c++)
DES与3DES 加解密实例(c++)DES原理:DES算法是一种对称密码算法,也是一种分组加密的算法,以64位分组对数 据加密的,其密钥长度为64位,密钥事实上是56位参与DES运算(第8、16、24、 32、40、48、56、64位是校验位,使得每个密钥都有奇数个1),分组后的明文组和 56位的密钥按位替代或交换的方法形成密文组。 DES算法的主要流程如下图所示 。 1、 IP置原创 2017-11-18 00:38:44 · 18061 阅读 · 7 评论