算法
文章平均质量分 57
张^老头
此人很懒,写了一点点
展开
-
序列求和(费马小定理除法取余)
题目链接:https://ac.nowcoder.com/acm/problem/15950序列求和(费马小定理除法取余)序:存在(a*b)%p=((a%p)*(b%p))%p但是不存在 (a/b)%p=(a%p)/(b%p)%p费马小定理如果p是一个质数,而整数a不是p的倍数,则有ap-1≡1(mod p)。我们要求(a/b)%c即(a*b-1*1)%c因为bc-1%c=1;带入上式得(a/b)%c = (a*bc-2)一般c都是一个比较大得质数,可以用快速幂来求bc-2题目代码原创 2022-01-01 11:07:54 · 249 阅读 · 0 评论 -
【排序算法】堆排序(图解)
堆排序堆排序Heapsort是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。首先要说一下什么是完全二叉树:每个节点最多有两个子节点(左,右儿子)若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第h层从左边第 h 层所有的结点都连续集中在最左边,这就是完全二叉树。注意完全二叉树有一个性质:最后一个父结点是第n/2个结点。然后我们回过头来说算法:首先看原创 2021-07-17 11:22:45 · 957 阅读 · 0 评论 -
【贪心】2021-07-12-AcWing 896.最长上升子序列 II
最长上升子序列 II原题地址:https://www.acwing.com/problem/content/898/题目描述给定一个长度为N的数列,求数值严格单调递增的子序列的长度最长是多少。输入格式第一行包含整数 N。第二行包含 N个整数,表示完整序列。输出格式输出一个整数,表示最大长度。数据范围数据范围1 ≤ N ≤ 100000,−109 ≤ 数列中的数 ≤ 109输入样例73 1 2 1 8 5 6输出样例4代码/*0rz 大佬代码的搬运工orz 下转载 2021-07-13 10:44:54 · 234 阅读 · 0 评论 -
【动态规划】多重背包问题III
多重背包问题 III题目来源:https://www.acwing.com/problem/content/description/6/题目描述有 N 种物品和一个容量是 V 的背包。第 i 种物品最多有 si 件,每件体积是 vi,价值是 wi。求解将哪些物品装入背包,可使物品体积总和不超过背包容量,且价值总和最大。输出最大价值。输入格式第一行两个整数,N,V (0<N≤1000, 0<V≤20000),用空格隔开,分别表示物品种数和背包容积。接下来有 N 行,每行三个整数原创 2021-05-09 00:19:51 · 274 阅读 · 0 评论 -
【DFS】危险系数——巧用重合数
[蓝桥杯][2013年第四届真题]危险系数问题描述输入格式输出格式样例输入样例输出思路代码题目链接:http://lx.lanqiao.cn/problem.page?gpid=T35问题描述抗日战争时期,冀中平原的地道战曾发挥重要作用。地道的多个站点间有通道连接,形成了庞大的网络。但也有隐患,当敌人发现了某个站点后,其它站点间可能因此会失去联系。我们来定义一个危险系数DF(x,y):对于两个站点x和y (x != y), 如果能找到一个站点z,当z被敌人破坏后,x和y不连通,那么我们称z为关原创 2021-04-13 20:31:41 · 192 阅读 · 0 评论 -
【双向BFS】九宫重排
题目 1426: [蓝桥杯][历届试题]九宫重排链接:C语言网——九宫重排题目描述如下面第一个图的九宫格中,放着 1~8 的数字卡片,还有一个格子空着。与空格子相邻的格子中的卡片可以移动到空格中。经过若干次移动,可以形成第二个图所示的局面。我们把第一个图的局面记为:12345678.把第二个图的局面记为:123.46758显然是按从上到下,从左到右的顺序记录数字,空格记为句点。本题目的任务是已知九宫的初态和终态,求最少经过多少步的移动可以到达。如果无论多少步都无法到达,则输出-1。输原创 2021-04-09 09:57:32 · 307 阅读 · 1 评论 -
BFS动图演示
链接: 点我点我.转载 2021-03-20 15:07:49 · 627 阅读 · 3 评论 -
快速排序(讲解+动图直观过程)
快速排序必冒泡排序法更快的排序方法:快速排序`该方法的基本思想是:1.先从数列中取出一个数作为基准数。(一般为了方便通常取第一个)2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。3.再对左右区间重复第二步,直到各区间只有一个数简言之:挖坑 + 分治实现过程(第一部分): ( i从前寻找比基准数大的,j从后寻找小的)分成两个区间重复上面的过程。总结:1.i =str; j = end; 将基准数挖出形成第一个坑a[i]。2.j- -由后向前找比它小的数,找原创 2021-03-11 00:29:13 · 2584 阅读 · 2 评论 -
01背包问题详解+测试数据
01背包问题题目函数递归测试数据题目有N件物品和一个容量为V的背包。第i件物品的大小是c[i],价值是v[i]。求解将哪些物品装入背包可使价值总和最大。0 1即简单的 要 /不要 这个商品函数递归==公式==: B(int k,int c) ={ B(k-1,c) //第k件太重``max{ 要 B(k-1,c-c[i])+v[i]; 不要 B(k-1,c); }}//B代表这个背包目前所拥有的价值,k表示第k件是商品,w表示背包剩余体积现在有5个商品,背包容量为6原创 2021-01-07 20:51:14 · 5616 阅读 · 4 评论 -
二维迷(dfs)宫动画版
二维迷宫动画#include<stdio.h>#include"graphics.h"#define N 20int n,m;//n行 m列int sx,sy,fx,fy;//start:sx,sy;end:fx,fy; int MAP[N][N]={0};//mapint visit[N][N]={0};//visitint solution=0;char s[5];int pp;int curr;void dfs(int x,int y);void creat原创 2021-01-01 19:37:37 · 329 阅读 · 4 评论 -
2020-12-31算法最大子列和
7-1 最大子列和问题 (20分)给定K个整数组成的序列{ N1,N2,……Nk},“连续子列”被定义为{Ni,Ni+1……Ni+j},其中1≤i≤j≤K。“最大子列和”则被定义为所有连续子列元素的和中最大者。例如给定序列{ -2, 11, -4, 13, -5, -2},其连续子列{ 11, -4, 13 }有最大的和20。现要求你编写程序,计算给定整数序列的最大子列和。本题旨在测试各种不同的算法在各种数据情况下的表现。各组测试数据特点如下:数据1:与样例等价,测试基本正确性数据2:102个原创 2020-12-31 15:01:43 · 107 阅读 · 0 评论