
ACM
文章平均质量分 89
晚安丶
无远弗届,功不唐捐。
展开
-
【力扣】数据结构之链表 #160. 相交链表
#160. 相交链表思路(借鉴自belinda)一种比较巧妙的方式是,分别为链表A和链表B设置指针A和指针B,然后开始遍历链表,如果遍历完当前链表,则将指针指向另外一个链表的头部继续遍历,直至两个指针相遇。最终两个指针分别走过的路径为:指针A :a+c+b指针B :b+c+a明显 a+c+b = b+c+a,因而如果两个链表相交,则指针A和指针B必定在相交结点相遇。复杂度分析时间复杂度 :O(m+n)。 空间复杂度 :O(1)。备注分析完了题目,找到解题方法后,还要注..原创 2020-07-01 22:36:03 · 304 阅读 · 0 评论 -
【力扣】数据结构之链表 #206. 反转链表
#206. 反转链表思路方法一:迭代假设存在链表 1 → 2 → 3 → Ø,我们想要把它改成 Ø ← 1 ← 2 ← 3。在遍历列表时,将当前节点的 next 指针改为指向前一个元素。由于节点没有引用其上一个节点,因此必须事先存储其前一个元素。在更改引用之前,还需要另一个指针来存储下一个节点。不要忘记在最后返回新的头引用!方法二:递归递归版本稍微复杂一些,其关键在于反向工作。假设列表的其余部分已经被反转,现在我该如何反转它前面的部分?复杂度分析方法一时间复杂度:...原创 2020-07-02 13:43:30 · 229 阅读 · 0 评论 -
中兴捧月-傅里叶-丰收祭前的游戏(果然菜)
情景描述:在某片遥远的大陆上,居住着两个世代友好的部落,分别是部落A和部落B。他们一起耕耘劳作,互相帮助,亲如一家。久而久之,部落里的每个人都在对方部落里找到了志趣相投,互相欣赏的好朋友。有的人性格热情开朗,好朋友很多;有的人性格沉稳内敛,好朋友相对少一些。每到秋天丰收的季节,这两个部落的人民都会聚集在一起举行盛大的“丰收祭”,来祈祷下一年的风调雨顺。今年的丰收祭马上又要举行了。为了进一步...转载 2020-07-28 11:35:18 · 216 阅读 · 0 评论 -
DFS入门
1.DFS是一种搜索算法,对每一个可能的分支路径深入到不能再深入为止,而且,每一个结点只能访问一次。2.基本思路:从图中的某顶点a出发 - 访问顶点a - 依次从a的未被访问的邻接点出发,对图进行深度优先遍历,直至图中和a有路径相通的顶点都被访问 - 若此时图中尚有顶点未被访问,则从一个未访问的顶点出发,重新进行深度优先遍历,直到图中所有顶点均被访问过为止。3.举个例子吧!输出1~n的全排列...转载 2019-03-31 21:12:03 · 170 阅读 · 0 评论 -
深度优先搜索DFS详解(百练2815 城堡问题)
我们先说说深搜到底是怎么工作的。就是我们在解决一些问题的时候,会牵涉到各种各样的状态,然后各个状态之间可以互相转移,一个状态可以到达另外一个状态, 那往往我们就会把状态之间互相的可达性画成一个图, 那么对于深搜来讲的话,实际上就是去 遍历整个图的这么一个过程。Dfs(v) {if( v 访问过)}return; 将v标记为访问过;对和v相邻的每个点u: Dfs(u);int mai...转载 2019-03-31 21:13:29 · 207 阅读 · 0 评论 -
Dijkstra打印路径
#include <iostream>#include <cstdio>#include <string>#include <cstring>#include <cmath>#include <sstream>#include <algorithm>#include <set>#inc...原创 2019-03-31 21:07:17 · 1031 阅读 · 0 评论 -
如何对double型变量进行memset获得极大值或极小值
我们都知道,如果想对int型变量清极大值或极小值,我们一般选择memset(a,0x3f,sizeof a);或者memset(a,0xef,sizeof a);。然而,如果对double型清0x3f,我们经常会得到一个连1都不到的小数。那么对double清极值是否智能手动或者fill(a+1,a+n,0x7fffffff);呢?首先我们运行以下程序#include<cstdio&...转载 2019-03-31 21:09:36 · 1172 阅读 · 0 评论 -
Bellman-Ford算法
思想Dijkstra算法虽然好,但是它不能解决带有负权边(边的权值为负数)的图。接下来学习一种无论在思想上还是在代码实现上都可以称为完美的最短路径算法:Bellman-Ford算法。Bellman-Ford算法非常简单,核心代码四行,可以完美的解决带有负权边的图。for(int i = 1; i <= nodenum - 1; ++i) for(int ...原创 2019-03-31 21:07:09 · 422 阅读 · 0 评论 -
2019-03-17再战CCF
做题的时候发现今年的题目都出现差错了,体验掉星。下午刚考完,官网还没放出题目,静等分数。放一下今下午撸的代码,祝我做的都对,祝祝祝!第一题#include <iostream>#include <map>#include <stack> #include <queue>#include <string>#inclu...原创 2019-03-17 23:56:21 · 829 阅读 · 0 评论 -
拓扑排序
#include <bits/stdc++.h>using namespace std;typedef long long ll;const int N = 1e5+5;std::vector<int> vec[N];int in[N];//记录每个点的入度int num;//标记已经剥离出来的点的个数 int n, m;//网络的点的个数,边的个数 i...原创 2019-03-28 17:26:16 · 126 阅读 · 0 评论 -
DFS专题(入门,经典为主)
接触了图论以后,我才发现搜索原来是那么的简单。由于最近刘老师给我们讲的图论题实在是不太能够消化,于是我就转向了搜索那一块,从此与搜索过上了幸福美好的生活。 最近突然才发现,搜索其实还是挺简单的。以前培训的时候,最害怕的就是搜索了,感觉完全听不懂。然而,现在随便翻一下黑皮书就明白了,我也不知道究竟是为什么。学会搜索后,就又有了一大波水题哈哈哈。 因为深搜题我已经刷了2个大周了...转载 2019-07-02 20:24:45 · 284 阅读 · 0 评论 -
畅通工程续 (Floyd 和 Dijkstra)
1)Floyd算法 (计算多源点到其他各顶点的最短路径的长度)2)Dijkstra算法(计算单源点到其他各顶点的最短路径的长度)畅通工程续Description某省自从实行了很多年的畅通工程计划后,终于修建了很多路。不过路多了也不好,每次要从一个城镇到另一个城镇时,都有许多种道路方案可以选择,而某些方案要比另一些方案行走的距离要短很多。这让行人很困扰。现在...原创 2019-03-28 17:28:41 · 144 阅读 · 0 评论 -
二叉树操作
#include<iostream>using namespace std;struct BTree{ char data; BTree *lchild; BTree *rchild;};//创建二叉树 void CreateTree(BTree * &T){ char ch; cin>>ch; if(ch=='#')...原创 2019-03-31 21:07:23 · 132 阅读 · 0 评论 -
Number Sequence (矩阵快速幂)
DescriptionA number sequence is defined as follows:f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7.Given A, B, and n, you are to calculate the value of f(n).InputThe input co...原创 2019-03-31 21:07:52 · 486 阅读 · 0 评论 -
hdu1042 (模拟n!)
N很大时候,无法用int表示,所以模拟乘法运算过程来解题,为了方便,我们采取数组a下标从小到大对应个,十,百,千,万...的存数方式。6 5 4 3 1 ×6=6x6=36 3进位剩下6 5x6+3=33 3进位剩下3 4x6+3=27 2进位剩下7 3x6+2=20 2进位剩下0 1x6+2=8 6 3 7...转载 2019-03-31 21:07:57 · 304 阅读 · 0 评论 -
快速幂取模快速算法超级详细介绍
天在网上看了一些快速幂取模算法的介绍,总体感觉要么文章介绍的很简略,导致我搞了半天才搞明白什么意思,还有的文章直接放上了错误的代码,真是坑爹啊!所以我就特意写一篇文章方便大家理解一下这个算法的原理和代码是什么意思。原理介绍:目标:快速求出 (注意:b是一个大数)数学原理工具: (加上括号是为了方便理解运算顺序,证明不难,可以自己百度)...转载 2019-03-31 21:08:03 · 370 阅读 · 0 评论 -
让你大呼 “ 秒哇!” 的动态规划法求解背包问题
目录0/1背包问题完全背包多重背包0/1背包问题#include <iostream>#include<cstdio>#include<string.h>#define N 100#define M 100#define MAX(a,b) a < b ? b : ausing namespace std;...原创 2019-03-31 21:08:10 · 2272 阅读 · 0 评论 -
最小生成树(Prim)
#include <iostream>#include <cstdio>#include <string>#include <cstring>#include <cmath>#include <sstream>#include <algorithm>#include <set>#inc...原创 2019-03-31 21:07:01 · 183 阅读 · 0 评论 -
CCF201812-2小明放学
把红绿黄信号灯看做一个如图的循环#include <iostream>#include <cstdio>#include <string>#include <cstring>#include <cmath>#include <sstream>#include <algorithm>#...原创 2019-03-31 21:08:42 · 264 阅读 · 0 评论 -
C++中查找字符串中子串出现的位置以及次数
加上begin=begin+p.length()后,是将第一个子串跳过然后查找,结果如下,其中T=“111231123”,P=“11”,得到的11出现的次数是2次,但是如果将上面一句代码去掉,得到的是3次。string T;//原串string P;//模式cin>>T>>P;int count=0;int begin=-1;while((begin=T.f...转载 2019-03-15 14:24:00 · 1706 阅读 · 0 评论 -
C++ 切割字符串
通过stl实现涉及到string类的函数findfind函数原型:size_t find ( const string& str, size_t pos = 0 ) const;功能:查找子字符串第一次出现的位置。参数说明:str为子字符串,pos为初始查找位置。返回值:找到的话返回第一次出现的位置,否则返回string::nposstd::vector<...转载 2019-03-15 16:40:48 · 700 阅读 · 0 评论 -
CCF201812-4数据中心
vector版本的Prim,解决了爆内存的问题,但还是超时。#include <stdio.h>#include <string.h>#include <algorithm>#include <vector>#include <iostream>using namespace std;struct Node{...原创 2019-03-31 21:08:34 · 181 阅读 · 0 评论 -
【模版】并查集 及路径压缩
Ps:在网上看到的写的很好的并查集并查集(Union-find Sets)是一种非常精巧而实用的数据结构,它主要用于处理一些不相交集合的合并问题。一些常见的用途有求连通子图、求最小生成树的 Kruskal 算法和求最近公共祖先(Least Common Ancestors, LCA)等。使用并查集时,首先会存在一组不相交的动态集合,一般都会使用一个整数表示集合中的一个元素。每个...转载 2019-03-15 21:09:02 · 301 阅读 · 0 评论 -
程序员们梦寐以求的头文件
偶然在CF上做题,在借鉴别人代码的时候,看到了这个神奇的头文件,生平第一次见。。。然后就稍稍地百度了一下,才知道它这么腻害,竟然包含了C++的所有头文件!使用和往常的头文件一样: #include<bits/stdc++.h> using namespace std; int main() { int a,b; ...转载 2019-02-24 16:26:24 · 216 阅读 · 0 评论