![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ACM算法
寻找自由的咸鱼
什么都只会一点
展开
-
最短路径算法的总结
Floyd算法的引出给出一个有向图,给出任意两点之间的最短路径。Floyd算法的原理当每条路径只允许通过两个点的时候,即任意两点之间不允许经过第三个点时,那么这些城市之间最短路径就是初始路径例如上图,从2到1的最短路径为无穷大,因为没有从2到1的路,又不能经过第三个点,所以最短路径就是无穷大。从1到2的最短路径就是原始的那条路的长度即为2。考虑允许经过第三个点的情况(比如点1)只需...翻译 2019-02-08 17:11:13 · 1439 阅读 · 0 评论 -
并查集最详细总结(入门到精通)
并查集给定N个元素,它们之间存在某种关系,对于这种关系的元素可以归结为一个集合,当数量太大的时候,查询等操作可能需要特别长的时间,并查集正是解决这种问题。初始化F[x]全部赋值为-1,F[x]=-1说明x为根结点。但在合并的时候不能判断find(x)==find(y)两个根节点都可以都是-1。全部赋值为x,F[x]=x说明每个元素的父节点都是自己本身,比较符合逻辑,在合并的时候可以判断f...原创 2019-02-20 13:05:36 · 1286 阅读 · 0 评论 -
背包问题详解
背包问题有n 种不同的物品,每个物品有两个属性,size 体积,value 价值,现在给一个容量为 w 的背包,问最多可带走多少价值的物品。情况一:物品的价值和重量给出,物品的数量均为1,背包的容量给出,背包不一定装满。1.定义数据变量int n;物品的总数int total_weigh;//背包的容量int w[];//各个物品的重量int v[];//各个物品的价值int c[...原创 2019-07-05 11:26:23 · 271 阅读 · 0 评论 -
最长递增子序列问题
问题描述某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。输入输入数据为导弹依次飞来的高度,所有高度值均为不大于30000的正整数。输出输出只有一行是这套系统最多能拦截的导...原创 2019-07-05 16:01:56 · 123 阅读 · 0 评论 -
HNU 12266
/*#include<iostream>#include<algorithm>#include<vector>#include<queue> using namespace std;struct zz{ int time, fee, num;}z[30005];//定义人这个结构体 vector<zz>test;//定义...原创 2019-07-05 20:54:07 · 129 阅读 · 0 评论 -
HNU 13320
#include <cmath>#include <iostream>#include <algorithm>using namespace std;const int MAXN = 25010;char s[MAXN];int orp[125], nrp[125], t, n;bool cmp(char a, char b) { return o...原创 2019-07-05 21:09:12 · 85 阅读 · 0 评论 -
HDU 1213并查集+路径压缩
#include <iostream> #include<cstdio> #include<cmath> #include<cstring> using namespace std; int pre[1100]; int findset(int v) { int t1,t2=v; ...原创 2019-07-06 16:17:29 · 137 阅读 · 0 评论 -
C++优先队列的用法
#include<iostream>#include<queue>#include<cstring>using namespace std;int a[1000010];bool cmp(int a,int b){ return a>b;}struct node{ int a,b; node (int a,int b) { thi...原创 2019-07-11 22:59:53 · 133 阅读 · 0 评论 -
2019南大计算机夏令营机考
第一题 给你一个不超过100位的数n,和一个不超过100的数字k,要求从数n中去掉k个数字,然后使得去掉k个数之后,n最小。#include<iostream>using namespace std;int k;main(){ int t; cin>>t; while(t--) { string n; //定义字符串n cin>&...原创 2019-07-28 21:29:13 · 2005 阅读 · 0 评论