ACM
J先生的编程笔记
一杯茶,一包烟,一个 BUG 改一天!
展开
-
判断图中是否有环的三种方法
0 什么是环?在图论中,环(英语:cycle)是一条只有第一个和最后一个顶点重复的非空路径。在有向图中,一个结点经过两种路线到达另一个结点,未必形成环。1 拓扑排序1.1 无向图使用拓扑排序可以判断一个无向图中是否存在环,具体步骤如下:求出图中所有结点的度。将所有度 <= 1 的结点入队。(独立结点的度为 0)当队列不空时,弹出队首元素,把与队首元素相邻节点的度减一。如果相邻节点的度变为一,则将相邻结点入队。循环结束时判断已经访问的结点数是否等于 n。等于 n 说明全部结点都.原创 2020-09-04 03:34:04 · 46146 阅读 · 20 评论 -
比较字符串字典序的三种方法【C++】
1 strcmp(s1, s2)在 C 语言中,我们可以使用 strcmp() 函数比较 char* 类型字符串的字典序。当字符串 s1 的字典序小于字符串 s2 的字典序时,返回值 < 0。当字符串 s2 的字典序大于字符串 s1 的字典序时,返回值 > 0。当字符串 s1 的字典序等于字符串 s2 的字典序时,返回值 = 0。#include <iostream>using namespace std;int main() { char s1[2] = "原创 2020-08-30 02:20:12 · 14738 阅读 · 3 评论 -
判断图的连通性的三种方法:DFS、BFS 和并查集
1 什么是结点的连通性?若图 G 中两个不同的结点 u 和 v 存在路径 e,则称结点 u 和结点 v 连通。2 什么是图的连通性?若图 G 中任意两个结点连通,则称图 G 连通。3 怎样判断图的连通性?判断图的连通性的常见方法有三种:DFS、BFS 和并查集。3.1 DFS深度优先遍历得到的是图的一个连通分量。算法流程:从某个结点 v 出发,访问结点 v,并令 vis[v] = 1;查找 v 的所有邻接点 i,若结点 i 并未被访问过(vis[i] = 0),则从结点 i原创 2020-08-27 18:02:31 · 4235 阅读 · 0 评论 -
《挑战程序设计竞赛》阅读笔记
第 1 章 蓄势待发——准备篇1.1 何谓程序设计竞赛P2 抽签Page思想复杂度34 层循环O(n4)O(n^4)O(n4)22对原数组排序3 层循环,二分查找 m - a[i] - a[j] - a[k]O(nlogn)O(n \log n)O(nlogn)O(n3logn)O(n^3 \log n)O(n3logn)23求 a[i] + a[j] 并排序两层循环,二分查找 m - a[i] - a[j]O(n2logn)O(n^2 \原创 2020-07-06 02:57:58 · 370 阅读 · 0 评论 -
链表
链表单向链表和双向链表1单链表提供了在常数时间内的 addAtHead 操作和在线性时间内的 addAtTail 的操作。双链表提供了在常数时间内的 addAtHead 和 addAtTail 操作,并且优化的插入和删除。双链表在 Java 中的实现为 LinkedList,在 Python 中为 list。这些结构都比较常用,有两个要点:哨兵节点:哨兵节点在树和链表中被广泛用作伪...转载 2020-04-28 17:30:40 · 152 阅读 · 0 评论 -
二分法解最小化【数组分段和】问题
LCP 12. 小张刷题计划class Solution {public: int getNum(vector<int>& time, int vol) { int res = 1; int Sum = 0; int Max = 0; for (int i = 0; i < time.size...原创 2020-04-26 01:12:05 · 255 阅读 · 0 评论 -
C(n, m) % MOD
Cnm % 109C^m_n\ \%\ 10^9Cnm % 109#include <bits/stdc++.h>using namespace std;typedef long long ll;const ll MOD = 1e9 + 7;ll inv(ll a) { return a == 1 ? 1 : (MOD-MOD/...转载 2019-04-08 09:32:05 · 270 阅读 · 0 评论