图论
这学期离散数学属实上的比线代舒爽太多因为很多知识点可以切实应用到代码实现,几乎是立即反馈。本篇可能比较杂乱,会慢慢整理,先挖好坑再说()
哈希
主要做ai解答的记录 哈希模板[cf大佬博客](Blowing up unordered_map, and how to stop getting hacked on it - Codeforces) 1. 标准 unordered_map 安全增强版这是在比赛中最通用的写法,兼容所有现代 C++ 编译器。 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647#include <iostream>#include <unordered_map>#include <chrono> // 必须引用,用于获取随机时间using namespace std;// --- 第一部分:把图片里的 custom_hash 结构体抄下来 ---struct custom_hash { static uint64_t splitmix64(uint64_t x) { // 这是一个高品质的扰动函数,把输入的...
数学碎片
这篇文章主要收录一些不算奇淫技巧的小tips,这种比较散乱的小知识点记起来还是需要系统化 蔡勒公式(时间转换到星期几学校oj有很多时间转换的题目但是这个可以说知道公式就秒了,如果自己思考实现还是要费一点时间。更巧的是算法期中考完试在楼道还捡到了一张小纸条,就赫然写着这个公式。有种低山臭水遇知音感英雄所见略同感。蔡勒(Zeller)公式是一个非常有名的数学公式,可以直接根据日期(年、月、日)算出那天是星期几。 1. 蔡勒公式$$W = (d + 2m + 3(m+1)/5 + y + y/4 - y/100 + y/400 + 1) \bmod 7$$ $y$:年份 $m$:月份 $d$:日期 $W$:结果。0代表周日,1代表周一,2代表周二…以此类推,6代表周六。 2. **最重要的“潜规则”蔡勒公式有一个非常特殊的规定,如果你忘了这一步,算出来全是错的: 如果月份是 1月 或 2月,必须把它们看作是前一年的 13月 和 14月。 比如:2024年 1月 20日 $\rightarrow$ 看作 2023年 13月 20日...
高精度
高精度乘法高精度乘低精度12345678910111213141516171819// A 是大数(vector),b 是普通整数(int)vector<int> mul(vector<int> &A, int b) { vector<int> C; int t = 0; // t 不仅是进位,也是当前计算的临时结果 // 注意:这里的 t 可能很大,不仅仅是 0 或 1 for (int i = 0; i < A.size() || t; i++) { if (i < A.size()) t += A[i] * b; C.push_back(t % 10); t /= 10; } // 去掉前导 0(比如 123 * 0 = 000,我们要变回 0) while (C.size() > 1 && C.back() == 0) C.pop_back(); ret...
蓝桥补题
A.均衡数这个就是观察加猜想,我真的哭了 首先取log算一下发现2026202620262026 二进制占51位 但是1和0只能相等,所以要找的位数是偶数 所以x是52位 然后1放首位,其余1放末尾从最小开始,因为其他的数字都会比这个数字大而且x是52位,本身就比N大,所以这个数值就是答案 写一个循环就可,二进制再转换成十进制 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263#include<iostream>using namespace std; using ll=long long; ll mul(int n){ if(n==0) return 1; if(n==1) return 2; else return 2*mul(n-1);} int main(){ int a[52]; a[0]=1; for(...
Typora入门使用教程
1.标题级数几级标题就是Ctrl+数字,六级为上限 我是一个萌新或者是#加空格加想写的标题内容 2.引用快捷键>+空格 To be or not to be… 哎我咋还没退出。 哦,退出引用是shift+tab 3.无序列表快捷键ctrl+shift+],想要子列表就按tab,回到上一层是shift+tab 想要退出猛点回车 一个健康大学生的要素 适当翘课 勤点外卖 不跑校园跑 期末周抱佛脚 以上是反义词(doge 一段健康的情感生活 ctrl+shift+[ 学习吉他四部曲 买吉他 买网课 练习 转转二手直出 4.链接例子:[竹官明的个人博客](竹见 - 愿我们都能在自己的季节里,生长为一片竹林) 快捷键:[内容]+(链接) 5.图片插入图片:直接拖动或者复制粘贴到指定位置 或者ctrl+shift+i 6.highlight高亮快捷键:两个=加内容加两个= ==为什么要学的还有这么多== 哦,记得打开高亮设置。 7.划重点1.加粗:ctrl+B I’m a man of my word...
City of God
上帝之城—City of God关于因果报应,轮回再轮回的命运前面都是 loads of crap在初高中因为害怕时间被碎片化消耗,我就会选择用整块的时间去看电影,如果是轻松类的我可以长时间浸入这种心绪里,被正能量的主题鼓舞;如果是教育类型或者是严肃题材的(高一开学看的《隐入尘烟》),带给我的更多是电影结束后的愣神与回味,晚上躺在床上会有片段的闪现和思考。与电影解说不同的是,你需要长时间地浸淫在这种声影的环境里,大到故事情节小到配乐的变化,电影的走向一方面是导演的设置,一方面还有你对前面情节的理解累积。就像是听别人讲课和自学的区别,只有通过自己的时间耗费相对较高的过程去熟悉领悟知识,才能更好的抓住要点,而不是被牵着走,先入为主的接受别人的思想和解读。毕竟一千个读者一千个哈姆雷特,有时候在看完电影大受震撼的时候我会饶有兴趣地去看影评,即使帖子获赞再多,论述再完善再有理有据,有时候我还是会倾向于自己的观点,这无伤大雅 大学手机无节制使用反而没有了这种耐心去抽出整块的时间看电影,浮躁和急于追求即时快感会让人无形浪费时间的同时内心空虚和焦虑,元旦这天下午我抽出时间看了之前了解但是一直没看...
贪心
贪心(Greedy Algorithm)这个带有些许贬义的名字可以直观看出算法的,因为想要最多的所以目光短浅,每一步选择都采取当下选择最优解,从而导致全局最优的算法策略 核心思想 局部最优从而导致全局最优 不会回溯:一旦做出选择就不再改变或者回退 短视性 应用 活动选择(安排最多但是不冲突的活动 霍夫曼编码(数据压缩 最小生成树 最短路径 硬币找零 分数背包问题 (让我慢慢遇见这些问题吧。。。 在看见贪心算法时大家应该会有一种稍稍怀疑但是喜悦的感觉,因为如此省心就可以解决问题,实则不然,在使用贪心算法前,一定要严格证明这个问题是具有贪心性质的!!! 1.合并果子题目:在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。多多决定把所有的果子合成一堆。 每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。可以看出,所有的果子经过 n−1 次合并之后,就只剩下一堆了。多多在合并果子时总共消耗的体力等于每次合并所耗体力之和。 因为还要花大力气把这些果子搬回家,所以多多在合并果子时要尽可能地节省体力。假定每个果子重量都为 1,并且...
动态规划
动态规划(Dynamic Programming)什么是动态规划? 动态规划是一种通过把原问题分解为相对简单的子问题的方式,利用子问题的最优解来求解复杂问题最优化解的方法。 核心思想:把大问题分解成小问题(分治思想) 保存子问题的解,避免重复计算(记忆化) 通过子问题的解推导出原问题的解 特征 最优子结构 一个问题的最优解包含其子问题的最优解,可以通过组合子问题的最优解得到原问题的最优解 例子:最短路径问题从A到C的最短路径 = 从A到B的最短路径 + 从B到C的最短路径 重叠子问题 在求解过程中,相同的子问题会被多次计算,动态规划通过存储计算结果避免重复计算 无后效性 未来的决策只取决于当前状态,与如何到达当前状态无关,”过去不影响未来” 啥时候能用 计数问题:有多少种方式/方法… 最值问题:最大值/最小值/最长/最短… 存在性问题:是否可能/能否实现… 问题可以被分解,且子问题重叠 1.洛谷P1433吃奶酪题目:房间里放着 n 块奶酪。一只小老鼠要把它们都吃掉,问至少要跑多少距离?老鼠一开始在...
搜搜搜搜索
开个专题记录自己搜索的学习过程,对于这种搜索的不同思想我只能说前人的肩膀太过于厚实。 1.BFS摘用OI Wiki的一段话BFS(Breadth First Searth)为图论中的基础算法,在搜索算法中该算法通常指利用队列结构逐层扩展状态的搜索方式。与图论中的 BFS 算法思想一致特别适合求解最短路径或最少步骤类问题。 人话就是,类似于向水里扔一块石头,波纹一圈圈向外扩散,先到达离中心最近的点,同一圈波纹上的点同时到达而且找到的路径一定是最短的 1. 洛谷P1443 马的遍历题目:有一个 n×m 的棋盘,在某个点 (x,y) 上有一个马,要求你计算出马到达棋盘上任意一个点最少要走几步。输入只有一行四个整数,分别为 n,m,x,y。一个 n×m 的矩阵,代表马到达某个点最少要走几步(不能到达则输出 −1)。 唯一要说的:会bfs,以及知道马走日 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556#include<iost...
