- 博客(50)
- 收藏
- 关注
原创 python-flask项目部署到阿里云服务器(宝塔面板/Nginx反向代理)
用宝塔面板和Nginx反向代理flask项目部署?到阿里云服务器
2023-03-29 13:41:28 1350
原创 基于RSA的数字签名设计与实现
掌握RSA算法的基本原理,通过用RSA算法对实际数据进行加密和解密来深刻了解RSA的运行原理。对数字签名有所了解,理解和掌握SHA–512算法,以及如何利用RSA和SHA–512算法来实现数字签名。制作可视化界面(使用任何编程语言皆可),需要给出以下内容,包括:签名生成界面、签名验证界面,可以做静态html+JavaScript(推荐),也可以做B/S(任何方式皆可)。
2022-12-23 11:50:37 1652
原创 845.八数码——bfs(详细)
题目链接:https://www.acwing.com/problem/content/847/题目描述在一个 3×33×3 的网格中,1∼81∼8 这 88 个数字和一个 x 恰好不重不漏地分布在这 3×33×3 的网格中。例如:1 2 3x 4 67 5 8在游戏过程中,可以把 x 与其上、下、左、右四个方向之一的数字交换(如果存在)。我们的目的是通过交换,使得网格变为如下排列(称为正确排列):1 2 34 5 67 8 x例如,示例中图形就可以通过让 x 先后与右、下、右三
2022-04-04 15:46:51 141
原创 7-11 球队“食物链”——dfs+剪枝
题目描述某国的足球联赛中有N支参赛球队,编号从1至N。联赛采用主客场双循环赛制,参赛球队两两之间在双方主场各赛一场。联赛战罢,结果已经尘埃落定。此时,联赛主席突发奇想,希望从中找出一条包含所有球队的“食物链”,来说明联赛的精彩程度。“食物链”为一个1至N的排列{T1 T2 T3 … Tn},满足:球队T1战胜过球队T2,球队T2战胜过球队T3,… ,球队T(N-1)战胜过球队TN,球队TN战胜过球队T1。现在主席请你从联赛结果中找出“食物链”。若存在多条“食物链”,请找出字典序最小的。注:排列{ a
2022-03-30 17:33:19 1563
原创 功夫传人 (25 分)——dfs
题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805059118809088题目描述一门武功能否传承久远并被发扬光大,是要看缘分的。一般来说,师傅传授给徒弟的武功总要打个折扣,于是越往后传,弟子们的功夫就越弱…… 直到某一支的某一代突然出现一个天分特别高的弟子(或者是吃到了灵丹、挖到了特别的秘笈),会将功夫的威力一下子放大N倍 —— 我们称这种弟子为“得道者”。这里我们来考察某一位祖师爷门下的徒子徒孙家谱:假设家谱
2022-03-28 22:07:31 113
原创 最长上升子序列--LIS
最长上升子序列–LIS每次都向前找比它小的数和比它大的数的位置,将第一个比它大的替换掉,这样操作虽然LIS序列的具体数字可能会变,但是很明显LIS长度还是不变的//样例1 2 3 44 5 23 61 2 3 5 6vector实现(n^2)#include <cstdio>#include <iostream>#include <cstring>#include <algorithm>#include <vector>u
2021-08-14 17:23:16 93
原创 背包问题
背包问题01背包问题一件物品只有选or不选,是or不是两种情况/*f[i][j] 表示只看前i个物品,总体积是j的情况下,总价值最大是多少f[i][j] = 1.不选第i个物品 f[i][j] = f[i-1][j];2.选第i个物品,则总容量减少v[i] f[i][j] = f[i-1][j-v[i]]+w[i];f[0][0] = 0;*///二维const int N=1010;int n,m;int f[N][N];int v[N],w[N];int main(
2021-08-14 17:21:42 112
原创 生成树——Kruscal & Prim
生成树入门关于树MST——最小生成树无向无环的联通图任意两个结点之间有且仅有一条简单路径的无向图任何边均为桥的连通图没有圈,且在任意不同两点见添加一条边之后所得图含唯一的一个圈的图Kruscal适合简单图原理不断加边认定每个点都是一个独立的集合按照边的权值检查每一条边如果该边连接两个不同的集合,将边加入MST,合并两个集合集合的判定和合并使用并查集图解[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zGEma39r-16289327
2021-08-14 17:19:52 130
原创 Floyd(弗洛伊德)算法
Floyd(弗洛伊德)算法演示图一演示图二实现//从1到n的最短路#include <bits/stdc++.h>using namespace std;const int maxn = 205, inf = INT_MAX / 2;int mp[maxn][maxn];int n;int main(){ cin>>n; //初始化 for (int i = 1; i <= n; i++)
2021-08-14 17:18:27 123
原创 Bellman-Ford(贝尔曼-福特) & SPFA算法
Bellman-Ford(贝尔曼-福特) & SPFA算法Bellman-Ford一种基于松弛(relax)操作——广度,的最短路算法。优点可以有负权边,但是不能出现负权环相对于迪杰特斯拉算法而言,它的时间复杂度更高,但是能解决负权边问题检测图中是否有负权值回路负权边:权重为负数的边。负权环:源点到源点的一个环,环上权重和为负数。判断是否存在负权环//解法:/*跑Bellman-Ford算法如果有点被松弛成功了n次,那一定存在如果n-1次之内算法就结束了,那一定不
2021-08-14 17:16:29 166
原创 Dijkstra(迪杰特斯拉)
Dijkstra(迪杰特斯拉)离散数学学过,不会就去跟着书上模拟一遍就完事儿(深度上进行操作)使用条件不能出现负权值路径用邻接矩阵实现#include <bits/stdc++.h>using namespace std;const int maxn=105,inf=1e9+7;int mp[maxn][maxn];//图的邻接矩阵int dis[maxn];//记录移动bool vis[maxn];//标记int n,m;//点、边void DJ(int s){
2021-08-14 17:15:19 164
原创 图论入门
图论入门图的建立与存储邻接表vector实现邻接表邻接表是面向边的数据结构,所以需要边的内容用一个结构体*存储*关于vector1、创建vector对象 vector<int> vec;2、插入 vec.insert();3、删除 vec.erase();4、尾部插入 vec.push_back();5、清空 vec.clear();vector建图struct Edge{ int from;//顶点序号 int to;//顶点序号 int w;
2021-08-14 17:14:24 394
原创 二分查找
二分查找条件:单调有序的集合元素(递增/递减),使用前可先排序时间复杂度O(logn)简单二分查找#include <bits/stdc++.h>using namespace std;int n,x;int ans=0;int a[15];void check(int l,int r,int m,int x){ int low=l,high=r,mid=m; while(1){ if(x<a[mid]) h
2021-08-14 17:12:06 114
原创 贪心
贪心排队问题排名越靠前的计算次数越多,越小的排在越前面树染色(染色的最小总代价)限制结点被染色之前,其父结点已被染色,所以,先找最大的内点,向上将它的父结点染色最优装载问题(局部最优)排序,从小到大取部分背包问题问题:n个物体,第i个物体的重量为Wi,价值为Vi,求在总重量不超过C的情况下让总价值最高解:计算价值除以重量的值,排序,取最大值 注意:由于每个物体可以只拿一部分,因此一定让总重量为C(或者全部物体都拿走,重量也不如C),而且除了最后一个以外,所有的物体要么不拿,要么拿走全
2021-08-14 17:08:59 79
原创 797. 差分(差分模板题应用)
797. 差分(差分模板题应用)题目输入一个长度为 n 的整数序列。接下来输入 m 个操作,每个操作包含三个整数 l,r,c,表示将序列中 [l,r]之间的每个数加上 c 。请你输出进行完所有操作后的序列。输入格式第一行包含两个整数 n 和 m。第二行包含 n 个整数,表示整数序列。接下来 m 行,每行包含三个整数l,r,c,表示一个操作。输出格式共一行,包含 n个整数,表示最终序列。数据范围1≤n,m≤100000,1≤l≤r≤n,−1000≤c≤1000,−1000≤整数序
2021-07-20 15:41:42 85
原创 P1090 [NOIP2004 提高组] 合并果子 / [USACO06NOV] Fence Repair G(优先队列+贪心)
P1090 [NOIP2004 提高组] 合并果子 / [USACO06NOV] Fence Repair G(优先队列+贪心)题目描述在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。多多决定把所有的果子合成一堆。每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。可以看出,所有的果子经过 n-1n−1 次合并之后, 就只剩下一堆了。多多在合并果子时总共消耗的体力等于每次合并所耗体力之和。因为还要花大力气把这些果子搬回家,所以多多在合并果子时要
2021-07-19 20:58:19 411
原创 U53525 前缀和(例题) & P1387 最大正方形(前缀和)
U53525 前缀和(例题) & P1387 最大正方形(前缀和)一维前缀和a[5]={1,2,3,4,5};b[5];//前缀和数组b[0]=a[0]=1;//条件for(int i=1;i<5;i++){ b[i]=b[i-1]+a[i];//递推}U53525 前缀和(例题)题目背景没有背景小明是一个好学的孩子,一天他学会了编程,在解题,题目是这样的:题目描述有 N 个的正整数放到数组 A 里,现在要求你求出并输出这样一个数组:这个数组的第 i 个数是
2021-07-17 16:23:04 325
原创 P1217 [USACO1.5]回文质数 Prime Palindromes(素数筛法/打表)
P1217——素数筛法/打表一:埃氏筛(时间复杂度——nloglogn)重点:一个数x是合数,则它的倍数也是合数//用埃氏筛生成质数表const int N=1e8;bool prime[N];void a_prime(int b){ memset(prime,1,sizeof(prime));//初始化默认全为质数 prime[0]=prime[1]=0;//0和1不是质数 int k=sqrt(b); for(int i=2;i<=k;i++){
2021-07-15 21:52:13 277
原创 P2670 [NOIP2015 普及组] 扫雷游戏题目描述(位移数组使用)
P2670 [NOIP2015 普及组] 扫雷游戏题目描述(位移数组使用)扫雷游戏是一款十分经典的单机小游戏。在n行m列的雷区中有一些格子含有地雷(称之为地雷格),其他格子不含地雷(称之为非地雷格)。玩家翻开一个非地雷格时,该格将会出现一个数字——提示周围格子中有多少个是地雷格。游戏的目标是在不翻出任何地雷格的条件下,找出所有的非地雷格。现在给出n行m列的雷区中的地雷分布,要求计算出每个非地雷格周围的地雷格数。注:一个格子的周围格子包括其上、下、左、右、左上、右上、左下、右下八个方向上与之直接相邻的格
2021-05-18 20:41:14 276
原创 P2181 对角线(组合数学)
P2181 对角线题目描述对于一个 n个顶点的凸多边形,它的任何三条对角线都不会交于一点。请求出图形中对角线交点的个数。例如,6边形:输入格式输入只有一行一个整数 n,代表边数。输出格式输出一行一个整数代表答案。输入输出样例输入 #1复制3输出 #1复制0输入 #2复制6输出 #2复制15说明/提示数据规模与约定对于 50% 的数据,保证 3≤n≤100。对于 100% 的数据,保证 3≤n≤10的五次方。排列组合(补充知识点)排列(P/A)从
2021-05-17 23:27:34 299
原创 P2433 【深基1-2】小学数学 N 合一
P2433 【深基1-2】小学数学 N 合一相遇问题/火车过桥问题相遇问题:路程和=时间×速度和火车过桥问题:总路程=车长+桥长example甲列火车长 260 米,每秒行 12 米;乙列火车长 220 米,每秒行 20 米,两车相向而行,从两车车头相遇时开始计时,多长时间后两车车尾相离?已知答案是整数。//计算总路程260+220//计算速度和12+20车尾相离的时间t = 总路程/速度和;追及问题路程差÷速度差=追及时间球体积数学,一生之敌,说到底就是我菜,呜呜呜V
2021-05-17 23:08:37 1767
原创 子串分值和
子串分值和蒟蒻吐槽:CB(Code:Block) 真的猛,这都能自动优化,然后跑出结果(然后在acwing上面跑的时候,跑出了个什么鬼玩意儿)题面对于一个字符串 SS,我们定义 SS 的分值 f(S)f(S) 为 SS 中出现的不同的字符个数。例如 f(“aba”)=2,f(“abc”)=3,f(“aaa”)=1f(“aba”)=2,f(“abc”)=3,f(“aaa”)=1。现在给定一个字符串 S[0…n−1]S[0…n−1](长度为 nn),请你计算对于所有 SS 的非空子串 Si…jSi
2021-04-04 21:39:10 292
原创 L1-058 6翻了(水题)
L1-058 6翻了(水题)蒟蒻吐槽:总共15分,完整过了两个测试点,还有四个测试点“格式错误”,但拿了十分,就没管了,现在来搞一下。发现是空格的问题题面“666”是一种网络用语,大概是表示某人很厉害、我们很佩服的意思。最近又衍生出另一个数字“9”,意思是“6翻了”,实在太厉害的意思。如果你以为这就是厉害的最高境界,那就错啦 —— 目前的最高境界是数字“27”,因为这是 3 个 “9”!本题就请你编写程序,将那些过时的、只会用一连串“6666……6”表达仰慕的句子,翻译成最新的高级表达。输
2021-04-03 16:49:13 565
原创 L1-025 正整数A+B(水题)+scanf(“%[^ ]“)的应用
L1-025 正整数A+B知识点:用scanf输入带有空格的字符串“%[]”格式可以用 ^+任意字符来结束字符串的输入#include <bits/stdc++.h>using namespace std;int main(){ char str[100]; scanf("%[^\n]",str); //直到读入回车键,读取才结束 //(可以有效替代gets,解决gets无法编译通过的问题) printf("%s\n",str);}
2021-04-03 15:27:52 138
原创 Contest2681 - 2021ACM俱乐部后备营个人训练赛第16场
Contest2681 - 2021ACM俱乐部后备营个人训练赛第16场这段时间在乡下渡劫,停电了,所以训练赛没打,补题的时候做的,回归朴质乡村生活问题 A: 开心的金明Solution动态规划,背包转移方程:一维:f [m] = max(f [m] ,f [m-v ]+ w);不会动态规划的,可以去了解一下:动态规划入门详解+例题P1049装箱问题/62. Unique Paths有点儿像它的第一个例题Code#include <bits/stdc++.h> usin
2021-02-01 21:07:37 206
原创 动态规划入门详解+例题P1049装箱问题/62. Unique Paths
动态规划入门详解+例题P1049装箱问题/62. Unique Paths小蒟蒻自己的学习记录,呜呜呜算法思想动态规划是一种分治思想,但与分支算法不同的是,动态规划也是把原问题分解为若干子问题,然后自底向上,求解最小的子问题,叭结果存储在表格中,再求解大的子问题时,直接从表格中查询小的子问题的解,避免重复计算,从而提高算法效率。题目特点/算法要素计数有多少种方法走到右下角有多少种方法选出k个数使得和是Sum求最大最小值从左上角走到右下角路径的最大数字和最长上升子序列长度求存
2021-01-31 17:41:08 701
原创 Contest RankList -- 2021ACM俱乐部后备营个人训练赛第15场
Contest RankList – 2021ACM俱乐部后备营个人训练赛第15场问题 A: 校门外的树Solution数组+标记就行了。但是这里不得不吐槽,中石油的这个题居然把 3 2 ,这不合法情况都算,在洛谷上的同样的题就不必考虑这种情况。这可能就是为啥大家都是WA了很多次才过的原因叭,害(我WA了三次,麻了)。Code#include <bits/stdc++.h>typedef long long ll;using namespace std; int main()
2021-01-29 16:59:50 383
原创 Contest2675 - 2021ACM俱乐部后备营个人训练赛第13场
Contest2675 - 2021ACM俱乐部后备营个人训练赛第13场蒻蒻发言:上一场比赛在车上,随便水了三个就撤了,其实就是晕车,所以没有题解,嘿嘿嘿问题 C: 乒乓球Solution惯例:在怎样读入多行的时候卡了一下,一开始用string和getline做的,但是发现它还是不能读多行,没想明白,换的char逐个读入做的简单统计,两次循环,特别注意提示的话——兵乓球比赛知识:假设11分制下,如果比值达到10:10以后,需要分值相差 2 分以上才算胜利, 比如14:12。属于其中一个判断条件C
2021-01-26 17:20:17 324
原创 Contest2670 - 2021ACM俱乐部后备营个人训练赛第11场
Contest2670 - 2021ACM俱乐部后备营个人训练赛第11场问题 B: 装箱问题思路动态规划入门题(不要问我,我也正处于半懂不懂的状态,正在学,蒻蒻自闭ing)代码#include <bits/stdc++.h> using namespace std; int main(){ int m,n,num; int a[20001]={0}; cin>>m>>n; while(n--) {
2021-01-22 17:24:42 248
原创 Contest2668 - 2021ACM俱乐部后备营个人训练赛第10场
Contest2668 - 2021ACM俱乐部后备营个人训练赛第10场呜呜呜,这可能就是提升题/普及题的魅力叭,除了三个水题(有两个是上一场的重复的题),俺就做出来一道,麻了,后期补题再接受补吧问题 B: 计算器的改良思路细节怪,很多坑,一不小心你就是WA WA 怪。代码#include <bits/stdc++.h>using namespace std;int main(){ string s; char c;//定义一个暂存未知数 cin&
2021-01-20 17:11:52 281 1
原创 Contest2666 - 2021ACM俱乐部后备营个人训练赛第9场
Contest2666 - 2021ACM俱乐部后备营个人训练赛第9场问题 A: 6174问题思路四位数拆分,开两个数组a,b,用来存拆分出来的个、十、百、千位上的数,然后,sort快排(从小到大),再自个写个cmp(从大到小),定义maxx,minx,分别存最大的数和最小的数,与前一个数进行比较,相等则输出,不想等,则继续。代码#include <bits/stdc++.h> using namespace std; bool cmp(int a,int b){ r
2021-01-18 17:02:58 379 3
原创 Contest2664 - 2021ACM俱乐部后备营个人训练赛第8场
Contest2664 - 2021ACM俱乐部后备营个人训练赛第8场别问为啥没有上一场的题解,问就是上一场俺划水去了(嘘)问题 A: 打印图形VI思路有手就行(别锤我),有一点像第六场的 E题,找规律,行数等于n,列数从1到n分为前半段,后面的分为后半段,注意一下,行列之间(就是i,j)和字符ascii码的关系代码#include <bits/stdc++.h> using namespace std; int main(){ int i,j,n; cin
2021-01-17 17:09:09 258
原创 Contest2661 - 2021ACM俱乐部后备营个人训练赛第6场
Contest2661 - 2021ACM俱乐部后备营个人训练赛第6场问题 C: 找画笔思路以数组的形式读入,用sort快排,遍历数组,比较两个数是否相同,不同则输出,输出则循环。代码#include <bits/stdc++.h> using namespace std; int main(){ int n,a[1000000]; cin>>n; for(int i=0;i<n;++i) cin>>a[i
2021-01-14 20:47:54 1010 2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人