数学
文章平均质量分 94
编程题目常用的数学知识
AkagiSenpai
哼 ~ 哼 啊啊啊啊啊啊啊啊啊
▃▆█▇▄▖
▟◤▖ ◥█▎
◢◤ ▐ ▐▉
▗◤ ▂ ▗▖ ▕█▎
◤ ▗▅▖◥▄ ▀◣ █▊
▐ ▕▎◥▖◣◤ ◢██
█◣ ◥▅█▀ ▐██◤
▐█▙▂ ◢██◤
◥██◣ ◢▄◤
▀██▅▇▀
展开
-
图形学:用十五分钟带您推导模型,视图和投影变换矩阵
目录前言模型矩阵缩放旋转平移视图矩阵相机坐标系基底标架旋转标架平移投影矩阵正交投影透视投影前言明天考图形学了,推一下矩阵,顺便练下 Latex数学公式警告⚠模型矩阵模型矩阵负责将物体进行三个变换:平移,选择和缩放。此外,我们认为原坐标为 x,变换后则得到 x’ 坐标(接下来的变换都用该形式表示),即:x→x′x \rightarrow x'x→x′话不多说,开冲!缩放缩放矩阵非常简单,各个坐标直接乘以对应的缩放因子即可:S(sx,sy,sz)=[sx0000sy0000sz0原创 2021-01-07 23:09:14 · 1592 阅读 · 4 评论 -
证明:凸多边形裁剪一次最多能够新增一个凸多边形
前言今天上课老师又布置证明作业。。。来记录一下。题目是这样子的:有一凸多边形,经过一次裁剪,要证明它最多能够获得一个新增的凸多边形。如图:裁剪一个非凸多边形一次,能够获得多个新增的多边形(图中为 3 个):那么一个凸多边形,裁剪一次,能够获得多个多边形吗?答案是否定的,请看证明。引理为了证明它,我们引入两个引理:在欧氏空间中凸集的定义如下:凸集 {????} 中的两点连线组成的线段都在 {????} 中。凸多边形的定义为 “内部为凸集的简单多边形”,所以凸多边形内任意两点的连线 都应原创 2020-11-28 14:19:37 · 660 阅读 · 0 评论 -
逆序对 归并排序求法 分治思想
逆序对介绍如果存在正整数 i, j 使得 1 ≤ i < j ≤ n 而且 A[i] > A[j],则<A[i], A[j]> 这个有序对称为 A 的一个逆序对,也称作逆序数。求解一个数组中逆序对个数其实就是求下标小的大数,那么二话不说先来暴力,暴力显然是O(n2),8太行int unseq(vector<int> &nums){ int...原创 2020-03-25 13:13:31 · 355 阅读 · 0 评论 -
矩阵前缀和应用2:求解(x, y)左上方k*k区域的最大加和 动态规划
【矩阵前缀和:常数时间求一子矩阵的加和】如图,给定一点,要找到这点(包括)左上方的子区域内,使k*k区域所有数字加和最大的矩阵,如图 k=2对于x,y左上方的子矩阵中的某一k*k区域,这个区域只能有四种状态:k*k区域右边缘落在 (x, y) 正上方,问题转换为求解 (x-1, y) 左上方的最大加和的 k*k区域k*k区域下边缘落在 (x, y) 正左方,问题转化为求解 (x, y-...原创 2020-03-21 12:20:16 · 359 阅读 · 0 评论 -
矩阵前缀和应用1:最大和子矩阵 前缀和+动态规划
关于矩阵前缀和【矩阵前缀和:常数时间求一子矩阵的加和】给一个m*n的矩阵,找到一个子矩阵使其里面的数字加和最大,输出这个最大值首先想到暴力算法:枚举矩阵行列,复杂度O(n4),然后对每个枚举的子矩阵,计算矩阵内的加和O(n2),总复杂度O(n6)通过前缀和,可以把计算加和的时间变为O(1),总复杂度O(n4),还是有点大优化:引入动态规划中的最大子区间问题【类似的题目】已知一个一维数...原创 2020-03-20 15:43:22 · 363 阅读 · 0 评论 -
矩阵前缀和:常数时间求一子矩阵的加和
关于一维数组的前缀和【差分与前缀和,数组的常见预处理技巧】一维数组的前缀和实现了常数时间内求取一个区间的加和,同样地,二维数组的前缀和也是在常数时间内求取某个区间的所有元素加和如果有一维数组a(下标从1开始),他的前缀和数组为sum(sum[0] = 0)我们轻易的知道:区间[l, r]的元素加和 = sum[r]-sum[l-1]同样的,一个矩阵的子矩阵,假设有 r 行 c 列,那么其实...原创 2020-03-20 13:40:49 · 435 阅读 · 0 评论 -
蓝桥杯:试题 算法训练 星际交流 康托展开
题目资源限制时间限制:1.0s 内存限制:256.0MB问题描述 人类终于登上了火星的土地并且见到了神秘的火星人。人类和火星人都无法理解对方的语言,但是我们的科学家发明了一种用数字交流的方法。这种交流方法是这样 的,首先,火星人把一个非常大的数字告诉人类科学家,科学家破解这个数字的含义后,再把一个很小的数字加到这个大数上面,把结果告诉火星人,作为人类的回 答。 火星人用一种非常简...原创 2020-03-18 19:53:45 · 275 阅读 · 0 评论 -
LeetCode:60 第k个排列 全排列与康托展开
给出集合 [1,2,3,…,n],其所有元素共有 n! 种排列。按大小顺序列出所有排列情况,并一一标记,当 n = 3 时, 所有排列如下:“123”“132”“213”“231”“312”“321”给定 n 和 k,返回第 k 个排列。说明:给定 n 的范围是 [1, 9]。给定 k 的范围是[1, n!]。示例 1:输入: n = 3, k = 3输出: “213...原创 2020-03-01 15:44:28 · 337 阅读 · 0 评论 -
蓝桥杯:包子凑数 gcd+dp
题目描述思路对于是否是inf的判断:根据给定的数组所有数的最大公约数来判断:如果最大公约数x不为1,那么说明x整数倍的,都凑不出来,有无限个求n个数的最大公约数:动态规划(递归求下标0到x的所有数字的最大公约数,问题转化为:求【0到x-1下标的所有数字最大公约数】与【下标为x的数】的最大公约数对于判断能不能凑出来,使用动态规划值i能够被凑出来,问题转化为数值 i-nums[j]能...原创 2020-02-29 19:13:07 · 250 阅读 · 0 评论 -
全排列序列的生成 非递归
全排列序列的生成 非递归已知一个排序好的序列a[],要生成以这个序列的全排列,一般我们会dfs,但是其实有比较简单的非递归方法从右往左找第一个下标l,使得a[l] < a[l+1]从右往左找第一个下标r,使得a[r] > a[l]交换下标l, r对应的元素将下标 l+1 ~ 结尾 的序列翻转代码#include <iostream>#include &...原创 2020-02-27 20:59:40 · 200 阅读 · 0 评论 -
LeetCode:90 子集 II 动态规划思想
题目描述给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: [1,2,2]输出:[ [2], [1], [1,2,2], [2,2], [1,2], []]来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/subsets-ii著...原创 2020-02-27 00:14:24 · 93 阅读 · 0 评论 -
LeetCode:78 子集 动态规划思想
给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/subsets著作权归领扣网络所有。商业...原创 2020-02-26 18:55:36 · 188 阅读 · 0 评论 -
LeetCode:877 石子游戏 动态规划 / 巧取
题目描述亚历克斯和李用几堆石子在做游戏。偶数堆石子排成一行,每堆都有正整数颗石子 piles[i] 。游戏以谁手中的石子最多来决出胜负。石子的总数是奇数,所以没有平局。亚历克斯和李轮流进行,亚历克斯先开始。 每回合,玩家从行的开始或结束处取走整堆石头。 这种情况一直持续到没有更多的石子堆为止,此时手中石子最多的玩家获胜。假设亚历克斯和李都发挥出最佳水平,当亚历克斯赢得比赛时返回 true ...原创 2020-02-24 16:36:52 · 409 阅读 · 0 评论 -
LeetCode:628 三个数最大乘积 贪心
题目描述给定一个整型数组,在数组中找出由三个数组成的最大乘积,并输出这个乘积。示例 1:输入: [1,2,3]输出: 6示例 2:输入: [1,2,3,4]输出: 24注意:给定的整型数组长度范围是[3,104],数组中所有的元素范围是[-1000, 1000]。输入的数组中任意三个数的乘积不会超出32位有符号整数的范围。来源:力扣(LeetCode)链接:https:/...原创 2020-02-24 15:18:50 · 511 阅读 · 0 评论 -
二分查找,平方根及越界处理
思路求一个数的平方根,可以用牛顿迭代法,也可以直接梯度下降 ,也可以用二分搜索n的根号一定是实数,实数是有序递增的,区间有序因为n的根号肯定介于0 ~ n之间,区间上下界确定每次可以比较大小 (sqrt*sqrt > n ?),区间递推关系确定自然让我们想到用二分的方法求解我们确定区间上下限:l, r l=0, r=n,区间中点mid就是我们要查找的值,mid=(l+r)/2...原创 2020-02-19 15:45:47 · 757 阅读 · 0 评论 -
LeetCode:231 2的幂? 位运算
给定一个整数,编写一个函数来判断它是否是 2 的幂次方。示例 1:输入: 1输出: true解释: 20 = 1示例 2:输入: 16输出: true解释: 24 = 16示例 3:输入: 218输出: false来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/power-of-two著作权归领扣网络所有。商业转载...原创 2020-02-15 17:05:52 · 106 阅读 · 0 评论 -
差分与前缀和,数组的常见预处理技巧
差分与前缀和,数组的常见预处理技巧约定:给定数组 a[i] ,i 范围 [1 ~ n],a[0] = 0;差分定义:差分数组delta[i]delta[i] = a[i] = a[i-1];性质:差分数组的前n项和是原数组a[i] = delta[1] + delta[2] + ... + delta[i];对原数组a整个区间的统一改动,(比如某个区间内同时加上或...原创 2020-02-13 15:52:57 · 738 阅读 · 0 评论 -
LeetCode:136 只出现一次的数字 异或解法
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/single...原创 2020-02-09 15:27:02 · 132 阅读 · 0 评论 -
快速幂 递归实现
快速幂 递归实现计算一个double的整数次方,有很多种方法可以使用一个循环,乘n次,时间复杂度为O(n)快速幂可以实现复杂度为O(log2n)求取浮点数x的n(整数)次方,可以转换为求取x的n/2(整除)次方,因为不论n是奇数还是偶数,都有xn = xn/2 * xn/2 (n为偶数)xn = xn/2 * xn/2 * x (n为奇数)例:求取28一般朴素算法是:...原创 2020-02-04 14:37:51 · 1471 阅读 · 1 评论 -
康托展开式与其逆运算的实现
康托展开式与其逆运算的实现【C++头algorithm函数next_permutation全排列函数传送门】【康托展开百度百科传送门】康托展开式,就是将一个全排列序列唯一地映射到一个整数上的一种公式以上式的长度为3的全排列序列为例X = a1*2! + a2*1! + a3*0!确定 a1, a2, a3,即可确定映射后的值,假设当前排列为 2 3 1ai的值是当前全排列序...原创 2020-02-03 15:34:55 · 342 阅读 · 0 评论 -
蓝桥杯:等差数列(求最短数列长度)最大公约数解法
【不知道有没有问题的动态规划解法】问题描述数学老师给小明出了一道等差数列求和的题目。但是粗心的小明忘记了一部分的数列,只记得其中 N 个整数。现在给出这 N 个整数,小明想知道包含这 N 个整数的最短的等差数列有几项?输入格式输入的第一行包含一个整数 N。第二行包含 N 个整数 A1; A2; · · · ; AN。 (注意 A1 ∼ AN 并不一定是按等差数列中的顺序给出)输出格式...原创 2020-02-02 14:50:39 · 845 阅读 · 0 评论 -
C++ next_permutation 全排列 函数的简单使用
C++ next_permutation 全排列 函数的简单使用/*function : 将指定地址的元素做下一种全排列param 1 : 全排列的容器起始地址param 2 : 全排列的容器结束地址return : 是否还存在全排列的情况*/next_permutation(a, a+n);因为操作是做下一种全排列,比如123会变成132,这样会导致第一种情况无法输出,...原创 2020-02-01 15:20:22 · 209 阅读 · 2 评论 -
最大公因数与最小公倍数 模板
最大公约数使用【辗转相除法】求取最小公倍数则是【两数乘积】除【两数的最大公约数】辗转相除法假如需要求 1997 和 615 两个正整数的最大公约数,用欧几里德算法,是这样进行的:可以递归地定义求取a,b最小公约数的步骤用大数a除小数b,得到余数c用a除以余数c,得到新的小数 b1将结果转化为求取 b 与 b1 的最小公约数回到1递归边界条件:b为0,此时不能够除以一个为0的数...原创 2020-02-01 14:59:13 · 359 阅读 · 0 评论