随笔分类 -  算法----------

摘要:日常生活中,你會如何描述處理事情的效率? 「原來她五分鐘內可以吃掉一頭牛!」 「房間這麼小你還能擺一堆雜物?還不快收拾!」 這些描述方法,著重在處理事情的花費時間,或單位空間內的儲存量。描述演算法的效率也如此,就是「測量演算法的執行成本」,例如這個排序法花了 10 秒鐘跑完兩萬筆資料,或是這個模擬演 阅读全文
posted @ 2024-05-11 14:03 RioTian 阅读(38) 评论(0) 推荐(0) 编辑
摘要:BackGround 现在的服务基本是分布式,微服务形式的,而且大数据量也导致分库分表的产生,对于水平分表就需要保证表中 id 的全局唯一性。 对于 MySQL 而言,一个表中的主键 id 一般使用自增的方式,但是如果进行水平分表之后,多个表中会生成重复的 id 值。那么如何保证水平分表后的多张表中 阅读全文
posted @ 2023-02-17 22:48 RioTian 阅读(427) 评论(1) 推荐(1) 编辑
摘要:这个算法的正式名字是:“Twelvefold way”,共用12种情况。 本文转载自:自为风月马前卒的博文:浅谈"n个球"和"m个盒子"之间的关系 一、球异,盒同 不空 该情况为经典的第二类斯特灵数 设 f[n][m] 表示答案 \(f[n][m] = f[n - 1][m - 1] + m 阅读全文
posted @ 2021-08-26 10:57 RioTian 阅读(3996) 评论(0) 推荐(0) 编辑
摘要:模运算是一个高深的地方,初来乍到,还是写一下为敬QAQ。。。 记号 我们把 a 除以 m 所得的余数记作 amodm。 如果 amodm=bmodm,即 a, b 除以 m 所得的余数相等,那么我们记作: \[ a\ 阅读全文
posted @ 2021-07-30 19:17 RioTian 阅读(3892) 评论(0) 推荐(1) 编辑
该文被密码保护。
posted @ 2021-07-22 16:25 RioTian 阅读(15) 评论(0) 推荐(0) 编辑
摘要:悬线法 什么是悬线法? 悬线法是用来解决最大子矩形问题的有力武器,它的思想很简单,代码也很好写。 悬线法的适用范围是单调栈的子集。具体来说,悬线法可以应用于满足以下条件的题目: 需要在扫描序列时维护单调的信息; 可以使用单调栈解决; 不需要在单调栈上二分。 看起来悬线法可以被替代,用处不大,但是悬线 阅读全文
posted @ 2021-07-21 15:05 RioTian 阅读(1252) 评论(0) 推荐(2) 编辑
摘要:模拟退火 Simulatedannealing ,简称 SA ,最早在 1953 年由 N.Metropolis 提出,后经优化得到现在广泛应用的算法,应用在很多领域当中。 算法思想 模拟退火是随机化搜索的一种,若随机化搜索写得好,则可以实现高效率和答案的正确率高 阅读全文
posted @ 2021-05-15 20:00 RioTian 阅读(462) 评论(0) 推荐(0) 编辑
摘要:Gosper’s Hack是一种生成 n元集合所有 k元子集的算法,它巧妙地利用了位运算 void GospersHack(int k, int n) { int cur = (1 << k) - 1; int limit = (1 << n); while (cur < limit) { // d 阅读全文
posted @ 2021-05-15 16:37 RioTian 阅读(531) 评论(0) 推荐(0) 编辑
摘要:[原] E.J.Hoffman; J.C.Loessi; R.C.Moore The Johns Hopkins University Applied Physics Laboratory *[译]* EXP 2017-12-29 注意 由于原文使用了“m皇后”进行描述,所以本文从现在开始也使用“m 阅读全文
posted @ 2021-05-08 17:45 RioTian 阅读(1183) 评论(0) 推荐(0) 编辑
摘要:「Meissel-Lehmer 算法」是一种能在亚线性时间复杂度内求出 1n 内质数个数的一种算法。 在看素数相关论文时发现了这个算法,论文链接:Here。 算法的细节来自 OI wiki,转载仅作为学习使用。 目前先 mark 一下这个算法,等有空的时候再来研究一下,算法的时间复 阅读全文
posted @ 2021-04-20 21:09 RioTian 阅读(2386) 评论(1) 推荐(1) 编辑
摘要:本节部分内容译自博文 Решето Эратосфена 与其英文翻译版 Sieve of Eratosthenes。其中俄文版版权协议为 Public Domain + Leave a Link;英文版版权协议为 CC-BY-SA 4.0。 素数筛法 如果我们想要知道小于等于 n 有多少个 阅读全文
posted @ 2021-04-19 21:45 RioTian 阅读(648) 评论(0) 推荐(1) 编辑
摘要:倍增 倍增是一种非常重要的思想,在 ACM/OI 中有着丰富的应用。 倍增的本质可以表述为,对于一种操作f(x),通过计算f(x),f2(x),f4(x),,f2k(x)来加速求解fn(x)。假设f(x)的时间复杂度为O(1),那么直接计算fn(x)的时间 阅读全文
posted @ 2021-03-16 10:52 RioTian 阅读(1862) 评论(0) 推荐(1) 编辑
摘要:Manacher 算法:解决最长回文子串的利器 阅读全文
posted @ 2020-11-11 13:22 RioTian 阅读(313) 评论(1) 推荐(1) 编辑
摘要:因为我们知道乘法有的时候会溢出,即使是 long long 也可能在乘法时因为结果过大溢出(当模数也是 long long )。所以我们需要寻找一种能高效完成乘法操作并且不会爆 long long 的算法,也就是快速乘。本文也将对几种常用快速乘及其优化技巧做个总结。 1 阅读全文
posted @ 2020-11-04 19:51 RioTian 阅读(687) 评论(0) 推荐(1) 编辑
摘要:min_25 筛介绍 我们考虑这样一个问题。 ans=i=1nf(i) 其中 1n1010 其中 f(i) 是一个奇怪的函数、并不像 μ(i),φ(i),iφ(i)那样具有那么好的性质。但是满足以下条件: 若 p为质数 阅读全文
posted @ 2020-09-30 14:23 RioTian 阅读(368) 评论(0) 推荐(1) 编辑
摘要:首先简单阐述一下递归,分治算法,动态规划,贪心算法这几个东西的区别和联系,心里有个印象就好。 递归是一种编程技巧,一种解决问题的思维方式;分治算法和动态规划很大程度上是递归思想基础上的(虽然实现动态规划大都不是递归了,但是我们要注重过程和思想),解决更具体问题的两类算法思想;贪心算法是动态规划算法的 阅读全文
posted @ 2020-09-01 21:15 RioTian 阅读(5056) 评论(0) 推荐(3) 编辑
摘要:我相信大家都有做过寻找和为定值的两个数这道题,但如果转换一下 寻找和为定值的多个数 该怎么办呢? 题目描述 输入两个整数n和sum,从数列1,2,3.......n 中随意取几个数,使其和等于sum,要求将其中所有的可能组合列出来。 分析与解法 解法一 注意到取n,和不取n个区别即可,考虑是否取第n 阅读全文
posted @ 2020-08-31 21:23 RioTian 阅读(697) 评论(0) 推荐(0) 编辑
该文被密码保护。
posted @ 2020-08-17 09:28 RioTian 阅读(40) 评论(2) 推荐(1) 编辑
摘要:背包问题是一类经典的动态规划问题,它非常灵活,需要仔细琢磨体会,本文先对背包问题的几种常见类型作一个总结,给出代码模板。 根据维基百科,背包问题(Knapsack problem)是一种组合优化的NP完全(NP-Complete,NPC)问题。问题可以描述为:给定一组物品,每种物品都有自己的重量和价 阅读全文
posted @ 2020-08-12 14:34 RioTian 阅读(729) 评论(0) 推荐(1) 编辑
摘要:题目描述 输入一个由数字组成的字符串,把它转换成整数并输出。例如:输入字符串"123",输出整数123。 给定函数原型int StrToInt(const char *str) ,实现字符串转换成整数的功能,不能使用库函数atoi。 分析与解法 本题考查的实际上就是字符串转换成整数的问题,或者说是要 阅读全文
posted @ 2020-08-12 09:11 RioTian 阅读(724) 评论(0) 推荐(2) 编辑

点击右上角即可分享
微信分享提示