勿忘勿失
这个作者很懒,什么都没留下…
展开
-
P8773 [蓝桥杯 2022 省 A] 选数异或(ST表)
【代码】P8773 [蓝桥杯 2022 省 A] 选数异或(ST表)原创 2024-03-24 12:22:34 · 57 阅读 · 0 评论 -
SP1684 FREQUENT - Frequent values(ST表)
【代码】SP1684 FREQUENT - Frequent values(ST表)原创 2024-03-24 10:52:40 · 445 阅读 · 0 评论 -
P1816 忠诚(ST表)
【代码】P1816 忠诚(ST表)原创 2024-03-24 10:32:36 · 51 阅读 · 0 评论 -
P3865 【模板】ST 表(ST表)
【代码】P3865 【模板】ST 表(ST表)原创 2024-03-24 10:18:18 · 57 阅读 · 0 评论 -
P1908 逆序对(树状数组(单点修改+区间查询)+离散化)
【代码】P1908 逆序对(树状数组(单点修改+区间查询)+离散化)原创 2024-03-21 12:28:34 · 27 阅读 · 0 评论 -
P2880 [USACO07JAN] Balanced Lineup G(树状数组(单点修改+区间查询))
【代码】P2880 [USACO07JAN] Balanced Lineup G(树状数组(单点修改+区间查询))原创 2024-03-21 10:51:58 · 20 阅读 · 0 评论 -
P4939 Agent2(树状数组(单点查询+区间修改))
【代码】P4939 Agent2(树状数组(单点查询+区间修改))原创 2024-03-21 09:47:18 · 12 阅读 · 0 评论 -
P5057 [CQOI2006] 简单题(树状数组(单点查询+区间修改))
【代码】P5057 [CQOI2006] 简单题(树状数组(单点查询+区间修改))原创 2024-03-21 09:37:37 · 20 阅读 · 0 评论 -
P3372 【模板】线段树 1(树状数组(区间修改/查询))
【代码】P3372 【模板】线段树 1(树状数组(区间修改/查询))原创 2024-03-21 09:26:49 · 188 阅读 · 0 评论 -
P3368 【模板】树状数组 2(树状数组(单点查询+区间修改))
【代码】P3368 【模板】树状数组 2(树状数组(单点查询+区间修改))原创 2024-03-21 09:17:44 · 18 阅读 · 0 评论 -
P3374 【模板】树状数组 1(树状数组(单点修改+区间查询))
【代码】P3374 【模板】树状数组 1(树状数组(单点修改+区间查询))原创 2024-03-21 09:12:46 · 24 阅读 · 0 评论 -
P2574 XOR的艺术(线段树(区间修改/查询))
【代码】P2574 XOR的艺术(线段树(区间修改/查询))原创 2024-03-18 11:42:07 · 313 阅读 · 0 评论 -
P3373 【模板】线段树 2(线段树(区间修改/查询))
【代码】P3373 【模板】线段树 2(线段树(区间修改/查询))原创 2024-03-13 11:05:28 · 327 阅读 · 1 评论 -
P1531 I Hate It(线段树(单点修改+区间查询))
【代码】P1531 I Hate It(线段树(单点修改+区间查询))原创 2024-03-13 10:44:39 · 382 阅读 · 0 评论 -
P2357 守墓人(线段树(单点修改/查询+区间修改/查询))
【代码】P2357 守墓人(线段树(单点修改/查询+区间修改/查询))原创 2024-03-13 10:34:54 · 363 阅读 · 0 评论 -
P3353 在你窗外闪耀的星星(线段树(区间查询))
【代码】P3353 在你窗外闪耀的星星(线段树(区间查询))原创 2024-03-13 10:25:11 · 357 阅读 · 0 评论 -
P4939 Agent2(线段树(单点查询+区间修改))
【代码】P4939 Agent2(线段树(单点查询+区间修改))原创 2024-03-13 10:09:05 · 25 阅读 · 0 评论 -
L3-005 垃圾箱分布(Dijkstra(多源点)+结构体排序)
题目链接:L3-005 垃圾箱分布考查知识:Dijkstra(多源点)+结构体排序题意描述:n个城市点,m个垃圾箱点,k条城市点与垃圾箱点之间的路径,l是城市与垃圾箱点距离的上边界垃圾箱的位置必须选在到所有居民点的最短距离最长的地方;如果解不唯一,则输出到所有居民点的平均距离最短的那个解。如果这样的解还是不唯一,则输出编号最小的地点。思路简析:首先对垃圾箱点坐下编号的转化,然后遍历所有垃圾箱点,每个垃圾箱点依次做源点使用dijkstra;最后对符合条件的垃圾箱点结构体排序一下输出答案即可。.原创 2022-03-15 13:15:15 · 419 阅读 · 0 评论 -
L2-010 排座位(并查集)
题目链接:L2-010 排座位考查知识:并查集题意描述:给定n位宾客,m个关系,k条查询,要求判断两个顾客之间是死对头,朋友,死对头但有共同朋友,还是没有关系思路简析:顾客之间是朋友的加入并查集,查询用find函数判断是否在一个集合内即可具体代码#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N=1e2+10; int fa[N];int a[N][N];//a[i][j]:顾.原创 2022-03-14 00:21:07 · 125 阅读 · 0 评论 -
7-50 畅通工程之局部最小花费问题(最小生成树 prim/kruskal )
题目链接:7-50 畅通工程之局部最小花费问题考查知识:最小生成树题意描述:给出村庄数目N (1≤N≤100),道路N(N−1)/2条。两村庄间有道路的成本,以及修建状态:1表示已建,0表示未建。计算出全地区畅通需要的最低成本思路简析:最小生成树模板题了具体代码prim算法板子一 #include<bits/stdc++.h> using namespace std; typedef long long ll; const int N=2e2,inf.原创 2022-03-25 16:57:46 · 880 阅读 · 0 评论 -
4-1.7 文件传输(并查集)
题目链接:4-1.7 文件传输考查知识:并查集题意描述:纯纯的并查集具体代码#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N=1e4+10; int fa[N];void init(int n){ for(int i=1;i<=n;i++)//[1,N] fa[i]=i;} int find(int x){ if(x==fa[x])return x; el.原创 2022-03-14 02:10:11 · 152 阅读 · 0 评论 -
7-9 旅游规划(Dijkstra(两边权))
题目链接:7-9 旅游规划考查知识:dijkstra题意描述:给定n个城市,m条道路,起点s,终点t,每条边都有两个边权,路径长度,过路费;要找出一条出发地和目的地之间的最短路径。如果有若干条路径都是最短的,那么需要输出最便宜的一条路径。具体代码#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N=5e2+10,inf=0x3fffffff;int vis[N],d[N],p[N],.原创 2022-03-14 09:51:10 · 545 阅读 · 0 评论 -
261. 以图判树(并查集)
题目链接:261. 以图判树考查知识:并查集题意描述:给定编号从0到n-1的 n 个结点,和n条边,判断该图是否是一棵树思路简析:用并查集判断是否是联通图,并在一开始建立并查集时图中是否判定环联通但无环可认为是一棵树具体代码class Solution {public: int fa[2020]; void init(int n){ for(int i=1;i<=N;i++)//[1,N] fa[i]=i; } int find(int x){ if(.原创 2022-05-03 10:28:00 · 351 阅读 · 0 评论 -
7-25 朋友圈(并查集)
题目链接:7-25 朋友圈 (25 分)考查知识:并查集题意描述:某学校有N个学生,形成M个俱乐部,一个俱乐部里的学生都是朋友,学生可以参加多个俱乐部,满足“朋友的朋友也是朋友的原则”,找出最大朋友圈里有多少朋友;思路简析:并查集对一个朋友圈的人进行合并并向父结点更新朋友圈人数,最后遍历所有朋友圈,找最大值即可。具体代码#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N=3e4+1.原创 2022-03-13 19:48:41 · 559 阅读 · 0 评论 -
基础实验6-2.6 最短工期(拓扑排序)
题目链接:基础实验6-2.6 最短工期考查知识:拓扑排序题意描述:一个项目由若干个任务组成,任务之间有先后依赖顺序。现给定n个点和m条有向边,计算出这个项目的最早完工时间。思路简析:拓扑排序,并从入度为零的点往后不断更新后继点的最短时间具体代码#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N=1e5+100;int in[N],d[N];//点的入度,最短时间.原创 2022-03-24 21:13:38 · 998 阅读 · 0 评论 -
L2-007 家庭房产(并查集+结构体排序+STL)
题目链接:L2-007 家庭房产考查知识:并查集+结构体排序+STL题意描述:给定每个人的家庭成员和其自己名下的房产,请你统计出每个家庭的人口数、人均房产面积及房产套数。思路简析:并查集合并家庭成员编号;set1保存所有人编号map1建立自己编号,个人信息的映射set2保存所有家庭的根编号,用于统计家庭数map2所有家庭根编号,子编号数组映射,用于根据家庭根编号直接找到其家庭成员编号vector保存所有结果,方便排序具体代码#include<bits/stdc++.h>.原创 2022-03-13 21:21:00 · 154 阅读 · 0 评论 -
7-10 公路村村通(最小生成树 或 并查集+结构体排序)
题目链接:7-10 公路村村通题意描述:给定n个城市m条道路,每条道路的修建都有其费用,问n个城市之间都联通(无向图)的最小成本(即最小生成树!)方法一:并查集(连边改进,判断联通分量)+结构体排序具体代码//并查集(连边改进,判断联通分量)+结构体排序 #include<bits/stdc++.h>using namespace std;typedef long long ll;const int N=1e3+10; int fa[N],sum=0;//村村通需要的最低成本.原创 2022-03-13 23:55:12 · 294 阅读 · 0 评论 -
7-7 六度空间(Floyd)
题目链接:7-7 六度空间考查知识:Floyd题意描述:给定社交网络n个结点,m条边,统计每个节点计算符合“六度空间”理论的结点占结点总数的百分比。思路简析:Floyd求全源最短路,然后统计每个结点与其余结点间距离不超过6的结点数占结点总数的百分比输出即可。具体代码#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N=2e3,inf=0x3fffffff;int d[N][N],n.原创 2022-03-19 21:54:32 · 253 阅读 · 0 评论 -
L2-024 部落(并查集)
题目链接:L2-024 部落考查知识:并查集题意描述:纯纯并查集具体代码#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N=1e5+10; int fa[N]; void init(int n){ for(int i=1;i<=N;i++)//[1,N] fa[i]=i;} int find(int x){ if(x==fa[x])return x; els.原创 2022-03-14 02:40:16 · 274 阅读 · 0 评论 -
7-135 过年了,回家吧(Dijkstra(一边权一点权))
题目链接:7-135 过年了,回家吧考查知识:Dijkstra(一边权一点权)题意描述:给定n个城市,m条道路,起点s,终点t,求一条最短路径并打印。这条路必须是耗时最短的路径,如果有耗时相同的多条路径,选择其中换乘最少的一条。思路简析:使用链式前向星存无向图的邻接表,用堆(优先队列)优化Dijkstra算法,第一标尺时间(路径边权+所有中介点点权,即可以整体看成是边权),第二标尺点数(边权);需要优化的是数值的插入(更新)和取出最小值两个操作,使用邻接矩阵实现的dijkstra算法的复杂度是.原创 2022-03-17 16:49:52 · 260 阅读 · 0 评论 -
L2-013 红色警报(并查集 判断联通分量数)
题目链接:L2-013 红色警报考查知识:并查集判断联通分量数题意描述:给定n个城市m条道路,然后判断删除给定结点后无向图联通分量的变化情况思路简析:题意的“整个国家的连通性”,易知最少原联通分量1分为2,然后还有我们删的一个城市,所以用cn2-cn>1判断具体代码#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N=5e2+10; int fa[N],e[N][N];vo.原创 2022-03-14 01:36:21 · 98 阅读 · 0 评论 -
7-11 关键活动(拓扑排序+逆拓扑排序)
题目链接:7-11 关键活动考查知识:拓扑排序+逆拓扑排序题意描述:关键路径:从源点到汇点的所有路径中,具有最大路径长度的路径称为关键路径,其上的活动称为关键活动n个点,m条有向边,求有向图中的关键路径长度,并按以下要求打印关键路径关键活动输出的顺序规则是:任务开始的交接点编号小者优先,起点编号相同时,与输入时任务的顺序相反。思路简析:从原点出发,按拓扑排序求事件最早发生时间ve从汇点出发,按逆拓扑排序求事件最迟发生时间vl根据各个顶点的ve,vl数组求弧的最早e,最迟l开始时间.原创 2022-03-24 23:57:08 · 1120 阅读 · 0 评论 -
7-8 哈利·波特的考试(Floyd)
题目链接:7-8 哈利·波特的考试考查知识:Floyd题意描述:给定n个动物,m条咒语,问最难变的那种动物需要的魔咒最短。思路简析:动物即地点,一个动物变为另一个动物的魔咒长度即距离,最难变的那种动物即一个地点到所有其他地点的最大路径,最难变的那种动物需要的魔咒最短即按对全源最短路按行(列)取最大值,再在每行(列)的行(列)最大值中取最小值有一点感到困惑,即inf值的选取,不能太大也不能太小,如果有大佬知晓希望指导,嘿嘿具体代码#include<bits/stdc++.h>.原创 2022-03-19 20:39:32 · 289 阅读 · 0 评论 -
L3-007 天梯地图(Dijkstra(两边权+一边权一点权))
题目链接:L3-007 天梯地图考查知识:Dijkstra(两边权+一边权一点权)题意描述:给定n个地点和m条道路,按以下要求任意给定两点间距离。如果最快到达路线不唯一,则输出几条最快路线中最短的那条,题目保证这条路线是唯一的。而如果最短距离的路线不唯一,则输出途径节点数最少的那条,题目保证这条路线是唯一的。思路简析:根据题意两遍dijkstra,第一遍是第一标尺时间(边权),第二标尺距离(边权);第二遍第一标尺距离(边权),第二标尺点数(点权);然后比较两个路径序列即可需要注意的是.原创 2022-03-16 21:51:31 · 434 阅读 · 0 评论 -
1102 迷宫问题(BFS+最短路径)
题目链接:1102 迷宫问题考查知识:BFS+最短路径题意描述:小明置身于一个迷宫,只能向上下左右四个方向移动,且迷宫中存在障碍请找出从起点到终点的最短路程。思路简析:使用STL的queue时,元素入队的push操作只是制造了原数据a的一个副本,所以q.front()和a修改其中任何一个不会影响到另外一个,所以若要对队列中元素进行修改而不仅仅是访问时,队列中存放的元素最好不是元素本身,而是它们的编号(或数组下标)BFS求无权图最短路径,每次访问当前位置的四个方位,将可以访问且未访.原创 2022-05-03 09:55:45 · 446 阅读 · 0 评论 -
7-34 任务调度的合理性(拓扑排序 判断有向无环图)
题目链接:7-34 任务调度的合理性考查知识:拓扑排序 判断有向无环图题意描述:“任务调度”包括一组子任务、以及每个子任务可以执行所依赖的子任务集。对n个任务,判断是否可进行“调度”思路简析:拓扑排序模板题了具体代码#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N=1e3;int n,k,x,in[N];//点的入度vector<int>G[N.原创 2022-03-24 20:43:44 · 522 阅读 · 0 评论 -
L2-001 紧急救援(Dijkstra(一边权一点权))
题目链接:L2-001 紧急救援考查知识:Dijkstra(一边权一点权)题意描述:给定n个城市,m条道路,起点s,终点t,每条边有一边权,每个点有一点权,要求带领救援队尽快从起点到终点,同时一路上召集尽可能多的救援队。具体代码#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N=5e2+10,inf=0x3fffffff;int vis[N],d[N],e[N][N],num[N].原创 2022-03-14 11:09:49 · 158 阅读 · 0 评论 -
L3-022 地铁一日游(Floyd+图搜索)
题目链接:L3-022 地铁一日游考查知识:Floyd+图搜索题意描述:N 个车站 (1 ≤ N ≤ 200),M 条线路 (1 ≤ M ≤ 1500),最短距离每超过 K 公里 (1 ≤ K ≤ 106),加 1 元车费。在某一站上车(不妨设为地铁站 A),则对于所有车费相同的到达站,森森只会在计费距离最远的站或线路末端站点出站当两条或更多条线路经过同一个站点时,可进行换乘,更换自己所乘坐的线路。对于森森每个尝试的站点,输出一行若干个整数,表示能够到达的站点编号。站点编号从小到大排序。.原创 2022-03-24 20:36:09 · 642 阅读 · 0 评论 -
L3-003 社交集群(并查集+sort排序)
题目链接:L3-003 社交集群考查知识:并查集+sort排序题意描述:n个人有k个爱好,问不同的社交集群的个数与每个集群中的人数。思路简析:对爱好做并查集,区分了爱好类;再遍历所有人,记录每个人所属的爱好类的根结点,并标记该爱好类的人数+1具体代码#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N=1e3+10; int fa[N],a[N],b[N];//a[i]为第i个人的.原创 2022-03-13 22:36:42 · 491 阅读 · 0 评论 -
L3-011 直捣黄龙(Dijkstra(一边权两点权))
题目链接:L3-011 直捣黄龙考查知识:Dijkstra(一边权两点权)题意描述:给定n个城市,k条道路,以及己方大本营和敌方大本营的代号,问符合条件的己方大本营到敌方大本营的路径是什么思路简析:使用dijkstra算法,第一标尺速度最快(边权),第二标尺解放的城市数最多(点权),第三标尺杀敌最多(点权)。具体代码#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N=3e2,M=1.原创 2022-03-18 13:48:36 · 644 阅读 · 0 评论