![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
算法模板
算法的常用模板
重剑DS
学的越多,越觉无知
展开
-
P6192 【模板】最小斯坦纳树——最小斯坦纳树
根据题意,设 dp[i][s] 表示以 i 为根的一棵树,包含题目中所要求的集合 S 中所有点的最小代价。给出一个例子,大体的算法流程图如下所示:大佬的解析代码如下:#include <iostream>#include <queue>#include <cstring>#include <climits>#include <algorithm>using namespace std;const int maxn = 11.原创 2021-12-26 22:46:55 · 946 阅读 · 0 评论 -
P4779 【模板】单源最短路径(标准版)—— Dijkstra(单源最短路,有向图 且不带负权边)
用链式前向星存储有关边的信息,无向有权图的存储方式 具体见下图所示:题目要求的是有向有权图可以在上面的基础上稍作修改即可大佬的解析因为当有向图的两个结点u和v,有一条u->v和一条v->u的路径,那么这样以此类推图就成了无向图了。Dijkstra只能处理边权值为正的图,如果为负,可以去模拟一下下面的无向图(如果是有向图,当ABC三点间都有互相到达的边的时候,图就相当于无向图了)就知道了。因为可能会变成到B的路径为:A->B->C->B这样。...原创 2021-03-20 12:13:17 · 207 阅读 · 1 评论 -
【线段树】poj 2182 “Lost Cows“ --- (点修改) / poj 3468 “A Simple Problem with Integers“ -- (区间修改)
题目大意:有编号是1~n的n个数字,2<=n>=8000,乱序排列,顺序是未知的。对于每个位置的数字,知道排在它前面比它小的数字有多少个。求这个乱序数列的顺序。输入样例:51210输出样例:24531题目链接暴力法解题代码#include <cstdio>using namespace std;const int maxn = 8005;int main(){ int n; int pre[maxn],...原创 2021-03-07 22:57:46 · 163 阅读 · 0 评论 -
hdu 1285确定比赛名次(C++)---拓扑排序(优先队列+链式前向星数据结构)
题目链接确定比赛名次Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 54699Accepted Submission(s): 20227Problem Description有N个比赛队(1<=N<=500),编号依次为1,2,3,。。。。,N进行比赛,比赛结束后,裁判委员会要将所有参赛队伍从前往...原创 2021-02-03 16:22:37 · 201 阅读 · 0 评论 -
Treap模板题
这是一道 Treap 的板子题,你需要实现如下几个操作: 插入数 x 删除数 x (若有多个相同的数,因只删除一个) 查询 x 的排名(排名定义为比当前数小的数的个数 +1。若有多个相同的数,因输出最小的排名) 查询排名为 x 的数 求 x 的前驱(前驱定义为小于 x ,且最大的数) 求 x 的后继(后继定义为大于 x,且最小的数) 输入格式:第一行为 n,表示操作的个数,下面 n 行每行有两个数 opt 和 x ,opt 表示操作的序号( 1原创 2021-01-27 15:16:14 · 286 阅读 · 0 评论 -
判断无向图是否存在欧拉回路/欧拉通路的模板---使用并查集判断是否连通
7-18一笔画(45分)小丁最近迷恋上一个游戏,传说中的“一笔画”游戏。那么什么是一笔画?如下图,顾名思义就是一笔可以完成的图。一笔画最基本的要求是在画图的过程中,笔不能离开纸,且笔所画过的线不能重复,最后画完所有的线便算完成。虽然小丁喜欢玩这个游戏,但有时候花费半天也找不到答案。小丁听说写一个计算机程序便能判断是否可以一笔画图,所以他希望善良可爱的你来帮帮他的忙。快来帮帮弱小,可怜,又无助的小丁。输入格式:给出图中的节点数N(1<=N<=1000,编号1-N)和..原创 2021-01-23 16:01:15 · 942 阅读 · 2 评论 -
P3383 【模板】线性筛素数 —— 欧拉筛(线性筛) || 埃氏筛法 (素数筛模板)
解题代码#include <iostream>#include <cstring>using namespace std;typedef long long ll;const int maxn = 100000010;ll n, q;int prime[maxn / 10]; //存储素数(从下标1开始,并且素数大小是升序的)bool isprime[maxn + 1];//欧拉筛void Prime() { memset(is...原创 2020-12-21 11:13:58 · 227 阅读 · 0 评论 -
学长的白日梦(C++) --- 快速幂 + 快乘(模板) 解题
链接:https://ac.nowcoder.com/acm/contest/7872/F来源:牛客网时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 131072K,其他语言262144K64bit IO Format: %lld题目描述20级的学弟学妹们来了,实验室里可怜弱小又无助的wzc学弟终于变成了学长,可以压迫下一级了(?)。但是wzc学长苦于自己的实力进步太慢,很担心自己在学弟学妹们面前丢人,所以天天熬夜在实验室里训练。某一天wzc学长训练得实在太累了,.原创 2020-10-24 23:03:43 · 333 阅读 · 0 评论