目录〇,全文说明、宏定义代码一,单例、快速幂、数论二,并查集、DancingLink、无向图、最小生成树三,有向图、单源最短路径、连通分量四,网格图、回路链路、路径重建五,test〇,全文说明、宏定义代码类里面和宏定义处都有接口注释,因为宏不体现具体参数,所以注释以类里面的为准。除了并查集和DancingLink被其他类使用之外,其他所有的代码依赖关系都只体现在类的继承关系中。所有代码放在一起是可以编译运行的,如果按照章来划分,除了最后一章是测试代码,其他任意一章都可以单独编译运行。宏定义代码:///(1.1)单例/////SingleA略。单例模板///(1.2)快速乘法、幂、矩阵幂////
你好呀ヾ(≧▽≦*)o我是繁凡さん这两年来我写了很多长篇文章,主要涉及数据结构,算法,程序设计竞赛,数学,计算几何等方面的内容:《数据结构》C语言版(清华严蔚敏考研版)全书知识梳理+练习习题详解(超详细清晰易懂)ACM模板(满注释模板!)ACM算法全家桶!!!(全新的模板整合计划)《算法竞赛中的初等数论》(信奥/数竞/ACM)前言、后记、目录索引(十五万字符的数论书)《多项式全家桶》《组合数学全家桶》(ACM/OI全网最全,清晰易懂)《线性代数全家桶》《生成函数全家桶》超级简单的生成函数从入门到升天教程小学生都能看懂的群论从入门到升天教程《群论全家桶》《计算几何全家桶(一)》二维几何基础大合集
#Python#数据结构与算法与leetcode的核心代码模式不同,acm模式下需要自己编写输入与输出函数。推荐以下几个网站练习acm模式:牛客网:OJ在线编程常见输入输出练习场牛客网:华为机试AcWing1.输入函数模板1.1获取输入数据Python输入数据主要通过input()函数实现,input()会读取控制台一行的输入,如果输入有多行的话,需要多次使用input()。#输入为:12345a=input()#a='12345'与Python2中不同,Python3中的input()会将接受的数据返回为一个string类型,如果一行中有多个数据的话,则需要使用split()进行切割。spl
#Python#数据结构与算法与leetcode的核心代码模式不同,acm模式下需要自己编写输入与输出函数。推荐以下几个网站练习acm模式:牛客网:OJ在线编程常见输入输出练习场牛客网:华为机试AcWing1.输入函数模板1.1获取输入数据Python输入数据主要通过input()函数实现,input()会读取控制台一行的输入,如果输入有多行的话,需要多次使用input()。#输入为:12345a=input()#a='12345'与Python2中不同,Python3中的input()会将接受的数据返回为一个string类型,如果一行中有多个数据的话,则需要使用split()进行切割。spl
比赛题目链接感谢wb学长贡献的B、L题解A.NANA与字符串—找规律题目链接注意题目中字符串中只有a,b两个字符因此只要找到左右两端点字符相同的子串,这个子串一定回文,这里不在证明求长为偶数回文串数量,就等于求相同的两个字符,而下标奇偶性不同的数对数量,比如0,1两个下标都是‘a’,这是偶数回文同理求长度为奇数回文,等于求下标奇偶性相同的数对数量求奇数时需要注意,因为奇偶性相同是同类,求数对数量即求组合数n*(n-1)/2最后加上每个单个的字符偶数不需要除以2是因为奇偶性不同,不会重复#include#includeusingnamespacestd;#defineintlonglongsig
比赛题目链接感谢wb学长贡献的B、L题解A.NANA与字符串—找规律题目链接注意题目中字符串中只有a,b两个字符因此只要找到左右两端点字符相同的子串,这个子串一定回文,这里不在证明求长为偶数回文串数量,就等于求相同的两个字符,而下标奇偶性不同的数对数量,比如0,1两个下标都是‘a’,这是偶数回文同理求长度为奇数回文,等于求下标奇偶性相同的数对数量求奇数时需要注意,因为奇偶性相同是同类,求数对数量即求组合数n*(n-1)/2最后加上每个单个的字符偶数不需要除以2是因为奇偶性不同,不会重复#include#includeusingnamespacestd;#defineintlonglongsig
501RSA题目描述RSA算法选择两个不同质数的积作为模数。现在有两个正整数A,B,如果它们是不同的质数,则判定为fullcredit;否则,如果A⋅B不是任意大于1的整数的平方的整数倍,则判定partialcredit;否则判定为nocredit。输入格式一行两个正整数A,B。输出格式fullcredit或partialcredit或nocredit。样例输入11323样例输出1fullcredit样例输入233样例输出2nocredit数据规模所有数据保证2≤A,B≤10122≤A,B≤10^{12}2≤A,B≤1012。思路判断是否为素数,按条件输出,发现判断a*b时数据范围超了;故判断
T1.P4779【模板】单源最短路径(标准版)思路:1.这道题利用里vector建立邻接表。2.运用优先队列重载运算符。3.用的dijkstra算法的思想。4.运用vis数组进行标记。5.运用队列进行回溯。代码如下:#includeusingnamespacestd;constintmaxn=1e5+5;constintINF=1e9+5;intdis[maxn];boolvis[maxn];intn,m,w;structnode1{intv;ints;};structnode2{intto;intlen;};booloperatory.s;}vectormp[maxn];priority_q
🚀欢迎来到本文🚀🍉个人简介:陈童学哦,目前正在学习C/C++、Java、算法等方向,一个正在慢慢前行的普通人。🏀系列专栏:陈童学的日记💡其他专栏:C++STL,感兴趣小伙伴可以了解一下哦🎁希望各位→点赞👍+收藏⭐️+留言📝⛱️万物随心起,心动则万物动🤺Day4集训A-医院设置解题思路示例代码B-Destroyer解题思路示例代码C-单源最短路径(弱化版)解题思路示例代码D-某最短路解题思路示例代码E-SashaandArrayColoring解题思路示例代码总结A-医院设置来源:洛谷P1364医院设置算法标签:动态规划,dp、树形数据结构、广度优先搜索,BFS、最短路解题思路这题是一道最短路
题目链接:https://ac.nowcoder.com/acm/contest/54484/B题意很简单,但是数据范围偏大。错排公式首先来推导一下错排公式:\[D(n)=n!\sum_{k=0}^{n}\frac{(-1)^k}{k!}\]设一个函数:\[S_i表示一个排列中p_i=i的方案数\]那么我们可以知道:\[D(n)=n!-|\cup_{i=1}^{n}S_i|\]这个表示所有方案数减去至少有一个位置放对的方案数。现在来考虑一下如何处理后面这个并集,并集往往是不好求的,而交集会好求很多,所以在求并集的时候我们往往采取容斥原理将一个并集转换成诸多交集的加减运算。我们用一个图可以来表示