摘要: 在路径相同的情况下,选择钱最少的,只需要加一个变量 w就可以了。 #include <iostream> #include <algorithm> #include <queue> #include <cstdio> #include <cstring> #include <vector> usin 阅读全文
posted @ 2020-10-24 13:25 Swelsh-corgi 阅读(238) 评论(0) 推荐(0) 编辑
摘要: 思路:搞人的题,特判0 0 的时候 输出 "is a tree.", 存在回路的时候 输出 "is not a tree.", 存在两个联通分量的时候输出 "is not a tree."。也就是两个树的时候。 两个树要怎么判断呢 假设给出的所有的边,组成一棵树,利用并查集我们可以把他所有的子节点并 阅读全文
posted @ 2020-10-21 18:48 Swelsh-corgi 阅读(161) 评论(0) 推荐(0) 编辑
摘要: 题意:给你一个n × m n\times mn×m的矩阵,你可以对其中的任意元素进行自增或自减1 11操作。问你至少要经过多少次操作才能使得它变成nice矩阵? nice矩阵的定义为:任一行或任一列都是回文序列。 思路:首先可以观察到,假设某个元素的位置是a[i][j],那么受它影响的元素的位置是 阅读全文
posted @ 2020-10-05 21:05 Swelsh-corgi 阅读(213) 评论(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 阅读(126) 评论(0) 推荐(0) 编辑
摘要: 题意: 给你一个数n,下面紧接着给你n个数,由0到1组成,如果为1则说明此boss较难,0则较简单,你的朋友每通过一个较难的boss时需使用一个跳跃点,你的朋友先手每次能杀死1或2个boss紧接着是你一直到n个boss杀完,问:至少需要多少个跳跃点. 思路: 两种情况: 定义两个参数:i 代表 第几 阅读全文
posted @ 2020-10-02 20:02 Swelsh-corgi 阅读(103) 评论(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 阅读(185) 评论(0) 推荐(0) 编辑
摘要: 题意 :就是给你一个序列,序列里不会有0,然后可以在任意两元素间插入任意数,让任意子序列和不为 0 。问需要插入的最少次数。 思路:处理前缀和,然后如果在 a[i] 处出现重复的前缀和说明这一段的和是0,然后ans++,这里需要添加一个数。在从a[i]处开始重新开始处理。 #include<bits 阅读全文
posted @ 2020-09-30 21:13 Swelsh-corgi 阅读(252) 评论(0) 推荐(0) 编辑
摘要: 转载: https://blog.csdn.net/obsorb_knowledge/article/details/81168166 感觉比向量的好理解。。。 #include<stdio.h> const int maxn = 200005; int f[maxn], val[maxn]; in 阅读全文
posted @ 2020-09-04 15:09 Swelsh-corgi 阅读(212) 评论(0) 推荐(0) 编辑
摘要: 正反两次建边,跑两次最短路。(主要存个最短路的模板)。 #include <iostream> #include <algorithm> #include <queue> #include <cstdio> #include <cstring> #include <vector> using nam 阅读全文
posted @ 2020-08-28 14:53 Swelsh-corgi 阅读(253) 评论(0) 推荐(0) 编辑
摘要: 题意,给你一个非递减的数组,问你里面有没有不能构成三角形的边,如果存在则输出,否则输出-1; 思路:非递减,说明刚开始两个加一块是最小的,如果后面存在比他们的和大的就肯定有三条边构不成三角形了,如果后面的比他们的和都要小,说明这个数组里面任意三条边都能构成三角形。 #include<bits/std 阅读全文
posted @ 2020-08-15 11:48 Swelsh-corgi 阅读(168) 评论(0) 推荐(1) 编辑