- 博客(59)
- 收藏
- 关注
原创 P3372 【模板】线段树 1
题目描述如题,已知一个数列,你需要进行下面两种操作:将某区间每一个数加上kk。 求出某区间每一个数的和。输入格式第一行包含两个整数n, mn,m,分别表示该数列数字的个数和操作的总个数。第二行包含nn个用空格分隔的整数,其中第ii个数字表示数列第ii项的初始值。接下来mm行每行包含33或44个整数,表示一个操作,具体如下:1 x y k:将区间[x, y][x,y]内每个数加上kk。 2 x y:输出区间[x, y][x,y]内每个数的和。...
2022-05-29 21:20:05 236
原创 链式前向星模板
#include <bits/stdc++.h>struct node{ int v; int w; int next; //下一条边的编号};int head[10001];//head[i]表示节点i的第一条出边的编号node edge[1000000]; //edge[i]表示是第i条边int cnt;void add(int x,int y,int z){ edge[cnt].v=y; edge[cnt].w=z; edge[cnt].next=head[x].
2022-05-14 15:51:28 203
原创 P4551 最长异或路径
题目描述给定一棵nn个点的带权树,结点下标从11开始到nn。寻找树中找两个结点,求最长的异或路径。异或路径指的是指两个结点之间唯一路径上的所有边权的异或。输入格式第一行一个整数nn,表示点数。接下来n-1n−1行,给出u,v,wu,v,w,分别表示树上的uu点和vv点有连边,边的权值是ww。输出格式一行,一个整数表示答案。输入输出样例输入 #1复制41 2 32 3 42 4 6输出 #1复制7说明/提示最长异或...
2022-05-14 15:45:30 239
原创 四舍五入到某一位
#include <bits/stdc++.h>int main (){ double a=1.33333; //四舍五入保留3位 //区分正负 printf("%.3lf\n",((int)(a*1000+0.5))/1000.0);//注意除的时候带.0(表示double) double b=-1.33333; printf("%.3lf\n",((int)(b*1000-0.5))/1000.0); return 0;}...
2022-05-11 00:12:20 124
原创 P5905 【模板】Johnson 全源最短路+重载运算操作符
题目描述给定一个包含nn个结点和mm条带权边的有向图,求所有点对间的最短路径长度,一条路径的长度定义为这条路径上所有边的权值和。注意: 边权可能为负,且图中可能存在重边和自环; 部分数据卡nn轮 SPFA 算法。 输入格式第11行:22个整数n,mn,m,表示给定有向图的结点数量和有向边数量。接下来mm行:每行33个整数u,v,wu,v,w,表示有一条权值为ww的有向边从编号为uu的结点连向编号为vv的结点。输出格式...
2022-05-02 14:36:29 474
原创 P1938 [USACO09NOV]Job Hunt S(spfa,队列+邻接表优化)
题目描述Bessie is running out of money and is searching for jobs. Farmer John knows this and wants the cows to travel around so he has imposed a rule that his cows can only make D (1 <= D <= 1,000) dollars in a city before they must work in another cit
2022-05-01 20:18:00 344
原创 P1359 租用游艇(dijkstra不优化)
//dijkstra不用优先队列和邻接表优化的话比较好写题目描述长江游艇俱乐部在长江上设置了 nn 个游艇出租站 1,2,\cdots,n1,2,⋯,n。游客可在这些游艇出租站租用游艇,并在下游的任何一个游艇出租站归还游艇。游艇出租站 ii 到游艇出租站 jj 之间的租金为 r(i,j)r(i,j)(1\le i\lt j\le n1≤i<j≤n)。试设计一个算法,计算出从游艇出租站 11 到游艇出租站 nn 所需的最少租金。输入格式第一行中有一个正整数 nn,表示有 nn 个游艇出租
2022-05-01 15:37:21 132
原创 P3956 [NOIP2017 普及组] 棋盘(dfs加剪枝)
题目背景NOIP2017 普及组 T3题目描述有一个m \times mm×m的棋盘,棋盘上每一个格子可能是红色、黄色或没有任何颜色的。你现在要从棋盘的最左上角走到棋盘的最右下角。任何一个时刻,你所站在的位置必须是有颜色的(不能是无色的), 你只能向上、 下、左、 右四个方向前进。当你从一个格子走向另一个格子时,如果两个格子的颜色相同,那你不需要花费金币;如果不同,则你需要花费11个金币。另外, 你可以花费22个金币施展魔法让下一个无色格子暂时变为你指定的颜色。但这个魔法不能...
2022-04-30 18:00:59 837
原创 P1457 [USACO2.1]城堡 The Castle(bfs)
题目背景我们憨厚的 USACO 主人公农夫约翰(Farmer John)以无法想象的运气,在他生日那天收到了一份特别的礼物:一张“幸运爱尔兰”(一种彩票)。结果这张彩票让他获得了这次比赛唯一的奖品——坐落于爱尔兰郊外的一座梦幻般的城堡!题目描述喜欢吹嘘的农夫约翰立刻回到有着吹嘘传统的威斯康辛老家开始吹嘘了, 农夫约翰想要告诉他的奶牛们关于他城堡的一切。他需要做一些吹嘘前的准备工作:比如说知道城堡有多少个房间,每个房间有多大。另外,农夫约翰想要把一面单独的墙(指两个单位间的墙)拆掉以形成一个更
2022-04-30 17:56:46 365
原创 L2-011 玩转二叉树(二叉树建立及遍历)
L2-011 玩转二叉树分数25全屏浏览题目切换布局作者陈越单位浙江大学给定一棵二叉树的中序遍历和前序遍历,请你先将树做个镜面反转,再输出反转后的层序遍历的序列。所谓镜面反转,是指将所有非叶结点的左右孩子对换。这里假设键值都是互不相等的正整数。输入格式:输入第一行给出一个正整数N(≤30),是二叉树中结点的个数。第二行给出其中序遍历序列。第三行给出其前序遍历序列。数字间以空格分隔。输出格式:在一行中输出该树反转后的层序遍历的序列。数字间以1个空格分隔,行...
2022-04-26 21:31:29 671
原创 L2-006 树的遍历分数 (二叉树的建立与遍历)
给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列。这里假设键值都是互不相等的正整数。输入格式:输入第一行给出一个正整数N(≤30),是二叉树中结点的个数。第二行给出其后序遍历序列。第三行给出其中序遍历序列。数字间以空格分隔。输出格式:在一行中输出该树的层序遍历的序列。数字间以1个空格分隔,行首尾不得有多余空格。输入样例:72 3 1 5 7 6 41 2 3 4 5 6 7输出样例:4 1 6 3 5 7 2代码长度限制16 KB时间限制
2022-04-26 20:43:41 178
原创 L3-028 森森旅游 (30 分) (dijkstra+反向建图+细节)
好久没出去旅游啦!森森决定去 Z 省旅游一下。Z 省有n座城市(从1到n编号)以及m条连接两座城市的有向旅行线路(例如自驾、长途汽车、火车、飞机、轮船等),每次经过一条旅行线路时都需要支付该线路的费用(但这个收费标准可能不止一种,例如车票跟机票一般不是一个价格)。Z 省为了鼓励大家在省内多逛逛,推出了旅游金计划:在i号城市可以用1元现金兑换ai元旅游金(只要现金足够,可以无限次兑换)。城市间的交通即可以使用现金支付路费,也可以用旅游金支付。具体来说,当通过第j条旅行...
2022-04-20 21:05:59 622
原创 L2-039 清点代码库 (25 分)
重点: vector可以直接比较大小,就像string比较大小一样。也可以放map键值位置自动排序。vector里放结构体,对vector进行排序,需要重载<运算符。里面也涉及到vector排序,如上述。题面:上图转自新浪微博:“阿里代码库有几亿行代码,但其中有很多功能重复的代码,比如单单快排就被重写了几百遍。请设计一个程序,能够将代码库中所有功能重复的代码找出。各位大佬有啥想法,我当时就懵了,然后就挂了。。。”这里我们把问题简化一下:首先假设两个功能模块如果接受同样的输入,总是给出同
2022-04-16 22:37:53 127
原创 L2-004 这是二叉搜索树吗? (25 分)
L2-004 这是二叉搜索树吗? (25 分)一棵二叉搜索树可被递归地定义为具有下列性质的二叉树:对于任一结点,其左子树中所有结点的键值小于该结点的键值; 其右子树中所有结点的键值大于等于该结点的键值; 其左右子树都是二叉搜索树。所谓二叉搜索树的“镜像”,即将所有结点的左右子树对换位置后所得到的树。给定一个整数键值序列,现请你编写程序,判断这是否是对一棵二叉搜索树或其镜像进行前序遍历的结果。输入格式:输入的第一行给出正整数N(≤1000)。随后一行给出N个整数键值,其间以空格...
2022-04-16 11:41:10 312
原创 Alphabet-Rearrange-Inator 3000(字典树自定义排序)
题目描述Thank goodness you’re here, agents! We were just about to start the annual agency giftexchange when we learned of Dr. Hunts Mittleshmirtz’s latest plot. He has created a new devicecapable of changing the order of letters in the alphabet! Agent B.....
2022-04-13 13:00:50 90
原创 二分图最大匹配模板(dfs)(匈牙利算法)
时间复杂度O(nm)#include <bits/stdc++.h>//下面有数据验证using namespace std;int match[100];int n,m;int book[100];int e[100][100];int sum=0;int dfs(int u){ //u表示女,i表示男 int i; for(i=1;i<=n;i++){ if(book[i]==0&&e[u][i]==1){ .
2022-03-22 22:37:01 127
原创 Tarjan算法求割边(邻接表)
时间复杂度O(N+M)#include <bits/stdc++.h>//最下面有数据验证using namespace std;int first[15];int then[15];int root;int idx;int num[15];int low[15];int u[20],v[20];int n,m;void dfs(int cur,int father){ idx++; num[cur]=idx; low[cur]=idx; .
2022-03-21 22:47:22 335
原创 方格取数 (dp,dfs,记忆化搜索)
时间限制:1.000Sec内存限制:128 MB题目描述设有n×m的方格图,每个方格中都有一个整数。现有一只小熊,想从图的左上角走到右下角,每一步只能向上、向下或向右走一格,并且不能重复经过已经走过的方格,也不能走出边界。小熊会取走所有经过的方格中的整数,求它能取到的整数之和的最大值。输入第1行两个正整数n,m。接下来n行每行m个整数,依次代表每个方格中的整数。输出一个整数,表示小熊能取到的整数之和的最大值。样例输入【样例1】 3 4 1 -1 3 2 ......
2022-03-20 10:55:24 202
原创 最小生成树模板(dijkstra,堆+邻接表优化)Prim
在堆中的节点是还没有加入生成树的节点book表示是否进入了生成树#include <iostream> //最下面有数据验证using namespace std;const int INF=0x3f3f3f3f;int n,m,Size; //n是节点个数,m是输入的边数,但无向图,实际边数为2*mint count; //已加入生成树的节点个数int sum; //最小生成树的距离总和int book[1009]; //标记是否加入生成树.
2022-03-15 16:06:40 298
原创 最小生成树 (dijkstra)
#include <iostream> //最下面有数据验证using namespace std;const int INF=0x3f3f3f3f;int e[100][100];int dis[1000]; //存储各点到最小生成树的最短距离int count;int book[1000];int sum;int main (){ int n,m; cin>>n>>m; int i;int j; for(i=1;i&.
2022-03-13 00:01:48 488
原创 最小生成树模板(并查集)Kruskal
#include <iostream> #include <algorithm>using namespace std;typedef struct ac{ int x; int y; int w;}A;A a[10000];int f[1000];bool cmp(A p,A q){ //按照边从小到大排序 return p.w<q.w;}int getf(int u){ //找最终祖先 if(f[u]=.
2022-03-12 21:04:49 414
原创 并查集模板
#include <iostream> //最下面有数据验证//#include <cstring>using namespace std;int f[10000]; //编号即下标为i的人的直属boss是f[i];int getf(int v){ //找最大BOSS // v为人的编号 if(f[v]==v){ return v; }else{ f[v]=getf(f[v]);//路径压缩 retur.
2022-03-12 17:08:50 289
原创 堆排序模板(建议最小堆实现降序和最大堆实现升序)
#include <iostream>using namespace std;int h[10000];int n;void siftdown(int i);int deletemin();int main (){ cin>>n; int i; for(i=1;i<=n;i++){ cin>>h[i]; } for(i=n/2;i>=1;i--){ siftdown(i);.
2022-03-08 22:45:57 972
原创 帕琪的药园(连通块,bfs实现)
题目描述从红魔馆的大门往里面看就可以看到一个大花园。园内不止种花,而且还种植了各种魔法药材供帕秋莉使用。芙兰对花园里的药材感到好奇,于是她就问红魔馆的门番兼园丁花园里有多少种不同的药材。但是红师傅在看门的时候不是在睡觉就是在睡觉!她只知道各种药材被分割开来,互不相邻。现在你从帕琪那里拿到了花园的地图,药材用小写字母表示,其他花草用'*'表示,空地用空格表示,你能替那个门番回答二小姐的问题吗?顺便一提,同种药材也有优劣之分,帕琪可能会用不同的小写字母表示同一种药材,不同种类的药材一定是被其他花草或是空地
2022-03-07 22:23:57 46
原创 棋盘 III (dfs+剪枝)
题目描述有一个 m × m 的棋盘,棋盘上每一个格子可能是红色、黄色或没有任何颜色的。你现在要从棋盘的最左上角走到棋盘的最右下角。任何一个时刻,你所站在的位置必须是有颜色的(不能是无色的),你只能向上、下、左、右四个方向前进。当你从一个格子走向另一个格子时,如果两个格子的颜色相同,那你不需要花费金币;如果不同,则你需要花费 1 个金币。另外,你可以花费 2 个金币施展魔法让下一个无色格子暂时变为你指定的颜色。但这个魔法不能连续使用,而且这个魔法的持续时间很短,也就是说,如果你使用了这个魔法,走..
2022-03-07 22:18:36 148
原创 单源最短路径Bellman-Ford求最短路径模板+队列优化
Bellman可以解决负权边,也可以用来判断负权回路是否存在。核心代码:for (i = 1; i <= n - 1; i++) { check = 1; for (j = 1; j <= m; j++) { if (dis[v[j]] > dis[u[j]] + w[j]) { dis[v[j]] = dis[u[j]] + w[j]; check = 0;
2022-02-28 21:47:46 182
原创 最大最小公倍数
题目描述已知一个正整数N,问从1~N中任选出三个数,他们的最小公倍数最大可以为多少。输入输入一个正整数N。输出输出一个整数,表示你找到的最小公倍数。样例输入Copy9样例输出Copy504提示数据规模与约定1 <= N <= 10^6。:用到一些数学的东西:本题三个数要两两互质,则三个数的最小公倍数最大(a*(a-1)*(a-2)),否则有公约数。 从大往小找(n到1)。一、相邻的两个数互质 (n与n-1最大公约数是1) 证明:..
2022-02-20 11:41:19 242
原创 螺旋方阵进阶
上一版本螺旋方阵,向每个格子里填数,一步一步走,但本题n过大,一步一步走会tle,且也没必要把每个格子的数填上,所以可以找一些规律,但整体思路与上一版本大致相同。#include <iostream>using namespace std;int main (){ int n; int h,l; cin>>n>>h>>l; int i,k=n-1; int num=0; int x=1,y=1;
2022-02-17 17:01:01 66
原创 求n个数的最小公倍数模板
#include <iostream>#include <algorithm>using namespace std;int main (){ int n; cin>>n; long long a[n+1]; int i; for(i=1;i<=n;i++)cin>>a[i]; long long lcm=a[1]; long long g.
2022-02-16 23:14:39 485
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人