自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 收藏
  • 关注

原创 二叉树 ---- 前序 中序 后序 知二求一

二叉树 ---- 前序 中序 后序 知二求一先说一下什么是二叉树的前中后序;根:根节点 左代表遍历左子树 右代表遍历右子树前序:根—左---右中序:左—根---右后序:左—右---根如图求前序://叶子结点简单的说就是没有儿子的节点;先遍历到a节点,再遍历它的左子树;遍历到b节点,再遍历它的左子树;遍历到c节点,发现c节点为叶子结点,返回到它的根节点b; 遍历b节点的右子树;遍历到d节点,发现d节点为叶子结点,返回到节点a;遍历a节点的右子树;遍历到e节点,再遍历它的左子树;发

2020-11-03 21:15:36 341

原创 双向队列用法与实例

push_back(x)/push_front(x) //把x压入后/前端back()/front() //访问(不删除)后/前端元素pop_back() pop_front() //删除后/前端元素empty() //判断deque是否空size() //返回deque的元素数量clear() //清空deque支持通过sort(d.begin(),d.end())进行排序。运用实例#include<bits/stdc++.h>using namespace std;deq

2020-10-20 21:08:12 507 1

原创 洛谷----P1507 NASA的食物计划

题目链接#include<bits/stdc++.h>using namespace std;int x[10005];int y[10005];int main() { int n; cin >> n; for(int i = 1;i <= n;i++) cin >> x[i] >> y[i]; sort(x + 1,x + n + 1); sort(y + 1,y + n + 1); int xz,yz; for

2020-10-16 20:45:00 177

原创 洛谷---砝码称重

题目链接.输入六个数,存进数组中2.初始化 f 数组为0。 f [ i ] 表示重量为 i 的情况是否出现过(下面代码使用的是 int 数组,当然用 bool 数组会更好)。如果出现过即为真(1),未出现过即为假(0)。3.这里我们要将 f [ 0 ] 设为 1 。总重量为 0 即一个砝码也不用,我们将这种情况设为已有。4.第一重循环。for (int i = 1 ; i <= 6 ; i++ )我们枚举六种重量的砝码。5.第二重循环for (int j = 1 ; j <= a

2020-10-15 20:48:04 297

原创 洛谷---P1889 士兵站队

题目链接题目思路:首先,要找到最优的一列(使移动步数最少的一列),其实就是要找一条平行于x轴的直线,设此直线为x=k,那么,每个点到这条距离为|yi-k|,不难发现,当k是所有点纵坐标的中位数时,距离之和最小。找到了这条直线之后,又该把每个点移到哪个位置才能使结果最优呢?可以设最左边的点(第一个点)移动后的位置为b,因为所有点必须排在一条线段上,那么第二个点的移动后的位置即为b+1,第三个移动后的位置为b+2…以此类推,第n个点移动后的位置为b+n-1。那么横向移动的步数之和为|x1-b|+|x2-b

2020-10-14 23:03:58 172

原创 洛谷 P2681 众数

题目描述由于数据规模很小,故可暴力模拟。map<int,int>记录出现次数,如果和当前最大,相等就判断一下哪个更小。#include<bits/stdc++.h>using namespace std;int a[1005];int main() { int n,m; cin >> n >> m; int x; for(int i = 1;i <= n;i++) cin >> a[i]; while(m--) { i

2020-10-13 22:06:04 145

原创 变形01背包---5倍经验日

洛谷 P1802 5倍经验日简单的01背包,不过实在01背包的基础上加了一个小小的变化,也就是不用药打也是要算在重量内。所以可得状态转移方程:dp[i][j] = max(dp[i - 1][j - use[i]] + win[i],dp[i - 1][j] + lose[i]);记得开long long#include<bits/stdc++.h>using namespace std;long long dp[1005][1005];int win[1005];int lo

2020-10-12 21:11:27 61

原创 分组背包(一维,二维)

洛谷 P1757 通天之分组背包分组背包的模板: for(int i = 1;i <= n;i++) { cin >> w[i] >> val[i] >> x; sum = max(sum,x);//这里是为了看出一共有多少组 num[x]++;//这一组一共有多少个物品 g[x][num[x]] = i;//这一组每个物品的编号 }一维:其他的和01背包基本一样,状态转移方程还是dp[j] = max(dp[j -

2020-10-11 22:27:20 204

原创 01背包---采药(一维,二维)

01背包—采药题目链接经典的01背包问题。用dp[i][j]表示以j为容量为放入前i个物品(按 i 从小到大的顺序)的最大价值。当 j 大于等于 当前物品的重量得到 转移方程 dp[i][j] = max((dp[i - 1][j - w[i]] + val[i]),dp[i - 1][j]);小于的话dp[i][j] = dp[i - 1][j];#include<bits/stdc++.h>using namespace std;int dp[200][200];int

2020-10-10 21:36:17 96

原创 洛谷---机器翻译

洛谷—机器翻译题目链接就是用队列去做,如果内存满了,就从队列中弹出一个元素放到内存中。#include<bits/stdc++.h>using namespace std;int a[1005];queue<int> q;int main() { int n,m; cin >> n >> m; int x,ans = 0; for(int i = 0;i < m;i++) { cin >> x;

2020-10-09 21:06:03 235

原创 STL---寄包柜

STL—寄包柜题目链接算法思路:开一个a[1e5][1e5]的数组肯定会MLE;这就需要用到STL的map进行映射;#include<bits/stdc++.h>using namespace std;const int N = 1e5 + 5;map<int,int>mp[N];int main() { int n,q; cin >> n >> q; for(int i = 1;i <= q;i++) { int x

2020-10-08 21:04:57 138

原创 二分查找----数列分段 Section II

二分查找----数列分段 Section II题目描述对于给定的一个长度为N的正整数数列 A 1∼N,现要将其分成 M(M≤N)段,并要求每段连续,且每段和的最大值最小。关于最大值最小:例如一数列 4 2 4 5 1 要分成 3 段。将其如下分段:[4 2][4 5][1]第一段和为 6,第 2 段和为 9,第 3 段和为 1,和最大值为 9。将其如下分段:[4][2 4][5 1]第一段和为4,第 2 段和为 6,第 3 段和为 6,和最大值为 6。并且无论如何分段,最大值不会小于 6。

2020-10-07 00:29:17 136

原创 DFS---选书

选书题目描述学校放寒假时,信息学奥赛辅导老师有1,2,3……x本书,要分给参加培训的x个人,每人只能选一本书,但是每人有两本喜欢的书。老师事先让每个人将自己喜欢的书填写在一张表上。然后根据他们填写的表来分配书本,希望设计一个程序帮助老师求出所有可能的分配方案,使每个学生都满意。输入格式第1行:一个数x第2行~第1+x行:每行两个数,表示ai喜欢的书的序号输出格式只有一个数:总方案数total。输入输出样例输入51 34 52 51 43 5输出2算法思路:一道变形的df

2020-10-06 22:15:56 496

原创 贪心--删数问题

贪心–删数问题题目大意:键盘输入一个高精度的正整数N(不超过250位) ,去掉其中任意k个数字后剩下的数字按原左右次序将组成一个新的正整数。编程对给定的N和k,寻找一种方案使得剩下的数字组成的新数最小。输入格式n (高精度的正整数)k(需要删除的数字个数)输出格式最后剩下的最小数。输入输出样例输入 输出175438 134...

2020-10-05 21:39:56 318

原创 DP--过河卒详解

DP–过河卒题目大意:卒A从( 0 , 0 )点要走到B点,其中有一个马,马所在的位置和马能到的位置为障碍点,不能通过。问走到B点一共有多少条路径。马的位置是固定不动的算法思路:我一开始想到dfs,结果只过了俩个点,后面三个超时了。后来想到用dp写。先把怎么走到B点的路径模拟一遍(M为马的位置,X为马所能到达的位置)A 0 0 0 0 0 00 0 X 0 X 0 00 X 0 0 0 X 00 0 0 M 0 0 00 X 0 0 0 X 00 0 X 0 X 0 00 0 0 0

2020-10-04 15:55:25 520 1

原创 DP--最大子段和

DP–最大子段和题目描述给出一个长度为 nn 的序列 aa,选出其中连续且非空的一段使得这段和最大。输入格式第一行是一个整数,表示序列的长度 n。第二行有 n 个整数,第 i 个整数表示序列的第 i 个数字 ai .输出格式输出一行一个整数表示答案。输入输出样例输入72 -4 3 -1 2 -4 3输出4算法思路通过题意,我们可以了解到:f[i]=max(f[i-1]+n[i],n[i])但是!f[n]的值并不一定是最终结果比如这个输入:5 233 233 -666

2020-10-03 16:27:27 365

原创 洛谷--小车问题

小车问题题目描述甲、乙两人同时从 A 地出发要尽快同时赶到 B 地。出发时 A 地有一辆小车,可是这辆小车除了驾驶员外只能带一人。已知甲、乙两人的步行速度一样,且小于车的速度。问:怎样利用小车才能使两人尽快同时到达。输入格式仅一行,三个实数,分别表示 AB 两地的距离 s,人的步行速度 a,车的速度 b。输出格式两人同时到达 B 地需要的最短时间,保留 6 位小数。输入输出样例输入 输出120 5 25 9.600000算法思路第一眼看上去就是一道应

2020-10-02 21:04:45 1193

原创 结构体排序--混合牛奶 Mixing Milk

结构体排序–混合牛奶 Mixing Milk题目描述由于乳制品产业利润很低,所以降低原材料(牛奶)价格就变得十分重要。帮助 Marry 乳业找到最优的牛奶采购方案。Marry 乳业从一些奶农手中采购牛奶,并且每一位奶农为乳制品加工企业提供的价格是不同的。此外,就像每头奶牛每天只能挤出固定数量的奶,每位奶农每天能提供的牛奶数量是一定的。每天 Marry 乳业可以从奶农手中采购到小于或者等于奶农最大产量的整数数量的牛奶。给出 Marry 乳业每天对牛奶的需求量,还有每位奶农提供的牛奶单价和产量。计算采购

2020-10-02 00:29:56 293

原创 DFS---八皇后问题

DFS—八皇后问题题目描述一个如下的 6×6 的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行、每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子。上面的布局可以用序列2 4 6 1 3 5 来描述,第 ii 个数字表示在第 ii 行的相应位置有一个棋子,如下:行号 1 2 3 4 5 6列号 2 4 6 1 3 5这只是棋子放置的一个解。请编一个程序找出所有棋子放置的解。并把它们以上面的序列方法输出,解按字典顺序排列。请输出前 3 个解。最后一行是解的总个数。输

2020-09-30 23:26:16 243

原创 最常用的排序---快速排序法

最常用的排序—快速排序法桶排序浪费空间,冒泡排序虽然解决了空间问题却在算法的执行效率上牺牲了很多,因此我们的快速排序法就诞生了,是不是挺这个名字就很高档呢?假设现在需要对"6,1,2,7,9,3,4,5,10,8"这十个数排序.我们需要先定义一个基准数,其实也就是一个作为参照的数,为了方便一般就把第一个数作为基准数,也就是我们的数字6.方法其实很简单:分别从初始序列“6,1,2,7,9,3,...

2020-01-13 16:32:18 3182

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除