自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 华为8_26机试

* 华为8.26第一题:位转换:没有任何技巧,纯c++代码* 题目描述:题目中提示,每个数字的二进制为32bit)* 1.输入n个无符号整数* 2.给每个数字增加干扰措施。* 2.1 干扰1:让每个整数的二进制位置上的数字交换,即(2*i)与(2*i+1)交换,i=0:15。以下讨论说的都是二进制数。* 2.2 干扰2:假设三个数a,b,c,a(XXXXXXXXXXa2a1)的最后两位弹出a1,a2;a1,a2进入b的头,同时b的最后两位b1b2弹出,此时b变为(a2a1XXXXXXXXXXXX)

2020-08-28 16:27:16 580

原创 背包9讲_求背包问题的方案

0~1背包问题的方案主要思路:先把所有的状态求出来,再反推我们的方案#include <iostream>#include <algorithm>using namespace std;const int MAXN =1005;int w[MAXN]; // 价值int v[MAXN]; // 物品所占体积int f[MAXN]; // f[i][j]背包容量为j下可选前i个物品的最大价值(背包不一定被装满)int x[MAXN];int main(

2020-08-28 14:02:22 114

原创 背包9讲_背包问题求方案数

根据f[j]初始化不同会有两种解法即f[]状态的定义不同,会有不同的状态转移方程;具体参考acwing我们采用与0~1背包相似的状态方程定义方式:f[i][j]表示从前i个物品中选择,体积不超过j的价值,g[i][j]表示从前i个物品中选择体积不超过j的最大价值对应方案数先初始化所有的 cnt[i]为 1,因为背包里什么也不装也是一种方案外层循环 n次,每次读入新物品的 v,w求出装新物品时的总价值,与不装新物品时作对比如果装新物品的方案总价值更大,那么用 f[j−v]+w来更新 f[j

2020-08-27 21:30:40 590

原创 背包9讲_分组背包问题

主要思路:1.先把每组看成一个整体,把这个整体当成0~1b背包问题来处理2.在整体选择下每组的物体进行一个循环,选择每组的一个最优的结果背包问题:for 物品种类for 背包容量for 选择策略:1. 对于0~1背包就是选或者不选(若一维优化:背包容量倒序)2. 对于完全背包就是选或者不选(若一维优化:背包容量不需倒序)3. 对于多重背包问题:就是二进制拆成基类物品,再对基类物品进行0~1选择4. 对于分组背包问题:在选择策略中就是,每组内的物品进行一个循环,选择/不选择 最优的一个物.

2020-08-27 20:28:39 883

原创 背包9讲_二维费用的背包问题

主要思路:在0~1背包的基础上增加一个重量限制维度参考acwing#include <iostream>#include <cstring>#include <algorithm>#include <vector>using namespace std;const int N=110;int n,v,m; // 物品件数,背包体积,背包最大承重int f[N][N];int main(){ int v,kg,w; cin&gt.

2020-08-27 15:23:38 137

原创 背包9讲_混合背包问题

主要思路:前三种背包处理的混合型号01 背包则直接放入数据容器中多重背包则化解成 01 背包 放入数据容器中(见多重背包II习题 进行二进制优化)完全背包也直接放入数据容器中此刻数据容器vector[HTML_REMOVED] things;中就只有01背包和完全背包 那么就进行遍历处理参考acwing题解#include <iostream>#include <cstring>#include <algorithm>#include <v.

2020-08-27 15:00:46 129

原创 背包9讲_多重背包问题

主要思路:f[i][j]=max(f[i-1][j-k*v[i]]+k*w[i]) (0=<k<=p)与完全背包同==,只是k不是固定,所以没法优化掉k根据当前的动态规划方程写代码:// 多重背包 未优化前#include <iostream>#include <algorithm>const int MAXN = 1005;int w[MAXN]; // 重量int v[MAXN]; // 价值int s[MAXN]; // 个数int.

2020-08-27 14:17:12 119

原创 背包9讲_完全背包问题

主要思路:每一件物品可以选k次(k>=0)动态转移方程如下:代码(二维未优化):// 完全背包 未优化前#include <iostream>#include <algorithm>const int MAXN = 1005;int w[MAXN]; // 价值int v[MAXN]; // 重量int f[MAXN][MAXN]; // f[i][j], j重量下前i个物品的最大价值int main(){ int n,m; ci.

2020-08-27 10:59:34 83

原创 背包9讲_0-1背包问题

主要思路:优化成一维空间,当f[i-1][j-w[i]]->f[j-w[i]]需要采取倒序参考徐凤老师讲解参考acwing讲解// 0-1背包 未优化前#include <iostream>#include <algorithm>const int MAXN = 1005;int w[MAXN]; // 价值int v[MAXN]; // 重量int f[MAXN][MAXN]; // f[i][j], j重量下前i个物品的最大价值int main.

2020-08-27 10:36:52 199

原创 字符串处理-DP问题

72.编辑距离全文引用Labuladong1.思路前文「最长公共子序列」说过,解决两个字符串的动态规划问题,一般都是用两个指针 i,j 分别指向两个字符串的最后,然后一步步往前走,缩小问题的规模。设两个字符串分别为 “rad” 和 “apple”,为了把 s1 变成 s2,算法会这样进行:当i==j时,可以skip当i!=j时,可以insert/replace/delete还有一个很容易处理的情况:就是 j 走完 s2 时,如果 i 还没走完 s1,那么只能用删除操作把 s1 缩短为

2020-08-24 21:17:05 483

原创 背包问题

给你一个可装载重量为W的背包和N个物品,每个物品有重量和价值两个属性。其中第i个物品的重量为wt[i],价值为val[i],现在让你用这个背包装物品,最多能装的价值是多少?举个简单的例子,输入如下:N=3, W=4;Wt=[2, 1,3]val=[4, 2, 3]动态规划标准套路1. 明确状态和选择只要给定几个可选物品和一个背包的容量限制,就形成了一个背包问题所以状态有两个,就是「背包的容量」和「可选择的物品」再说选择,也很容易想到啊,对于每件物品,你能选择什么?选择就是「装进背包」.

2020-08-24 11:34:32 382

原创 华为机试——数字处理专题

HJ5进制转换(多组同时输入 )整数的范围:int 占4个字节范围为:-2^31 ~ 2^31-1longlong占8个字节 -2^63 ~ 2^63-1HJ10字符个数统计关于空字符’\n’ ; 空格字符’ ’ ; 0字符’0’#include <iostream>#include <unordered_map>//#include <string.h>using namespace std;int main(){ // 统计个数

2020-08-21 21:31:56 261

原创 华为机试—字符串处理专题

HJ1计算字符串最后一个单词的长度,单词以空格隔开主要考察:gets的输入#include <iostream>#include <string.h>using namespace std;int main(){ char str[5001]; // 题目要求,长度小于5000 // 输入字符串 //cin >> str; // 错误遇到空格不读了 // cin不接受空格和TAB等符号的输入,遇到这些键,字符串会终止,而g

2020-08-21 12:47:00 1494

原创 滑动窗口技巧

76.最小覆盖子串全文参考Labuladong#include <unordered_map>/*滑动窗口算法框架*/void slidingWindow(string s, string t){ unordered_map<char, int> need, window; for (char c : t) need[t]++; int left = 0, right = 0; int valid = 0; while (right <

2020-08-19 22:01:13 169

原创 动态规划四—打家劫舍问题

一、理解题意解决动态规划问题就是找「状态」和「选择」,仅此而已。假想你就是这个专业强盗,从左到右走过这一排房子,在每间房子前都有两种选择:抢或者不抢。如果你抢了这间房子,那么你肯定不能抢相邻的下一间房子了,只能从下下间房子开始做选择。如果你不抢这间房子,那么你可以走到下一间房子前,继续做选择。在两个选择中,每次都选更大的结果,最后得到的就是最多能抢到的 money:// 主函数int rob(vector<int>& nums){ return dfs(nums, 0).

2020-08-18 20:04:05 313

原创 动态规划三-----一个方法团灭6道股票问题

int maxProfit(vector<int>& prices){ if(prices.empty()) return 0; int s1=-prices[0], s2 = INT_MIN, S3=INT_MIN, S4=INT_MIN; for(int i =1; i<prices.size(); ++i){ s1=max(s1, -prices[i]); s2=max(s2, s1+prices[i]); s3=max(s3, s2-prices[i]

2020-08-16 22:05:22 141

原创 CV与CTRV模型在IMM模型交互的细节

2020-08-14 20:18:13 781

原创 卡尔曼滤波与目标跟踪(由cv模型的kf推理到CTRV模型的radar与lidar))(二)

引用知乎陈光引用AdamShan背景知识车辆运动模型:直接上图了扩展卡尔曼正文毫米波雷达的数据毫米波雷达观察世界的方式与激光雷达有所不同。激光雷达测量的原理是光的直线传播,因此在测量时能直接获得障碍物在笛卡尔坐标系下x方向、y方向和z方向上的距离;而毫米波雷达的原理是多普勒效应,它所测量的数据都是在极坐标系下的。如下图所示,毫米波雷达能够测量障碍物在极坐标下离雷达的距离ρ、方向角ϕ以及距离的变化率(径向速度)ρ’,如下图所示。一,初始化初始化扩展卡尔曼滤波器时需要输入一

2020-08-11 22:34:21 2374

原创 卡尔曼滤波与目标跟踪(由cv模型的kf推理到CTRV模型的radar与lidar))(一)

引用AdamShan引用知乎陈光基于cv模型的行人状态预测/卡尔曼滤波与目标追踪卡尔曼的理论1.1 初始化我们认为小车在第1秒时的状态x与测量值z相等1.2 预测(Prediction)完成初始化后,我们开始写Prediction部分的代码。首先是公式:...

2020-08-11 21:18:06 3063

原创 p35_c++单目运算符重载为成员函数(郑莉老师)前置与后置运算符的区别_右值与左值

在一开始学习基本的算术运算时,有很多同学存下了这样的疑惑:前置++和后置++到底是怎么实现这个差别呢?而且很多同学也分不清楚,他到底差别在哪?# 重载前置++和后置++为时钟类成员函数#include <iostream>using namespace std;class Clock{// 时钟类定义public: Clock(int hour=0, int minute=0; int second=0); void showTime() const; // 前置单目运算.

2020-08-10 15:20:49 324

原创 动态规划-题型二

全文参考:labuladong动态规划之博弈问题877.石子游戏解决博弈问题的动态规划通用思路本文就借石头游戏来讲讲「假设两个人都足够聪明,最后谁会获胜」这一类问题该如何用动态规划算法解决。博弈类问题的套路都差不多,下文举例讲解,其核心思路是在二维 dp 的基础上使用元组分别存储两个人的博弈结果。掌握了这个技巧以后,别人再问你什么俩海盗分宝石,俩人拿***的问题,你就告诉别人:我懒得想,直接给你写个算法算一下得了。我们石头游戏改的更具有一般性:你和你的朋友面前有一排石头堆,用一个数组 pile

2020-08-09 20:03:46 742

原创 动态规划—题型

300.最长上升子序列给定一个无序的整数数组,找到其中最长上升子序列的长度。输入: [10,9,2,5,3,7,101,18]输出: 4 解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。说明:可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。你算法的时间复杂度应该为 O(n2) 。主要思路:上升的定义,nums[i]<nums[j],子序列的定义:不一定要求你连续最值:联想到最优子结构,dp[i]可以通过dp[i-1]来求动态规划联想到,状

2020-08-04 14:49:21 329

原创 动态规划答疑篇

引用: [labuladong](https://labuladong.gitbook.io/algo/dong-tai-gui-hua-xi-lie/targetsum)dp问题有两个特点:1. 重叠子问题2. 最优子结构一、最优子结构详解「最优子结构」是某些问题的一种特定性质,并不是动态规划问题专有的。也就是说,很多问题其实都具有最优子结构,只是其中大部分不具有重叠子问题,所以我们不把它们归为动态规划系列问题而已。我先举个很容易理解的例子:假设你们学校有 10 个班,你已经计算出了每个班的

2020-08-03 21:32:31 169

原创 动态规划解题套路框架

参考:labuladong一、斐波那契数列观察递归树,很明显发现了算法低效的原因:存在大量重复计算,比如 f(18) 被计算了两次,而且你可以看到,以 f(18) 为根的这个递归树体量巨大,多算一遍,会耗费巨大的时间。更何况,还不止 f(18) 这一个节点被重复计算,所以这个算法及其低效。这就是动态规划问题的第一个性质:重叠子问题。下面,我们想办法解决这个问题# 1.暴力递归int fib(int N){ if(N==1 || N==2){ return fib(N-1)+fib

2020-08-02 17:47:42 778

原创 贪心算法_区间调度问题

引用:[labuladong](https://labuladong.gitbook.io/algo/dong-tai-gui-hua-xi-lie/tan-xin-suan-fa-zhi-qu-jian-tiao-du-wen-ti)一、问题概述言归正传,本文解决一个很经典的贪心算法问题 Interval Scheduling(区间调度问题)。给你很多形如 [start, end] 的闭区间,请你设计一个算法,算出这些区间中最多有几个互不相交的区间。二、贪心解法:1. 从区间集合 intvs

2020-08-02 10:16:30 652

原创 刷题的细节知识点

如何判断括号的有效性labuladong

2020-08-01 20:21:06 110

空空如也

空空如也

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

TA关注的人

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