基础算法
achonor
早起的虫子被鸟吃..
展开
-
计算直线和平面的交点
平面的法向量N和平面上点P1可以确定一个平面直线的方向向量N1和直线上一个点P0确定一条直线已知P0不在平面上,计算直线和平面的交点P2很容易理解,向量P0P1和向量P0P2在平面法线上的投影长度相等,即Dot(P0P1, N)等于Dot(P0P2, N)还有向量N1在向量N上的投影长度Dot(N1, N)/Dot(P0P2, N)等于N1的长度/P0P2的长度上代码: /// <summary> /// 计算直线和平面的交点 /// &原创 2022-03-08 12:22:37 · 1137 阅读 · 0 评论 -
C# 双向队列 单调栈
public class Deque<T> { public class DequeNode<T> { public T value; public DequeNode<T> pre; public DequeNode<T> next; } public int Lenght; public DequeNode<T> Front = new DequeNode<原创 2021-04-07 15:51:37 · 1045 阅读 · 0 评论 -
LeetCode 483. 最小好进制
题目链接:https://leetcode-cn.com/problems/smallest-good-base/思路:1.先遍历[2, 10]进制是不是满足条件,后面再判断[11, n - 1]2.假设n转换成x进制等于y, 其中y = 11111…111(长度等于n的长度)3.二分查找x的值,范围是[11, n - 1]4.找到对应的x则返回,否则y = y / 10,继续第3步的二分查找public class Solution { /// <summary>原创 2021-04-06 17:01:13 · 145 阅读 · 0 评论 -
大数开平方
手动开根号原创 2018-02-11 14:46:00 · 1006 阅读 · 0 评论 -
C# 优先队列实现
public class HeapQueue<T> where T : IComparable<T> { private List<T> array = new List<T>(); public int Count { get { return array.Count; } } private void...原创 2020-08-27 14:06:50 · 637 阅读 · 1 评论 -
LeetCode 1147. 段式回文
1147. 段式回文https://leetcode-cn.com/problems/longest-chunked-palindrome-decomposition/ public class Solution { int result; string text; //lastIndex[x][y]表示0-y这段字符串中x字母最后出现的位置 int[][] lastIndex = new int[26][];原创 2020-08-20 12:06:07 · 204 阅读 · 0 评论 -
LeetCode 4. 寻找两个正序数组的中位数
https://leetcode-cn.com/problems/median-of-two-sorted-arrays/解题思路:使用两层二分查找 public class Solution { //数组中小于target的数字数量 int SearchLeftCount(int target, int[] numbers) { int left = 0; int right = numbers.Length;.原创 2020-08-14 14:00:03 · 90 阅读 · 0 评论 -
左右边界二分查找
1.查找小于等于int BinarySearch(int value, int left, int right){ while(left < right){ cout<< left << " " << right <<endl; int mid = (left + right) >> 1;...原创 2020-02-25 10:33:18 · 305 阅读 · 0 评论 -
N 的阶乘的另一种解法
任何一个数都可以分解成素数乘积,利用着这性质就可以把 N! 保存在一个数组 arg[i] 里面,arg[i] 保存的是 i 的幂。素数可以直接线性打表, 主要的问题就是要求出 arg[i] 数组:原创 2015-08-27 17:46:21 · 1650 阅读 · 0 评论 -
三维十字链表AOI算法
三维十字链表AOI算法原创 2018-02-06 18:39:20 · 949 阅读 · 0 评论 -
斗地主-比较牌大小算法
斗地主, 比较牌大小, C++原创 2017-05-13 10:06:50 · 5229 阅读 · 0 评论 -
康拓展开,逆康拓模板
X=a[n]*(n-1)!+a[n-1]*(n-2)!+...+a[i]*(i-1)!+...+a[1]*0!原创 2015-07-28 17:28:21 · 920 阅读 · 0 评论 -
[HDU 1394] Minimum Inversion Number 逆序对
题意:给你一个有 n 个 小于 n 且不重复的数组成的序列,每次将序列最前面的数字移动到序列的最后面,求移动过程中序列的最小的逆序对。思路:这题数据比较小可以先暴力出原始序列的逆序对,然后每次将最前的数移动到最后逆序对就会变成 ans = ans - num[0] + n - num[0] - 1。原创 2015-11-15 23:24:36 · 408 阅读 · 0 评论 -
[HDU 4004] The Frog's Games 二分+贪心
http://acm.hdu.edu.cn/showproblem.php?pid=4004题意:青蛙通过河中央的n块石头过河, 所有石头均在与河岸垂直的一条线上,给定每块石头到河岸的距离,给出河的宽L,给定青蛙跳的次数上限m,求出青蛙能够过河的最小步长。思路:二分步长,贪心判断步长是否能过河原创 2015-08-15 16:44:01 · 717 阅读 · 0 评论