10 2020 档案

摘要:题意:统计从1号点到所有的点的最短路的条数。 思路:权重都是1,开一个数组cnt [ N ], cnt[ i ]代表到 i 的最短路的个数。 如果dis[ v ] > dis[ u ] + 1,那么到 v 的最短路的个数也就是到 u 的个数( cnt [ v ]=cnt[ u ])。 dis[ v 阅读全文
posted @ 2020-10-29 20:44 Swelsh-corgi 阅读(267) 评论(0) 推荐(0)
摘要:题意: 拓扑排序,输出字典序最小的。 思路:优先队列优化。 #include <iostream> #include <vector> #include <queue> #include<string.h> using namespace std; int n, m; const int N=1e5 阅读全文
posted @ 2020-10-28 19:52 Swelsh-corgi 阅读(472) 评论(0) 推荐(0)
摘要:#include <iostream> #include <vector> #include <queue> using namespace std; int n, m; const int N=1e5+10; vector<int> out[N]; //入度记录 int in[N]; //出度记录 阅读全文
posted @ 2020-10-28 19:25 Swelsh-corgi 阅读(99) 评论(0) 推荐(0)
摘要:思路:既然求最大生成树,那就把虽有的边的权重都变成负的,这样就能求得最大生成树了,然后来一个ans更新,每次比较边的大小就能找到最大边中的最小边了。 #include<stdio.h> #include<string.h> #include <iostream> #define MAX 0x3f3f 阅读全文
posted @ 2020-10-24 16:59 Swelsh-corgi 阅读(132) 评论(0) 推荐(0)
摘要:最小生成树模板。 #include <iostream> #include<stdio.h> #include<string.h> #define MAX 0x3f3f3f3f using namespace std; int vis[1010]; int Map[1010][1010]; int 阅读全文
posted @ 2020-10-24 16:10 Swelsh-corgi 阅读(117) 评论(0) 推荐(0)
摘要:在路径相同的情况下,选择钱最少的,只需要加一个变量 w就可以了。 #include <iostream> #include <algorithm> #include <queue> #include <cstdio> #include <cstring> #include <vector> usin 阅读全文
posted @ 2020-10-24 13:25 Swelsh-corgi 阅读(294) 评论(0) 推荐(0)
摘要:思路:搞人的题,特判0 0 的时候 输出 "is a tree.", 存在回路的时候 输出 "is not a tree.", 存在两个联通分量的时候输出 "is not a tree."。也就是两个树的时候。 两个树要怎么判断呢 假设给出的所有的边,组成一棵树,利用并查集我们可以把他所有的子节点并 阅读全文
posted @ 2020-10-21 18:48 Swelsh-corgi 阅读(172) 评论(0) 推荐(0)
摘要:题意:给你一个n × m n\times mn×m的矩阵,你可以对其中的任意元素进行自增或自减1 11操作。问你至少要经过多少次操作才能使得它变成nice矩阵? nice矩阵的定义为:任一行或任一列都是回文序列。 思路:首先可以观察到,假设某个元素的位置是a[i][j],那么受它影响的元素的位置是 阅读全文
posted @ 2020-10-05 21:05 Swelsh-corgi 阅读(228) 评论(0) 推荐(0)
摘要:题意:给你N个数,求这些数能组成的等差数列的最长的长度。 思路:暴力,每个 a[ i ],当成首项,然后求枚举 a[i+1]-a[i]=d,在来一层for循环,从i+1开始,检查从i+1到N有多少以d为公差的数,这里需要用hash_map标记一下,如果用map的复杂度是O(logn),hash_ma 阅读全文
posted @ 2020-10-04 18:59 Swelsh-corgi 阅读(148) 评论(0) 推荐(0)
摘要:题意: 给你一个数n,下面紧接着给你n个数,由0到1组成,如果为1则说明此boss较难,0则较简单,你的朋友每通过一个较难的boss时需使用一个跳跃点,你的朋友先手每次能杀死1或2个boss紧接着是你一直到n个boss杀完,问:至少需要多少个跳跃点. 思路: 两种情况: 定义两个参数:i 代表 第几 阅读全文
posted @ 2020-10-02 20:02 Swelsh-corgi 阅读(109) 评论(0) 推荐(0)
摘要:题意: 两个车相向而行,初始速度为1 ,当到达 a[i] 的位置的时候,速度就会+1,问什么时候回相遇 思虑:二分查找时间。 #include<bits/stdc++.h> using namespace std; typedef long long ll; const int N=2e5+10; 阅读全文
posted @ 2020-10-02 19:39 Swelsh-corgi 阅读(193) 评论(0) 推荐(0)