- 博客(32)
- 收藏
- 关注
原创 算法笔记21.基础动态规划补充(全)
1.理想收入问题现在已知楚继光手头有某只股票在过去几年中的价格,他试图据此模拟操作以获得理想收入。所谓理想收入是指在股票交易中,以1元为本金可能获得的最高收入,并且在理想收入中允许有非整数股票买卖。 已知股票在第i天每股价格是 V[ i ]元,1 ≤ i ≤ n,求 n 天后的理想收入。输入格式 输入的第一行为 n (1 ≤ n ≤ 100 000)。下面有 n 个实数,依次为今后 n 天的股票价格。这 n 个数可能分布在多行中。输出格式 对于给定的输入,输出 n 天后的理想输入(精确到
2022-02-19 20:23:36
431
转载 算法笔记20.最小生成树
https://blog.csdn.net/liu17234050/article/details/104262387?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522161432168816780357274553%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=161432168816780357274553&am
2021-02-26 14:46:04
102
转载 算法笔记19:LCS
https://blog.csdn.net/lxt_Lucia/article/details/81209962?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522161432124516780265497701%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=161432124516780265497701&b
2021-02-26 14:39:19
88
原创 算法笔记18.基础背包问题
1.简单背包问题问题描述:(1)1个背包(2)容量为S(3)N个物体的重量为W1,W2,W3,W4…Wn问题满足:从N件物品中挑选若干件,使得放入背包的重量之和刚好为S输入:S NW1 W2… Wn10 51 2 3 4 5输出:可行则输出这些物品的重量,不可行则输出Fail1 4 5//用的是递归求子集剪枝,不是标准背包问题结构2.0/1背包问题问题描述:(1)1个背包(2)容量为S(3)N个物体的重量为W1,W2,W3,W4…Wn(4)N个物品的价值为C1,C2,C
2021-02-26 11:18:53
193
原创 算法笔记17.最长上升(不下降)子序列系列题目
1.最长不下降子序列题目描述:DescriptionA numeric sequence of ai is ordered if a1 < a2 < … <aN. Let the subsequence of the given numeric sequence (a1,a2, …,aN) be any sequence (ai1,ai2, …,aiK), where 1 <=i1 < i2 < … <iK <=N. For example, seque
2021-02-26 09:46:00
298
转载 算法笔记16.并查集
并查集是我暑假从高手那里学到的一招,觉得真是太精妙的设计了。以前我无法解决的一类问题竟然可以用如此简单高效的方法搞定。不分享出来真是对不起party了。(party:我靠,关我嘛事啊?我跟你很熟么?)来看一个实例,杭电1232畅通工程首先在地图上给你若干个城镇,这些城镇都可以看作点,然后告诉你哪些对城镇之间是有道路直接相连的。最后要解决的是整幅图的连通性问题。比如随意给你两个点,让你判断它们是否连通,或者问你整幅图一共有几个连通分支,也就是被分成了几个互相独立的块。像畅通工程这题,问还需要修几条路,实质
2021-02-25 10:08:27
93
原创 算法笔记15:最短路
1.迪杰斯特拉算法#include<iostream>#include<algorithm>#include<queue>#include<cstring>using namespace std;int times[501][501];int path[501][501];int vis1[502];int vis2[502];int d1[502];int d2[502];int main(){ int n,m; int s,e
2021-02-23 17:35:51
95
原创 算法笔记14:拓扑排序
#include<stdio.h>#include<stdlib.h>int map[501][501];int main(){ int stack[502]; int size = 0; int topo[501]; int indegree[501]={0}; int n,m,s,e,l; int top; int num = 0; scanf("%d%d",&n,&m); for(int i=1;i<=m;i++) {
2021-02-23 17:26:47
86
原创 算法笔记13:BigNum高精度模板
#include<iostream> #include<string> #include<iomanip> #include<algorithm> #include<bits/stdc++.h>using namespace std; #define MAXN 9999#define MAXSIZE 10#define DLEN 4 class BigNum{ private: int a[500]; //??
2021-02-23 17:16:55
168
原创 算法笔记12:STL:栈(stack)、队列(queue)和优先队列(priority_queue)
1.stack#include<stack>stack<int>s;s.empty()// 堆栈为空则返回真s.pop()// 移除栈顶元素s.push(4)// 在栈顶增加元素4s.size() //返回栈中元素数目s.top()// 返回栈顶元素2.queue#include<queue>queue<int>q;q.push()q.pop()q.front()q.back()q.empty()q.size()3.pr
2021-02-23 16:39:25
103
原创 算法笔记11.STL:map
map映照容器一.有关map的操作1.初始化操作map<string, int> myMap;myMap["messi"] = 1;myMap["jams"] = 2;myMap["jack"] = 3;2.插入操作pair<string, int> value("json", 4);myMap.insert(value);3.输出集合中的元素for(map<string, int>::iterator iter = myMap.begin()
2021-02-23 16:25:29
92
原创 算法笔记10.STL:set
1.set使用方法://set使用方法set<int>s;s.begin() //返回set容器的第一个元素s.end() //返回set容器的最后一个元素s.clear() //删除set容器中的所有的元素s.empty() //判断set容器是否为空s.max_size() //返回set容器可能包含的元素最大个数s.size() //返回当前set容器中的元素个数2.set的迭代器与两道题目(1
2021-02-23 15:45:42
69
原创 算法笔记9.STL:vector
1.vector的初始化#include<vector>;//vector 的初始化:可以有五种方式,举例说明如下: vector<int> a(10); //(1)定义了10个整型元素的向量(尖括号中为元素类型名,它可以是任何合法的数据类型),但没有给出初值,其值是不确定的。 vector<int> a(10,1); //(2)定义了10个整型元素的向量,且给出每个元素的初值为1 vector<
2021-02-23 15:25:37
64
原创 算法笔记8.递归排列与组合
(1)排列#include<stdio.h>#include<stdlib.h>int a[1000];int b[1000];int n;void print(){int i;for(int i=1;i<=n;i++)printf("%d ",a[i]);printf("\n");}void dfs(int step){int j;if(step==n+1){print();return ;}for(j=1;j<=n;j++){
2021-02-22 15:47:38
54
原创 算法笔记7.KMP算法
//KMP algorithm Ye Zhuang#include<stdio.h>#include<stdlib.h>#include<string.h>int main(){ char str1[501]; char str2[501]; int next[501]; gets(str1); gets(str2); int x,y,i,j; x = strlen(str1); y = strlen(str2); i = 0; j =
2021-02-22 15:36:15
124
原创 算法笔记6.BF算法
#include<stdio.h>#include<stdlib.h>#include<string.h>int main(){ int x,y; int i,j; char s1[501]; char s2[501]; gets(s1); gets(s2); x = strlen(s1); y = strlen(s2); for(i=0,j=0;i<x&&j<y;i++,j++) { if(s1[i]==s2[
2021-02-22 15:33:26
103
原创 算法笔记5.堆排序
//Heap Sort #include<stdio.h>#include<stdlib.h>void HeapAdjust(int r[],int s,int m){ int rc = r[s]; for(int j=2*s;j<=m;j*=2) { if(j<m&&r[j]<r[j+1]) ++j; if(rc>=r[j]) break; r[s]=r[j]; s = j;
2021-02-22 15:30:10
63
原创 算法笔记4.希尔排序
//ShellSort#include<stdio.h>#include<stdlib.h>int a[101];int n;void ShellInsert(int a[],int dk){ int temp,j; for(int i=dk+1;i<=n;i++) if(a[i]<a[i-dk]) { temp = a[i]; for(j = i-dk;j>0&&a[j]>temp;j-=dk) a[j+dk]
2021-02-22 15:28:51
64
原创 算法笔记3.三大排序
(1)选择排序//SelectionSort#include<stdio.h>#include<stdlib.h>int a[101];int n;void SelectSort(int a[],int n){ for(int i=1;i<n;i++) { int k = i; for(int j=i+1;j<=n;++j) { if(a[j]<a[k]) k = j; if(k!=i) { int te
2021-02-22 15:27:23
78
原创 算法笔记2.快速排序
//BInsertSort#include<stdio.h>#include<stdlib.h>int a[10000001];int n;int Part(int a[],int low,int high){ int temp = a[low]; int p = a[low]; while(low<high) { while(low<high&&a[high]>=p) --high; a[low] = a[high]
2021-02-22 15:22:59
63
原创 算法笔记1.归并排序
#include "stdio.h"#define MAX 100int is1[MAX],is2[MAX];void merge(int low,int mid,int high){ int i=low,j=mid+1,k=low; while(i<=mid&&j<=high) if(is1[i]<is1[j]) is2[k++]=is1[i++]; else is2[k++]=is1[j++]; while(i
2021-02-22 15:09:41
77
原创 2020-05-16
#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include<iostream>#include<string>#include<string.h>using namespace std;int main(int argc, char **argv){ cout << argc << endl;; for
2020-05-16 13:55:15
81
原创 poj 1804 逆序与排序,逆序性质,逆序与排序复杂度
//poj 1804 1.复习插入排序:j>0 2.插入排序求逆序 //3.逆序的性质 :一个序列的逆序表示的就是其相邻对换使其正向有序的最小对换次数 = 恰等于插入排序的替换挪位次数 =// =恰等于归并排序中的Merge操作中的 if(a[i]>a[j]) ans+=mid - i +1//归并排序求逆序 复杂度如同归并:nlo...
2020-02-20 00:18:43
225
原创 归并排序求逆序
1.X的逆序:序列中在X之前且比X大的数的个数和。2.序列的逆序:序列中所有X的逆序的和3.而在归并排序的Merge函数中,void Merge(int low,int mid,int high){ int i = low; int j = mid+1; int k = low; while(i<=mid&&j<=high) { if(a[i]&l...
2020-02-19 22:27:38
55
原创 Blog 6 数论几个超级基础知识点,很重要哦
虽然基础但就用这个我们全家都用它知识点1:欧几里德算法int gcd(int a,int b){return b==0?a:gcd(b,a%b);}知识点2:大数取模(注意先把大数变成字符串的思路) int x=strlen(ch); int ans=0; for(int i=0;i<x;i++) ans=(int)(((long long)ans*1...
2019-03-25 20:41:18
212
原创 Blog 5:筛法构造素数表,约分,数论基础
Uva 10375汝佳还是很聪明的嘛,这个代码写的很好啊啥时候能把书中的错误改好就行了唉坑死读者知识点1:x以内的素数有x/lnx的最高位加1个例如10000以内用10000/log(10000)算出1086内部素数个数就设置为2086知识点2:筛法构造素数表int vis[10000]; int n=10000; int m=sqrt(n+0.5); ...
2019-03-25 20:17:44
153
原创 Blog4:我改了六个小时!!的UVA11582 大数取模,找规律,快速幂取模
``在看这道题之前知识点一:斐波拉契数列对任何正整数取模所得到的数列是一个周期数列(由此小心其他不知名的数学类问题也有可能是这样找规律)知识点二:快速幂取模:刘汝佳用的矩阵快速幂我的代码很简单抄的(刘汝佳紫书P315面的代码少了下面的条件)a=a%n;他原来也不是什么神人啊,,,粗心的一批看代码int powermod(unsigned long long a,unsigned ...
2019-03-25 19:59:51
142
原创 Blog 3:数论(取模)与递推相结合
Uva 12169 Disgrunted Judge递推矛盾问题的终极写法BOLG2那个正常的写法超时了那就找规律啊!!!!!本题正常的枚举没事思考:与上面一题中为何上面一题可以直接假设第一个数为1这个不可以因为第一个题目中各个假设之间的各个数差一样,只需要求得一个看下面这个题代码#include#includeusing namespace std;int x[205]...
2019-03-24 19:48:14
226
原创 Blog 2.递推与矛盾问题。
1.递推这个嘛,先来个简单的可是我还是写错了啊啊啊,超时Codeforces上的题C. Polycarp Restores Permutationtime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputAn array of integ...
2019-03-23 22:18:41
174
原创 Blog 1 数论:唯一分解定理
UVA10791一个数n的唯一分解式个部分和最小证明需要知道诶,自己百度本题1.long long2.刘汝佳错了,m应取到,否则n6时是错误的3.关注pf和n这俩大于小于1在其中的作用4.这种放超时的唯一分解定理分解方式要会#include#include#includeusing namespace std;int main(){ int n,m;unsigned ...
2019-03-23 22:02:47
123
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人