算法
噶米困了
这个作者很懒,什么都没留下…
展开
-
Dijkstra 求解最短路
给定一个 n 个点 m 条边的有向图,图中可能存在重边和自环,所有边权均为正值。请你求出 1 号点到 n 号点的最短距离,如果无法从 1 号点走到 n 号点,则输出 −1。原创 2022-11-09 22:19:37 · 122 阅读 · 0 评论 -
Acwing 802. 区间和(整数离散化)
接下来,进行 m 次询问,每个询问包含两个整数 l 和 r,你需要求出在区间 [l,r][l,r] 之间的所有数的和。现在,我们首先进行 n 次操作,每次操作将某一位置 x 上的数加 c。假定有一个无限长的数轴,数轴上每个坐标上的数都是 0。共 m 行,每行输出一个询问中所求的区间内数字和。接下来 n 行,每行包含两个整数 x 和 c。再接下来 m行,每行包含两个整数 l 和 r。第一行包含两个整数 n 和 m。原创 2022-11-05 10:24:18 · 153 阅读 · 0 评论 -
分治法——求解第k小问题(线性时间选择)
给定一个长度为 n 的整数数列,以及一个整数 k,请用快速选择算法求出数列从小到大排序后的第 k个数。原创 2022-10-23 22:18:07 · 1267 阅读 · 2 评论 -
AcWing 91. 最短Hamilton路径
对于任意的 x,y,zx,y,z,数据保证 a[x,x]=0,a[x,y]=a[y,x]a[x,x]=0,a[x,y]=a[y,x] 并且 a[x,y]+a[y,z]≥a[x,z]a[x,y]+a[y,z]≥a[x,z]。给定一张 nn 个点的带权无向图,点从 0∼n−10∼n−1 标号,求起点 00 到终点 n−1n−1 的最短 Hamilton 路径。接下来 nn 行每行 nn 个整数,其中第 ii 行第 jj 个整数表示点 ii 到 jj 的距离(记为 a[i,j]a[i,j])。原创 2022-10-22 17:06:38 · 79 阅读 · 0 评论 -
Acwing——线性DP
AcWing 896. 最长上升子序列 Ⅱ。AcWing 895. 最长上升子序列。AcWing 897. 最长公共子序列。AcWing 902. 最短编辑距离。AcWing 898. 数字三角形。AcWing 899. 编辑距离。原创 2022-10-20 22:21:26 · 104 阅读 · 0 评论 -
P1352 没有上司的舞会
他们之间有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司。,但是呢,如果某个职员的直接上司来参加舞会了,那么这个职员就无论如何也不肯来参加舞会了。所以,请你编程计算,邀请哪些职员可以使快乐指数最大,求最大的快乐指数。现在有个周年庆宴会,宴会每邀请来一个职员都会增加一定的快乐指数。树形dp,思路比较清晰,明确状态转移方程。输出一行一个整数代表最大的快乐指数。,且给出的关系一定是一棵树。输入的第一行是一个整数。行,每行一个整数,第。行,每行输入一对整数。原创 2022-10-20 17:43:39 · 86 阅读 · 0 评论 -
P1439 最长公共子序列
题目运用全排列的性质,即a序列和b序列都是1~n的一个全排列,我们可以用一个map来标记a数组中每个元素出现的位置,然后枚举b数组的每个元素,物理意义:表示从i到j这段区间,两个序列最长公共子序列的长度。,这样就可以实现nlogn的时间复杂度,整个优化的思想跟。采用O(n^2)复杂度的只能过掉一半数据。下面是O(nlogn)的做法。原创 2022-10-17 21:50:31 · 126 阅读 · 0 评论 -
7.13 AcWing 1211.蚂蚁感冒
**长 100 厘米的细长直杆子上有 n 只蚂蚁。它们的头有的朝左,有的朝右。每只蚂蚁都只能沿着杆子向前爬,速度是 1 厘米/秒。当两只蚂蚁碰面时,它们会同时掉头往相反的方向爬行。这些蚂蚁中,有 1 只蚂蚁感冒了。并且在和其它蚂蚁碰面时,会把感冒传染给碰到的蚂蚁。请你计算,当所有蚂蚁都爬离杆子时,有多少只蚂蚁患上了感冒。输入格式第一行输入一个整数 n, 表示蚂蚁的总数。接着的一行是 n 个用空格分开的整数 Xi, Xi 的绝对值表示蚂蚁离开杆子左边端点的距离。正值表示头朝右,负值表示头朝左原创 2022-07-13 00:31:39 · 101 阅读 · 0 评论 -
模拟队列+单调栈+单调队列
AcWing 829. 模拟队列#include<iostream>using namespace std;const int N = 100010;int h[N],hh,tt = -1,x;int main(){ int n;cin >> n; while(n -- ) { string a;cin >> a; if(a == "push") { cin &g原创 2021-08-16 15:41:54 · 87 阅读 · 0 评论 -
单链表+双链表(邻接表)+模拟栈
#include<iostream>using namespace std;const int N = 100010;int head,idx,e[N],ne[N];//初始化 void init(){ head = -1; idx = 0;}//删除 void del(int k){ ne[k] = ne[ne[k]];}//头插void add_head(int x){ e[idx] = x; ne[idx] = head; head = idx原创 2021-08-09 21:11:44 · 68 阅读 · 0 评论 -
8.3 学习笔记 前缀和与差分+双指针位+位运算+离散化+区间合并
前缀和与差分AcWing 795.前缀和一维前缀和S[i] = a[1] + a[2] + ... a[i]a[l] + ... + a[r] = S[r] - S[l - 1]#include<iostream>#include<cstdio>using namespace std;const int N = 100010;int n,m;int a[N],s[N];int main(){ scanf("%d%d",&n, &原创 2021-08-03 15:26:35 · 132 阅读 · 0 评论 -
最短路+花费模板题
题目链接:HDU-3790最短路+花费模板题//堆优化 O(mlogn) Ps:不适于稠密图#include<iostream>#include<cstdio>#include<algorithm>#include<queue>#include<cstring>#include<vector>using namespace std;typedef pair<int,int> PII;const int原创 2021-08-02 21:07:40 · 87 阅读 · 0 评论