二维

背包问题

让人想犯罪 __ 提交于 2019-11-28 07:21:34
简介 背包问题是一类动态规划问题的统称,分有多种子类型。 01背包 给定 \(n\) 个物品,每个物品都有自己的价值 \(v_i\) 和重量 \(w_i\) 。现有一个容量为 \(W\) 的背包,求最大价值。 很容易想到每种物品只有选或者不选,那么依次枚举即可。 考虑到还需要判断能否装下这些物品,所以还需要在转移的时候维护剩余容量。 因此设子状态 \(f[i][j]\) 为当前在第 \(i\) 个物品处,包括 \(i\) 在内已经选了重量为 \(j\) 的物品的最大价值。 状态转移方程为 \(f[i][j]=max(f[i-1][j-v_i]+w[i],f[i-1][j])\) 此时的空间复杂度为 \(O(NM)\) ,可以通过滚动数组优化到 \(O(M)\) 。 事实上,还可以进行进一步优化: 由于每一层 \(i\) 之间是互相独立的(也就是说 \(f[i][j]\) 不会被 \(f[i][k]\) 更新),所以我们可以优化掉第一维,但是此时需要修改第二维的枚举顺序。 根据状态转移方程可知,第二维大的状态是由第二维小的状态转移来的,由于我们优化掉了第一维,所以必须先遍历第二维大的状态,否则将会出现覆盖的情况。 所以第一维遍历仍然顺序,第二维遍历须改为逆序。 来源: https://www.cnblogs.com/ilverene/p/11398617.html

Python | 一行命令生成动态二维码

佐手、 提交于 2019-11-28 07:19:18
Python | 一行命令生成动态二维码 当我看到别人的二维码都做的这么炫酷的时候,我心动了! 我也想要一个能够吸引眼球的二维码,今天就带大家一起用 Python 来做一个炫酷的二维码! 首先要安装工具 myqr: pip install myqr 安装完成后,就可以在命令行中输入 myqr 查看下使用帮助: $ myqr --help 可以看出 myqr 有着丰富的参数支持,这里就不再一一解释,后面使用到会再细说。 简单用法 首先我们生成一个普通二维码: $ myqr "http://weixin.qq.com/r/PnUmPg7E8lONrUpd9yAs" line 16: mode: byte Succeed! Check out your 2-H QR-code: /mnt/d/code/Python/learn/myqr/qrcode.png 这时就会在当前目录下生成一个名称为 qrcode.png 的二维码。 如果 myqr 后面传入的是普通字符串,那么扫描后会现在字符串。若是一个网址,扫描后会自动跳转。 大家可以扫描下看看,是不是我们设置的字符串。 需要注意的时,这里的字符串不能指定中文,否则会抛出 ValueError('Wrong words! Make sure the characters are supported!') 的异常。 1、使用 -d

二维坐标变换

雨燕双飞 提交于 2019-11-28 06:04:07
平时开发程序,免不了要对图像做各种变换处理。有的时候变换可能比较复杂,比如平移之后又旋转,旋转之后又平移,又缩放。 直接用公式计算,不但复杂,而且效率低下。这时可以借助变换矩阵和矩阵乘法,将多个变换合成一个。 最后只要用一个矩阵对每个点做一次处理就可以得到想要的结果。 另外,矩阵乘法一般有硬件支持,比如3D 图形加速卡,处理3D变换中的大量矩阵运算,比普通CPU 要快上1000倍。 下面是3类基本的2D图形变换。 平移: 设某点向x方向移动 dx, y方向移动 dy ,[x,y]为变换前坐标, [X,Y]为变换后坐标。 则 X = x+dx; Y = y+dy; 以矩阵表示: 1 0 0 [X, Y, 1] = [x, y, 1][ 0 1 0 ] ; dx dy 1 1 0 0 0 1 0 即平移变换矩阵。 dx dy 1 旋转: 旋转相比平移稍稍复杂: 设某点与原点连线和X轴夹角为b度,以原点为圆心,逆时针转过a度 , 原点与该点连线长度为R, [x,y]为变换前坐标, [X,Y]为变换后坐标。 x = Rcos(b) ; y = Rsin(b); X = Rcos(a+b) = Rcosacosb - Rsinasinb = xcosa - ysina; (合角公式) Y = Rsin(a+b) = Rsinacosb + Rcosasinb = xsina + ycosa

Monitor 二维差分入门学习

a 夏天 提交于 2019-11-28 05:48:19
Monitor 二维差分入门学习 题意 小腾有 \(n*m\) 的田地,但是有小偷来偷东西,在一片矩形区域上,有一部分区域是监控可以覆盖到的,这部分区域由一个或多个包含于该矩形区域的小矩形构成;现在给你另一个包含在该矩形区域的小矩形A,问你这个小矩形能否被监控完全覆盖。 解题思路 这个题可以模拟做,就是开一个二维数组,把能监控的区域标记为1,否者就是0,然后在给的小矩形内看看这里面1的个数已不是等于小矩形的面积,是的话就是YES,否者就是NO。但是这个方法会超时。我就无能为力了,这时旁白同学说这个题得用二维差分来做(还没学过),神奇,我就找了个博客,有位大佬正好写了这道题,而且很详细,易懂, 点我进来 。 这里我就补充一下自己看过这个博客后的一点见解。 这里建立二维数组,坐标不用像大佬所说的那样转换,就正常那样就行,二维数组可以正常表示,不用把左下改为左上,右上改为右下,这里可能是那位作者想错了。 这里需要使用vector来建立二维数组,要不然会爆,而这里如何用vector来建立二维数组我还真不会,下面代码里见(这个也很重要)。 感觉差分就是树状数组的简洁版。 代码实现 #include<cstdio> #include<cstring> #include<algorithm> #include<vector> using namespace std; const int maxn

PCA的数学原理

↘锁芯ラ 提交于 2019-11-28 04:05:06
原帖地址: http://blog.codinglabs.org/articles/pca-tutorial.html PCA(Principal Component Analysis)是一种常用的数据分析方法。PCA通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取数据的主要特征分量,常用于高维数据的降维。网上关于PCA的文章有很多,但是大多数只描述了PCA的分析过程,而没有讲述其中的原理。这篇文章的目的是介绍PCA的基本数学原理,帮助读者了解PCA的工作机制是什么。 当然我并不打算把文章写成纯数学文章,而是希望用直观和易懂的方式叙述PCA的数学原理,所以整个文章不会引入严格的数学推导。希望读者在看完这篇文章后能更好的明白PCA的工作原理。 数据的向量表示及降维问题 一般情况下,在数据挖掘和机器学习中,数据被表示为向量。例如某个淘宝店2012年全年的流量及交易情况可以看成一组记录的集合,其中每一天的数据是一条记录,格式如下: (日期, 浏览量, 访客数, 下单数, 成交数, 成交金额) 其中“日期”是一个记录标志而非度量值,而数据挖掘关心的大多是度量值,因此如果我们忽略日期这个字段后,我们得到一组记录,每条记录可以被表示为一个五维向量,其中一条看起来大约是这个样子: 注意这里我用了转置,因为习惯上使用列向量表示一条记录(后面会看到原因),本文后面也会遵循这个准则

h5-transform二维变换

时光怂恿深爱的人放手 提交于 2019-11-28 03:48:13
1.html 1 <div class="translate">1</div> 2 <div class="scale">2</div> 3 <div class="rotate">3</div> 4 <div class="skew">4</div> 2.css和介绍 1 <style> 2 *{ 3 margin: 0; 4 padding: 0; 5 } 6 .translate,.scale,.rotate,.skew{ 7 width: 100px; 8 height: 100px; 9 background-color: #ff1a23; 10 margin-left: 200px; 11 transition: transform 2s; 12 margin-bottom: 20px; 13 } 14 /*移动:translate */ 15 .translate:active{ 16 /*使用transform实现元素的移动 a.移动是参照元素的左上角 b.执行完毕之后会恢复到原始状态 17 1.如果只有一个参数就代表x方向 18 2.如果两个参数就代表x/y方向*/ 19 /*transform: translate(100px);*/ 20 /*transform: translate(200px,100px);*/ 21 /*添加水平方向或处置方向的移动*/

Leetcode 74. 搜索二维矩阵

限于喜欢 提交于 2019-11-28 03:45:54
https://leetcode-cn.com/problems/search-a-2d-matrix/submissions/ 思路: 由于矩阵的每行都是递增的,且每行的首元素都大于上一行的尾部元素,所以把矩阵由二维数组变成一个一维数组的话是有序的,所以是二分查找。变成一维数组并不是真的去把矩阵储存到一个一维数组里面去,而是通过坐标转化方式去投影到一维数组里面 class Solution { public: bool searchMatrix(vector<vector<int> >& matrix, int target) { int rows = matrix.size();//求行数 if(rows == 0) return false; int columns = matrix[0].size();//求列数 int start = 0; int end = rows * columns -1;//在一维数组时候头部和尾部指针 while(start <= end) { int mid = start + ((end - start )>>1); //因为mid = i * columns + j (i, J )是二维数组下标,mid是一维数组对应下标 //数学公式就是mid / columns = i...j if(matrix[mid / columns][mid

基于的DCT水印算法实现

久未见 提交于 2019-11-27 23:20:57
上学期帮同校本科的同学做了毕业设计的实验部分,用MATLAB实现DCT水印算法,并且包含了攻击测试。先讲一个大体概念,然后放出具体代码。 一、DCT DCT(离散余弦变换),这里只以二维DCT为例。 信号经过DCT后,从空间域变换到频域。是一种正交变换的方法。是图像处理中应用即为广泛的傅氏变换中一种特殊的情况(被展开函数是实偶函数,再离散化,即为离散余弦变换)。 同傅氏变换一样,有正反两种变换。 正DCT:从空间域变为频域。反DCT:从频域变为空间域。具体公式如下。 正DCT: 其中: 反DCT *f(x,y)是空间采样值,简单说,就是点(x,y)的像素值。F(u,v)是频域采样值。* 二、水印算法 水印,就好像给图片盖章,注明所有权。 具体的概念不多讲,若是想深入了解,可以自行百度。 %图片加水印,提取出水印 %林多 %%% %%% %%% %%% % M = 256 ; %原图像长度 N = 32 ; %水印图像长度 K = 8 ; % 8 x8的分块 I =zeros( M , M );%创建一个 MxM 矩阵,元素全是 0 J =zeros( N , N ); BLOCK = zeros( K , K ); %显示原图像 subplot( 5 , 2 , 1 );%显示多幅图像,在第一个位置显示 I =imread( '23.bmp' );%将 23 .bmp读入 I 中

无人驾驶技术——雷达CFAR-代码实现

梦想与她 提交于 2019-11-27 22:02:57
文章目录 MATLAB实现二维CFAR 效果图 MATLAB实现二维CFAR步骤如下: 实现代码 无人驾驶技术——雷达CFAR-代码实现 MATLAB实现二维CFAR 本节目标是实现二维CFAR的雷达虚警率计算。CFAR的介绍可参考文章 无人驾驶——雷达Clutter, CFAR,AoA 效果图 来源: https://blog.csdn.net/xiao_lxl/article/details/97112506

9502CAD相关操作

﹥>﹥吖頭↗ 提交于 2019-11-27 19:38:07
第一章 初识CAD 1.1 CAD能干什么 (1)绘制机械图/建筑图/装修图等二维复杂工程图的不二之选。二维设计软件的王者。 (2)CAD可以绘制平面图、轴测图(二维线框表示三维图形)、立体图(三维图形)。 (3)只要从事机械、建筑、家装、电子等行业,无论是技术人员还是一线工人,都离不开cad。(推荐CAD2010、2014、2018版本) 1.2 CAD2018新特性 1、支持高分辨率(4K)监视器,且专门针对W10做了优化。 2、PDF输入功能更强大,可将CAD导出的PDF里的几何图形格式的文字重新转化为shx。 3、视觉体验:图案填充显示和性能得到增强;受支持图形卡的反走样和高质量图形设置现在可彼此独立控制。 4、外部参照路径已设置为“相对”,功能更强大。 5、DWG格式已更新,改善了打开和保存操作的效率。 6、官网更新介绍:www.autodesk.com.cn/products 1.3 CAD界面及编辑 (1)界面分为快速访问工具栏、开始工具、工具栏、绘图区、命令栏、辅助状态栏。 (2)工具栏上右键可以对分区进行显示和隐藏设置。选项卡右边小三角,可让工具栏最小化。 (3)鼠标在工具图标上停留,可以弹出相应帮助。 (4)点击辅助状态栏里的齿轮图标可以切换工作空间,有恢复所有界面设置的作用。 第二章 CAD基础操作 2.1 CAD新建打开及保存 (1)新建文件有多种方式