- 博客(11)
- 收藏
- 关注
原创 Matlab模拟光粒攻击前后的三体运动
数模国赛将至,但是我的matlab水平依旧很烂,三体倒是全都看完了。我于是想到:对三体中感兴趣的情节(光粒攻击前后的三体运动)建模,然后用matlab实现出来,我不就既可以练习建模,又可以满足我贪玩的心嘛!于是说干就干!!模型的原理很简单:牛顿定理和万有引力公式,然后使用二阶差分的数学建模方法进行数值求解。模拟光粒攻击:相当于将被攻击对象的质量减为0。对外部无作用力。需要特判的情况是:当两个球体相距很近时,需要将两个球体合二为一。代码如下:% 按A键清理红色星% 按G键清理绿色星%
2021-08-23 19:29:34
300
原创 模拟硬件计算二进制除法
java代码:import java.util.Scanner;public class Divide { final static int size=32;//size位二进制数除法 static long upper=(long) Math.pow(2, size-1)-1; static long lower=(long) Math.pow(2, size-1)*(-1); static long fullone=(long) Math.pow(2, 2*size)-1; publi
2021-04-20 17:55:06
192
原创 汉诺塔递归、非递归实现——递归与栈模拟递归的理解
大一学习递归总是想要弄明白递归程序具体的运行步骤,但无奈一次次“迷失”在递归的迷宫中。。。递归的精妙之处不在于它能用少量的代码来实现十分复杂的功能,而在于它能表达出“分形”结构。在数学上的分形我就不展开说了,在编程上的分形简单来说,就是想像一个任务由许许多多工人完成,他们只会机械的做事,自己就是其中的一个最普通的工人,将自己要做的事用代码表达出来。就汉诺塔来说,自己负责搬运第n块:先让其他人将自己上面的n-1块从start柱,搬到mid柱,经过end柱。自己将第n块从start柱,搬到end柱,
2021-04-07 12:06:08
317
原创 滑动窗口——单调队列
滑动窗口给定一个大小为 n≤106的数组。有一个大小为 k的滑动窗口,它从数组的最左边移动到最右边。你只能在窗口中看到 k个数字。每次滑动窗口向右移动一个位置。以下是一个例子:该数组为 [1 3 -1 -3 5 3 6 7],k为 3。窗口位置 最小值 最大值[1 3 -1] -3 5 3 6 7 -1 31 [3 -1 -3] 5 3 6 7 -3 31 3 [-1 -3 5] 3 6 7 -3 51 3 -1 [-3 5 3] 6 7 -3
2021-03-31 11:22:16
274
原创 最长上升子序列
dp: O(n^2)状态:f[i]:i之前的序列中(包含i)以i结尾的最长上升子序列的长度。状态转移:当前状态从前面所有状态中继承一个最优的合法状态。合法状态:当前状态的数值大于所选状态的数值。最优:长度最长。状态转移方程:f[i]=max(f[j]) (0<j<i && a[j]<a[i])贪心+二分如何进一步优化呢?如何使当前最长的上升子序列变长呢?变长有两种办法:1> 在原本最长序列的末尾添加一个。2> 不断更新,原序列中的..
2021-03-29 10:17:13
85
原创 KMP初体验
上课时听老师讲云里雾里,然后又被自己的思考被绕晕,最后按照算法设定画图(一定要将图画大,图太小容易画乱)才逐渐体会到KMP的精妙之处。将一些理解记录到了笔记本上:理解:KMP本质上是DP问题,通过将之前计算的结果记录下来,为之后的计算借鉴,从而减少时间复杂度。之后借鉴之前的过程可以用转移方程来表示。难点同精妙的点在于记录什么(next数组),如何借鉴(转移方程)。i指向字符串s,j指向模式串p。next[j]=k+1 的含义:当p[j]与s[i]的字符不相同时,j应该指向p的哪个位置(也就是n
2021-03-28 22:17:14
84
原创 线性动态规划
方格取数 题目 提交记录 讨论 题解 视频讲解设有 N×N 的方格图,我们在其中的某些方格中填入正整数,而其它的方格中则放入数字0。如下图所示:2.gif某人从图中的左上角 A 出发,可以向下行走,也可以向右行走,直到到达右下角的 B 点。在走过的路上,他可以取走方格中的数(取走后的方格中将变为数字0)。此人从 A 点到 B 点共走了两次,试找出两条这样的路径,使得取得的数字和为最大。输入格式第一行为一个整数N,表示 N×N 的方格图。接下来的每行有三个整数,第一个.
2021-03-10 21:48:17
90
原创 打印学生选课清单——c语言实现
3 打印学生选课清单 (40 分)假设全校有最多40000名学生和最多2500门课程。现给出每门课的选课学生名单,要求输出每个前来查询的学生的选课清单。输入格式:输入的第一行是两个正整数:N(≤40000),为前来查询课表的学生总数;K(≤2500),为总课程数。此后顺序给出课程1到K的选课学生名单。格式为:对每一门课,首先在一行中输出课程编号(简单起见,课程从1到K编号)和选课学生总数(之间用空格分隔),之后在第二行给出学生名单,相邻两个学生名字用1个空格分隔。学生姓名由3个大写英文字母+1位数字组
2021-03-05 17:51:06
1629
原创 (AcWing)1532. 找硬币 (哈希/双指针)
(AcWing)1532. 找硬币1>用unordered_set实现哈希//mathod 1:哈希表 O(n)#include<iostream>#include<algorithm>#include<unordered_set>using namespace std;const int INF=10000;int main(){ unordered_set<int> hash; int n,m; cin>>n
2021-01-23 12:35:29
67
原创 6-8 是否二叉搜索树 (25分)
//这样是错误的,因为可能存在以下的情况/* 3 / 2 / \ 1 4*/// bool IsBST ( BinTree T )// {// if(T)// {// if(T->Left&&T->Left->Data>=T->Data)// return false;// .
2020-12-27 16:14:54
117
1
原创 素数线性筛
沉心找各量的关联,把原理和过程弄明白,不然代码也是白写。原理:每个数被它的最小质因子筛掉,则每个数只被筛掉一次,时间复杂度为O(n)实现:数被质因子筛掉:数A=最小质因子B*数C再进一步,保证被最小质因子筛掉:数C的最小质因子>=B若随着B的增大,C中有小于B的因子,则不能保证B为最小质因子借此剪枝代码:#include<iostream>#include<vector>#include<algorithm>using namespace
2020-11-13 20:35:44
55
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人