- 博客(87)
- 收藏
- 关注
原创 Win10+WSL2+Ubuntu22.04 +图形化桌面配置
22.04需要将appxbundle改后缀名为zip,选出x64解压再改后缀名,再按上面文章操作。
2023-12-03 00:16:21
3104
2
原创 汉明码原理推导
设第i个检测位无错,Pi代表*...1...*,则错误代码对应位必为0同理若第i位检测位有错,错误代码对应位为1将k个检测位对错结果按顺序组合,即可得到错误代码因此可以推导出2^k-1≥n+k,左边是检测位所能表示的范围(k位二进制数),右边是汉明码长度
2022-08-20 00:09:05
396
原创 亚特兰蒂斯(离散化的扫描线)题解笔记
AcWing 247. 亚特兰蒂斯(对代码进行详细解释) - AcWing从扫描线到离散化难免令人有些费解,下面写一些针对离散化映射后build和pushup的思考坐标轴上是一些下标经过排序后从小到大的离散的点,每两个点构成一个线段d[i],线段树实际上存储的是一个个线段,就像没离散化之前的扫描线一样,之后按离散化之前的套路处理即可...
2022-03-27 11:35:13
292
原创 线段树简单笔记
一 经典线段树结构:权值为[L,R]的区间和int L,R,sum;操作1 单点修改O(logn)递归找到相应叶子节点,回溯时修改父节点(两个儿子总和)操作2 区间查询O(logn)左右两边递归,递归边界为左右两边都被包含,累加其权值最坏耗时4logn区间修改需要懒标记,蓝桥杯一般考不到,即使考到也是特殊区间修改,用不到函数1 pushup 用子节点信息更新当前节点信息2 build 在一段区间上初始化线段树3 modify 单点修改4 query 区间查询静态链表存储,空
2022-03-20 12:39:28
777
原创 树状数组简单总结(原理见以往帖子)
树状数组:快速(动态)求前缀和在线算法(支持修改)O(logn) 1:给某个位置上的数加上一个增量(修改某个元素)2:求某个前缀和即:单点修改,区间查询(sum(r)-sum(l-1))树状数组只能支持这俩问题,别的问题都得通过转化才能解决比如区间修改,单点查询需要利用差分转化为区间修改记树状数组为C[x],定义:C[x]=(x-lowbit[x],x],即x-lowbit[x]+1~x,奇数为其本身lowbit[x]=x&-x,含义是2^k,k为x...
2022-03-15 00:12:02
568
原创 求至少加上几个字符使之回文
等价于求至少删除几个字符使之回文等价于总长度减去最长回文子序列的长度注意:不能用马拉车算法,马拉车求的是最长回文字串,是连续的,而子序列不必连续
2022-03-11 12:11:38
148
原创 java 匿名子类
class Normal { public void start() { System.out.println("S"); }}public class text { public static void main(String[] args) { new Normal(){ public void func(){ System.out.println("do without name"); }; public void func1(){ Syste.
2022-01-30 20:35:55
1817
原创 抛出异常和ifelse在模块化设计上的区别
我们知道,在功能上,一段短代码try catch 和if else并没有太大区别,取得的效果基本相同。那么,为什么还要花费心思设计异常呢?首先:对于短篇代码来说,靠if else解决意外错误不具备可移植性,遇到相似问题需要重新编码。而自定义异常的可复用性高。其次:对于长篇代码来说,异常能起到终止线程并向上传递的作用,相当于分层架构,降低代码的耦合度。...
2022-01-29 21:54:14
550
原创 以洛谷P1091 合唱队形初探动态规划DP
目录一 题目描述二 题目拆解三 子问题求解Q1:如何求dpup[i]——删除元素数最小的递增子序列Q2:如何求dpdown[i]——删除元素数最小的递减子序列四 AC代码一 题目描述P1091 [NOIP2004 提高组] 合唱队形 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)入门果然耗时间,一道简单的DP却花了我两三个小时 ...
2022-01-17 01:11:43
530
原创 c#继承类构造函数实际意义
c#的教材一般人看不懂,看懂也难以领会其深意,所以有很多合理的事情因教材的错误引导被人为掩盖比如构造函数从最上层的父类向下依次向扩充类执行,教材是用打印类名来演示的,确实很直观,但是很反人类。因为这只能演示做法,却不能解释原因。事实上 类的继承是为了简化代码,提高复用率,比如我定义一个动物类为抽象类,灵长类继承动物类,人类继承灵长类然后动物类有个变量叫界,构造函数初始化为动物界灵长类有个变量叫目,构造函数初始化为灵长目人类有个变量叫属,构造函数初始化为人属至此,继承的优势已经体现地淋漓尽致:你只
2021-10-30 20:42:24
164
原创 数组的映像地址
今天对着这个概念和人讨论了好久,后来才想明白[j1,j2,…,jn]的映像地址即它与[0,0,…,0]的距离加上原点的地址,我们最根本的是它到原点的距离但是这跟几何还不一样,不能直接连线,我们采用分量法解题先求[j1,0,0,…,0]到[0,0, …,0]的距离,易得其值为b2·b3·…·bn·j1,即降维累乘其他维度同理最后累加结束想明白用分量法就很简单,可惜我一开始从整体入的手...
2021-10-29 10:37:09
167
原创 并查集判断成环 HDU 1272
加入边前判断两个节点是否根节点相同,如果相同那么成环,如果不同合并他们比如1-2,1-3,2-3,加入2-3时2和3已经同属一个并查集了,成环例题 HDU 1272
2021-09-09 16:08:54
332
原创 中国剩余定理例题 POJ1006
中国剩余定理模板的返回值是最小值,最小值加上公倍数就是通解,求最小的大于day的通解即为所求中国剩余定理#include<cstdio>//http://poj.org/problem?id=1006#include<iostream>using namespace std;typedef long long ll;ll exgcd(ll a,ll b,ll &x,ll &y) { //扩展欧几里得算法 ax+by=c 求解a,b if(!b) {
2021-09-09 15:09:19
323
原创 HDU 3790 最短路径最小花费
迪杰斯特拉总结相比于普通迪杰斯特拉,我们要做的变动是:优先队列排序 friend bool operator < (const node &f1, const node &f2) { if(f1.w!=f2.w) return f1.w > f2.w; else return f1.p>f2.p; }迪杰斯特拉节点更新if (dis[end] > dis[start] + edge[i].w) { dis[end] =
2021-09-09 13:22:49
217
转载 C++ 给两直线上四个点求交点
理论代码来源Point getIntersectPoint(Line a, Line b) { double a1 = a.s.y - a.e.y, b1 = a.e.x - a.s.x, c1 = a.s.x * a.e.y - a.e.x * a.s.y; double a2 = b.s.y - b.e.y, b2 = b.e.x - b.s.x, c2 = b.s.x * b.e.y - b.e.x * b.s.y; return Point((c1*b2-c2*b1)/(a2*
2021-09-06 03:17:45
1319
原创 POJ 3608 凸包最小间距
下面有很多没用到的函数,所以请从主函数开始看计算几何详解请参考我的博客计算几何基础#include<cstdio> //计算几何基础 代码 https://blog.youkuaiyun.com/qq_44691917/article/details/104686146 #include<iostream>//理论https://www.luogu.com.cn/blog/wjyyy/geometry1 #include<cmath>//自己写的总结 https://m
2021-09-04 22:37:47
143
原创 HDU 5251
这题老早就想A了,就因为这个才想学旋转卡壳,但是折磨了我好久,今天终于过了哈哈哈凸包及旋转卡壳请参考我的这篇博客https://mp.youkuaiyun.com/mp_blog/creation/editor/120031148这题跟模板不同的是题目要求输出整数,而且是四舍五入的!一开始没注意到吃了大亏,不过不吃那亏也注意不到我模板写错了……因祸得福哈哈模板和原理都在上篇博客中讲述的很清楚了,下面是模板的运用AC代码#include<cstdio> //计算几何基础 代码 htt
2021-09-04 06:20:56
209
原创 计算几何基础(施工未完)
目录总模板点和向量部分点和线部分总模板#include<cstdio> //计算几何基础 代码 https://blog.youkuaiyun.com/qq_44691917/article/details/104686146 #include<iostream>//理论https://www.luogu.com.cn/blog/wjyyy/geometry1 #include<cmath>using namespace std;#define Vect
2021-09-01 02:48:54
1111
1
转载 结构体初始化:构造函数 二义性
struct Node{ int r,c,dist; Node(){} Node(int r,int c):r(r),c(c){} Node(int r,int c,int dist):r(r),c(c),dist(dist){}};第三行是为了能够不经初始化就能定义结构体变量
2021-08-31 18:36:07
225
原创 POJ 2182 普通权值线段树求第k小
模板写错了,研究了一个多小时,哭死int kth(int root,int start,int end,int k) {//查询第k小值是多少 if(start==end) return start; int mid=(start+end)>>1,s1=tree[lson],s2=tree[rson]; if(k<=s1) return kth(lson,start,mid,k);//向左子树搜索 else return kth(rson,mid+1,end,k-
2021-08-31 03:10:32
442
原创 求组合数的各种方法 (Lacus等) (理论待更新,目前只有模板)
理论待更新,今天更完Lacus定理注意!如果m%p>n%p,那么C(n%p,m%p,p)=0 也就是下标小于上标 结果也就是0了 这一点务必要注意#include<cstdio>//求单个组合数 卢卡斯定理 n<=1e18 m<=1e18 p为素数但比较小! p<=1e4 注意!如果m%p>n%p,那么C(n%p,m%p,p)=0 也就是下标小于上标 结果也就是0了 这一点务必要注意 #include<string.h>//易错:计算时.
2021-08-30 06:13:15
332
转载 莫比乌斯反演
https://blog.youkuaiyun.com/tomandjake_/article/details/81083703上面这篇文章讲得很好下面我对模板做一些分析int mu[maxn], vis[maxn];int primes[maxn], cnt;void get_mu() { memset(vis, 0, sizeof(vis)); memset(mu, 0, sizeof(mu)); cnt = 0; mu[1] = 1; for (int i = 2; i <= ma
2021-08-29 03:40:25
106
原创 扩展欧几里得 逆元 逆元打表
参考文献逆元打表扩展欧几里得+求单个逆元原理详阅,不再赘述typedef long long ll;ll exgcd(ll a,ll b,ll &x,ll &y){//扩展欧几里得算法 ax+by=c 求解a,b if(!b){ x=1,y=0; return a; } ll ans=exgcd(b,a%b,x,y); ll temp=x; x=y; y=temp-a/b*y; re
2021-08-29 02:38:33
176
转载 中国剩余定理(孙子定理)
参考文献感谢武大佬的PPT和精彩讲解模板(有一处错误)扩展欧几里得算法题意:人自出生起就有体力,情感和智力三个生理周期,分别为23,28和33天。一个周期内有一天为峰值,在这一天,人在对应的方面(体力,情感或智力)表现最好。通常这三个周期的峰值不会是同一天。现在给出三个日期,分别对应于体力,情感,智力出现峰值的日期。然后再给出一个起始日期,要求从这一天开始,算出最少再过多少天后三个峰值同时出现。分析: 首先我们要知道,任意两个峰值之间一定相距整数倍的周期。假设一年的第N天达到峰值,则
2021-08-29 01:53:57
832
原创 二分乘法a*b%m 解决a*b远超int
二分乘法主要是解决乘法的结果远超int范围,但需要的结果有取余的乘法运算对于a*b%m来说,如果b为奇数,ans+a,把b变为偶数如果b为偶数,我们令b减半,a翻倍类似快速幂的思想ll multi(ll a,ll b,ll m){//a*b%m 解决乘法的结果远超int范围,但需要的结果有取余的乘法运算 ll ans=0; a%=m; while(b){ if(b&1)//b为奇数时变偶数 ans=(ans+a)%m,
2021-08-29 00:48:34
319
原创 素数筛 欧拉函数
参考文献特别鸣谢武大佬的PPT素数筛素数及其相关定理一、素数定义 基本概念素数又称质数,是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。 易错点1不是质数,写题要注意出题人出0,1卡你,质数大于1唯一分解定理一个数n肯定能被分解成 n=p1^a1 * p2^a2 . . .*pn^an(p是素因子,a是素因子的个数)因为一个数肯定是由合数和质数构成的,合数又可以分解成质数和合数,最后递归下去就会变成质数的乘积最后化成了质数相乘的形式二、素数的
2021-08-27 19:39:37
661
原创 递归时间复杂度分析——递推方程
https://blog.youkuaiyun.com/u013340360/article/details/81030820比较简单,不需要结合各方资料综合分析,就直接放链接吧
2021-08-27 04:16:35
464
原创 博弈论基础
博弈论这个环节特别好玩,游戏嘛(不会的话做题就不好玩了,当年打比赛比赛结束后两三分钟才推出来,一看答案想撕草稿纸) 本篇文章含有大量逻辑证明,做题用不到,不想看的可以略过直接看结论和模板参考文献特别鸣谢孙大佬的PPT和精彩讲解威佐夫博弈尼姆博弈SG函数斐波那契博弈区间最值查询ST表详解预处理查询巴什博弈问题模型只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取...
2021-08-26 23:04:04
960
原创 卡特兰数 卡塔兰数 概念 代码实现 模型分析全集
特别鸣谢参考1参考2参考3概念情境导入一个栈(无穷大)的进栈序列为1,2,3,…,n,有多少个不同的出栈序列?可以形象化地转化为括号问题,更好理解,进栈是(,出栈是),下面为n=3的全部序列首先,我们设 f(n)=序列个数为n的出栈序列种数。 同时假定,从开始到栈第一次出到空为止,这段过程中第一个出栈的序数是k。特别地,如果栈直到整个过程结束时才空,则k=n。 首次出空之前第一个出栈的序数k将1 ~ n的序列分成两个序列:其中一个是1 ~ k-1,序列个数为k-1;另
2021-08-25 23:52:42
448
原创 组合数学 排列 容斥 卡特兰数
特别鸣谢徐哥的PPT和精彩讲解不可重复排列从n个物品中不可重复的取出m个物品n:待排列数组的长度cur:已经排列的元素个数A[]:存储排列后的元素vis[]:标记数组当前元素选择完之后记得恢复变量可重复排列从n个物品中可重复的取出m个物品last表示上一个选择,vis_P表示pick,当前元素挑选数量,vis_A表示当前元素挑选上限求全排列函数(基本不用)next_permutation和prev_permutation()...
2021-08-25 04:54:38
892
1
原创 基排序 C++实现 LSD 递增递减 两种思想 MSD略
https://blog.youkuaiyun.com/qq845579063/article/details/51447772
2021-08-22 22:18:53
145
原创 HDU 7087解题思路 优先队列 或者化为二进制后按位相减
https://acm.hdu.edu.cn/showproblem.php?pid=7087这题本质就是只有大的分条可以减去小的对象,不能相反,每个分条都要减不大于它的最大的对象才可以!第二句话是易错点!然后就看你怎么实现了有大佬用二进制按位相减,我贴一下,标准答案是堆优化,我觉得优先队列也没问题化为二进制后按位相减(一位大佬的思路)遇到2的n次幂都可以往这边想一下都是整数,用数组模拟二进制减法减去不大于它的最大的对象,那就先找位数相同的,这样搜索起来比较快样例2解
2021-08-21 22:48:07
117
原创 AC自动机模板
https://www.cnblogs.com/hyfhaha/p/10802604.html易错点多组数据初始化时,cnt要初始化为1,用完之后要对trie的son数组清0,其他可以不清0但是son必须清0,这个会影响拓扑和fail!如果RE,一定是trie开小了,这样cnt++才会访问越界,而不是s,T之类的开小了#include<cstdio>//https://www.cnblogs.com/hyfhaha/p/10802604.html#include<io.
2021-08-21 18:08:37
111
原创 后缀数组 注释详细
特别鸣谢党哥的PPT和精彩讲解概念介绍 后缀 后缀数组可以解决大部分的字符串问题,如查找子串,最长重复子串,最长公共子串等。后缀是指从某个位置 i 开始到整个串末尾结束的一个特殊子串。字符串r的从第i个字符开始的后缀表示为Suffix(i),也就是Suffix(i)=S[i…len(S)-1]。比如 abcdefg 的suffix(5)就是fg。 后缀树 例S=“vamamadn”(因树的建立比较麻烦,用数组替代) 后缀数组 后缀数组(SA[i]存放排名第i大的
2021-08-21 04:02:16
743
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人