- 博客(41)
- 收藏
- 关注
原创 c语言指针
数组型变量不同于指针变量。从技术 上说,数组的名字不是指针,C 语言编译器会在需要时把数组的名字转换为指针。为了更清楚地看 出两者的区别,思考对数组。C语言中可以使用数据指针相同的方式使用函数指针,C语言中把函数指针作为参数进行传递。的值是数组中字节的总 数,即每个元素的大小乘以元素的数量。的值则是用来 存储指针值所需的字节数量。数组名在传递给函数时,总是被视为指针。中,三个申请内存的函数,都返回。运算符时会发生什么。
2024-11-25 20:05:20
223
原创 【算法基础】数字的基本性质
and b0and rbqr, where 0≤rbcdab. When gcdab1, we say aand bareand band tcdabasbtcdabsbt.If aand band tsbt1.p∣abp∣ap∣bIf p, then pdivides aor pdivides bp1p1⋅⋅⋅prand nq1q2⋅⋅。
2024-06-23 00:08:56
696
翻译 【算法基础】Newton求根法
虽然Newton更早发现了这种方法,但Raphson首先在自己的文章中介绍了这种方法。可能会非常大,所以算法开始时有理由对答案进行一个初始的估计。很显然,这个估计值离答案跃进,算法收敛的越快。最后,这个问题还有一个解决非常大的数字(bignum arithmetic)的形式。更具体地来说,我们需要找到这个方程的一个根(假设这个根存在)。在上一次迭代中减小了,在当前的迭代中又增加了,这个时候算法必须停止。这样的化就需要稍微改变一下这个算法的结束条件,因为当。的根,带入上面的式子化简,可以得到。
2024-06-21 14:42:28
823
翻译 【算法基础】ST表
当查询区间最小值的时候,区间的重叠对结果没有影响。因为相对于把区间分解成多个不相交的区间,我们可以把区间分解成两个长度为2的幂的两个区间,这两个区间可能重叠也可能不重叠。ST表的关键就是提前计算出所有长度为2的幂的区间的查询。任何一个非负整数都可以唯一表示为一组递减的2的幂的和,这等价于一个数的二进制表达。同样的,任何一个区间都可以被唯一的表示为一组长度为2的幂的不相交区间的并集。取决于查询的类型,对于求和的查询就是求和函数,对于最小值的查询就是求最小值函数。的区间查询,我们从大到小迭代2的幂,只要当前。
2024-05-15 11:17:07
920
翻译 【算法基础】图上的博弈
首先我们先遍历一般所有的结点,找到那些开始就确定是胜利点和失败点的结点。从每个这样的点开始跑一遍dfs。如果当前结点的上一个结点是失败点,那么就是上面的第一种情况,即这个结点是成功点。如果当前结点的上一个结点是成功点,还需要判断所有到达它的结点是否是成功点,这个过程可以通过增加一个。在两名选手都使用最佳策略的情况下,如果某个点作为初始点先手能获得胜利,那就把这个点叫做胜利点。类似的,如果某个点作为初始点,先手失败,那这个点就叫失败点。图上所有没有出边的点,我们是可以马上判断出该点是胜利点还是失败点。
2024-05-14 21:15:02
153
原创 【组合博弈】Outcome Classes
的outcome函数代表这个游戏最终的结果,就是说这个游戏最后的赢家是谁。outcome函数是一个从游戏。映射到四个结果的函数,四个结果分别是。
2024-05-13 21:55:48
339
翻译 【算法基础】动态规划导论
因此,相比于重复计算这些子问题,我们通过把这些问题的结果存在一个表中来避免重复的计算。自底向上方式和自顶向下的方式完全相反,我们从最底层开始(递归的初始条件(base case)),然后扩展到更多的数。不过我们还要注意到这是结果的正确性还取决于我们使用的数据类型,在32位整数类型下,我们最多能计算第46位的斐波那契数。其次我们只需要之前的两个数就可以计算当前的值。因此我们把空间复杂度从。上面这种方式叫做自顶向下的,因为我们从询问的数开始计算,并且计算的过程是从上到下的,通过记忆化的方式保留中间的计算结果。
2024-05-13 18:54:55
734
原创 【程序员侠】李飞往事之神犬巴巴斯
wifi恶魔本名叫张三,本来是个不起眼的小混混,只会做些随地吐痰,乱扔垃圾的不起眼的小事情,却一直幻想着成为一个超级大魔王。张三希望魔神把自己变成最强大最邪恶的魔王,魔神让张三去找他的斧头,张三把斧头交给魔神后,张三的愿望就会实现。巴巴斯也从不和李飞说话,他们之间的交流也是通过巴巴斯的wifi信号传递信息。这只狗说它叫巴巴斯,是魔神的宠物,巴巴斯说可以带张三找魔神,魔神可以实现张三的一个愿望。原来李飞的狗叫巴巴斯,是李飞打败wifi恶魔后从wifi恶魔手里继承的狗,巴巴斯就是wifi恶魔的力量的来源。
2024-05-12 15:56:00
375
原创 【组合博弈】介绍
本文介绍一些组合博弈(Combinatorial Games)的简单概念,~~不同于传统的枯燥的经济学博弈,组合博弈更有趣。~~文章中“博弈”和“游戏”是同一个意思。一般参加组合游戏的两名选手被叫做Left(L)和Right(L),两名选手可以进行的操作有时候相同,有时候不同。
2024-05-10 19:46:52
866
原创 【程序员侠】程序岛上的赵老板
但赵老板不一样,虽然他自己在18岁才成功写出了自己的第一个Hello World,虽然他身上并没有程序员侠身上时常闪耀着的光芒,但他仍然坚信自己可以写出和程序员侠一样好的代码。程序员侠和普通的程序员不一样,他们更聪明更有创造力,在赵老板成为程序员侠的领袖之前,所有的程序员侠都是程序岛里出来的。赵老板从不谈论他的过去,也从不透露他的真实姓名,他称呼自己时也叫自己为赵老板,好像他一出生就是赵老板。赵老板就成为了程序员侠的领袖。程序员侠们再也不能否认赵老板的能力,认可了他程序员侠的身份,那一年他三十八岁。
2024-05-09 23:12:39
366
原创 【程序员侠】李飞往事之键盘侠刘一刀
他们各自在自己的领域中取得了巨大的成功,但在面对邪恶势力的共同威胁时,他们也展现了超越个人之上的团结和合作精神。李飞和刘一刀的故事,不仅仅是一段关于两个人的故事,更重要的是,它展示了在面对巨大挑战时,个人的智慧和勇敢精神何以能够超越个人之上,成就共同的目标。他们的故事,告诉我们在这个充满挑战的时代,每个人都应该勇敢地站起来,共同努力,抵抗邪恶势力,保护我们周围的和平。最后,李飞和刘一刀的故事,也让我们思考了一个问题:在这个充满竞争和挑战的世界,我们每个人都应该如何寻找共同的目标和追求,共同努力,共同成长。
2024-05-09 12:28:53
392
1
原创 【编程基础】递归的简单理解
递归:参见递归。递归:如果你还不理解递归是什么,请参见递归。递归事实上就是函数直接或间接调用自身的一个过程。(或者其它本质上相似过程的也可以称为递归。)但和许多基本的概念一样,定义总是很简洁,但真正运用起来却并不容易。在程序设计中为了保证递归能够结束,递归函数一定需要一个结束条件,称这个条件为基线条件,满足基线条件时停止递归调用。
2024-05-09 12:06:06
635
原创 程序员侠李飞
李飞,这位程序员侠,肩负着消灭黑暗势力的使命。他的代码如同一把利剑,切割着虚拟世界中的恶意程序,保护着数字领域的和平。他的键盘敲击声如同战鼓的轰鸣,警示着那些企图侵入系统的黑客。在代码的世界里,他是一位无所畏惧的战士,用智慧和技术武装自己,守护着网络的安全。他的屏幕上闪烁着代码的光芒,每一行都是他对抗黑暗的武器。他不是超级英雄,但在虚拟世界中,他是一位英勇的守护者。
2024-05-08 17:34:14
610
原创 【程序员侠】李飞往事之成长
他的生活被“996”的工作制度所吞噬,每天除了工作台前的电脑屏幕,他看不到任何其他的风景。朝九晚九,周而复始,李飞的生活如同一条单调的程序循环,没有任何break点。他的心思全在代码上,那些复杂的算法和无尽的bug是他唯一的伴侣。他开始变得沉默寡言,与人的交流也越来越少,仿佛他已经成为了一台没有感情的编程机器。在公司,李飞参与了多个重要项目,他的编程能力和解决问题的能力得到了同事和上司的认可。长时间的熬夜和高强度的工作让他的健康状况每况愈下。虽然他的身体不适,但他的心中充满了对未来的憧憬和对技术的热爱。
2024-05-08 15:48:37
301
原创 【程序员侠】李飞往事之童年
在一个遥远的小村庄里,有一个聪明勇敢的小男孩,名叫李飞。他的父亲是一位村里赫赫有名的木匠,而母亲则是一位温柔贤惠的织布工。李飞从小就对父亲的工具箱充满了好奇,他经常偷偷拿出各种工具来玩,想象自己是一位伟大的发明家。他不仅仅满足于玩父亲的锤子和钳子,还开始尝试拆解家里的收音机和旧电视,探索它们的内部结构。每当夜幕降临,他就会躲在被窝里,用手电筒照着那些从城市里带回来的科学杂志,研读每一篇关于计算机和互联网的文章。他的梦想是有一天能制作出自己的电脑游戏,让全世界的人都能玩到。
2024-05-08 15:39:07
242
原创 【程序员侠】李飞往事之起源
在繁华的都市中心,一栋玻璃幕墙的大厦里,李飞坐在他的办公桌前,眼神空洞地盯着电脑屏幕。代码在他的指尖流淌,但他的心却不在这里。他是公司里最优秀的程序员之一,但今天,他收到了一封意料之外的邮件——公司决定裁员,而他的名字赫然在列。李飞站起身,走到窗边,望着窗外的车水马龙,心中涌起一股莫名的失落感。他想到了他的父母,他们对他的期望,他的学生贷款,他的房贷…他的业绩一直是最好的,他牺牲了个人时间,加班熬夜,只为了每一个项目能够完美交付。”电话那头传来一道沉稳的声音。李飞愣了一下,随即回答:“是的,我是李飞。
2024-05-08 14:22:00
235
原创 【程序员侠】李飞往事之爱情故事
小美的热情和活力让李飞感受到了生活的美好,而李飞的专注和细致也让小美感受到了安全和温暖。她发现,李飞不仅是一个有着高超技术的程序员,更是一个有着坚持和努力精神的人。李飞和小美的爱情故事就这样在程序员和广场舞的世界里悄然展开,他们的爱情将永远闪耀在彼此的心间。小美是一个热情开朗的女孩,她跳舞时洒脱自如,舞姿优美,吸引了李飞的注意。李飞被小美的活泼和阳光吸引住了,慢慢地,他开始主动和小美打招呼,两人之间渐渐产生了交集。李飞发现,原来生活中有这么多美好的事物,而小美也感受到了李飞带给她的安定和温暖。
2024-05-08 13:45:04
373
原创 【程序员侠】李飞往事之wifi恶魔
一天,他接到了一个任务,说是城市中有一个邪恶的wifi恶魔正在肆虐,许多人的个人信息被盗取,银行账户被盗刷,造成了严重的社会影响。李飞立刻展开了调查,通过他的技术手段,他发现这个wifi恶魔隐藏在一个购物中心的wifi网络中。程序员侠李飞的故事在城市中传颂开来,他成为了年轻人们的榜样,激励着他们为社会做出更多的贡献。wifi恶魔利用技术手段对李飞进行攻击,但是李飞凭借着自己的技术优势,成功化解了恶魔的攻击,最终将恶魔制服。从此之后,李飞继续守护着城市的网络安全,他的名字成为了那些网络犯罪分子的噩梦。
2024-05-08 13:41:35
336
5
原创 超级程序员侠
李飞最终成为了程序员侠的领袖,他带领着一群优秀的程序员侠,一起保护人们的安全和自由。他们被人们称为“程序员侠”,因为他们像侠客一样,用自己的力量保护人们免受恶势力的侵害。李飞的事迹传遍了整个世界,人们纷纷向他学习,希望能够像他一样成为优秀的程序员侠。李飞也看到了更多有潜力的年轻人,他决定要培养他们,传承程序员侠的精神,让这个世界变得更加美好。李飞决定要阻止他们,保护人们的安全和自由。李飞展开了一场惊心动魄的战斗,他利用自己的编程技能,穿梭在黑客组织的网络之中,破解了他们的防御系统,成功地阻止了他们的阴谋。
2024-05-08 13:11:02
308
原创 在markdown中使用latex公式
本文主要介绍在markdown编辑器中常用$\LaTeX$的公式语法。在markdown中使用$\LaTeX$公式要确定自己的markdown编辑器是否支持$\LaTeX$公式。
2024-05-07 17:51:43
990
翻译 【算法基础】MEX的计算,MEX(minimal excluded) of a sequence
每一个节点来维护一个区间里数的频率,并且存储当前区间中出现的不同的数的数量。的所有元素都放到一个set里,这样就可以很快地检查一个数是否在这个集合里。的时间内计算MEX,可以使用一个bool类型的vector来代替集合,这样我们需要的就是和。问题:改变数组里的单个数,在每次更新后都计算数组里新的MEX。
2024-05-07 15:05:53
1095
原创 上科大2022年初试991NPC问题
证明问题Y是NP-Complete问题,需要首先证明该问题是NP问题,然后再选择一个NP-Complete问题X,证明该问题X可以以多项式时间归约到问题Y。
2024-05-06 17:38:59
1330
3
翻译 【算法基础】三分搜索算法(Ternary Search)
重复上面的过程,我们可以得到任意小的一个区间。最终这个区间的长度会小于一个特定的值(精确度),然后整个过程就可以停止了。外,我们还可以选择一个常数,当循环次数超过这个常数时,算法结束。处的函数值后,我们都可以让整个区间减少三分之一。的区间最值问题的算法。区间中的所有函数值(不超过两个),可以确定哪个是所求的最大值。区间内的函数值都是可以接受的最大值。和之前不同的是算法的结束条件。因此,通过对两个点函数值的比较,我们可以将当前的区间。的选择没有任何的限制,算法的正确性不受影响。,换成一个新的,更小的区间。
2024-05-05 21:16:08
577
翻译 【算法基础】平衡三进制(Balanced Ternary)
这是一个不太标准的数字符号系统(numeral system)。它的特点是每一位数字可以是-10和1。它是一个基于三进制的数字符号系统。因为使用-1来作为一个数字不太方便,我们接下来会使用字母Z来代替-1。图片里展示的是一台使用这种系统的计算机。0 01 12 1Z3 104 115 1ZZ6 1Z07 1Z18 10Z9 100这种符号系统允许你在书写符号的时候不使用前置的负号:在将正数转换成负数时,你需要将每一位数字转置(1变成ZZ变成1-1 Z-2 Z1-3 Z0-4 ZZ。
2024-05-05 14:07:35
573
原创 __int128的输入输出
inline int read() { char c = getchar(); int x = 0, f = 1; while(c < '0' || c > '9') {if(c == '-') f = -1; c = getchar();} while(c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar(); return x * f;}void print(__int
2020-08-08 16:25:34
360
1
原创 三分模板(凹函数)
int l=0,r=1e9; while(l<r) { int lmid=l+(r-l)/3,rmid=r-(r-l)/3; if(check(lmid)<check(rmid)) r=rmid-1; else l=lmid+1; }``
2020-07-24 18:45:30
381
原创 线性打表求逆元模板
LL inv[MAX_N];void fun(){ inv[1]=1; for(int i=2;i<MAX_N;i++){ inv[i]=(MOD-(MOD/i))*inv[MOD%i]%MOD; }}
2020-07-15 11:03:56
222
清楚易读的算法竞赛代码模板
2024-05-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人