自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 收藏
  • 关注

原创 CheuTEagnb

1

2021-05-06 14:59:03 89

原创 力扣363 矩形区域不超过K的最大矩形

遍历矩形的上边界和下边界,将二维问题降为一维问题。在遍历一维的时候,使用前缀和记录,选择符合条件的Sr 和 Sl力扣class Solution {public: int maxSumSubmatrix(vector<vector<int>>& matrix, int k) { int ans = INT_MIN; int M = matrix.size(), N = matrix[0].size(); f.

2021-04-22 19:41:27 108

原创 1489. 找到最小生成树里的关键边和伪关键边 Kruskal

力扣class Solution {public: vector<int> initDSU(int n) { //初始化并查集 vector<int> ret; for (int i = 0; i < n; ++i) { ret.push_back(i); } return ret; } int find(int x, vector&lt

2021-04-20 15:46:40 89

原创 除法求值 带权并查集 力扣399

除法求值题目class Solution {public: int find(int p, vector<int> &father, vector<double> & weight) { if (father[p] != p) { int tf = father[p]; //保存原父节点 father[p] = find(father[p], father, weight);

2021-01-14 15:54:26 99 1

原创 菜鸡只会埃氏筛

class Solution {public: int countPrimes(int n) { vector<bool> arr(n, true); for (int i = 2; i * i < n; ++i) { for (int j = i * i; j < n; j += i) { arr[j] = false; } }

2020-12-06 20:30:30 54

原创 多重背包问题 二进制优化 模板

#include <bits/stdc++.h>using namespace std;using PII = pair<int, int>;const int N = 2005;int dp[N];int main() {#ifndef ONLINE_JUDGE freopen("D:/VS CODE/C++/in.txt", "r", stdin); freopen("D:/VS CODE/C++/out.txt", "w", stdout);

2020-11-22 13:12:40 179

原创 完全背包 一位数组 完全体 模板

#include <bits/stdc++.h>using namespace std;const int N = 1005;int dp[N];int volume[N], val[N];int main() {#ifndef ONLINE_JUDGE freopen("D:/VS CODE/C++/in.txt", "r", stdin); freopen("D:/VS CODE/C++/out.txt", "w", stdout);#endif

2020-11-21 18:04:31 59

原创 0-1背包 一维数组 模板

#include <bits/stdc++.h>using namespace std;const int N = 1005;int dp[N];int val[N], weight[N];int main() {#ifndef ONLINE_JUDGE freopen("D:/VS CODE/C++/in.txt", "r", stdin); freopen("D:/VS CODE/C++/out.txt", "w", stdout);#endif

2020-11-21 16:41:24 66

原创 Huffman Codes 非建树

In 1953, David A. Huffman published his paper “A Method for the Construction of Minimum-Redundancy Codes”, and hence printed his name in the history of computer science. As a professor who gives the final exam problem on Huffman codes, I am encountering a.

2020-11-14 23:57:16 91

原创 楼兰图腾 线段树模板

AcWing 241#include <bits/stdc++.h>using namespace std;const int N = 200005;int n;int nums[N];int tree[N];int great[N], low[N]; //储存nums[i]之前有多少个数字大于它,多个数字小于它inline int lowbit(int i){ return i & -i;}void add(int p, int val).

2020-11-10 17:18:57 128

原创 二分图的最大匹配 匈牙利算法 模板

#include <bits/stdc++.h>using namespace std;const int N = 505, M = 100005;int n1, n2, m;int head[N], cnt;struct { int to, nxt;}edges[M];bool st[N]; //记录右半部分节点是否被匹配int match[N]; //记录右半部分匹配的左半部分节点编号void add(int a, int b){

2020-11-09 22:24:19 59

原创 染色法判定二分图 模板题

#include <bits/stdc++.h>using namespace std;const int N = 100005;struct { int to; int nxt;}edges[N << 1];int head[N], cnt = 0;int n, m;int color[N];void add(int u, int v){ edges[++cnt].to = v; edges[cnt].nxt = head

2020-11-09 21:23:55 101

原创 区间和的个数 线段树查询修改 离散化

const int N = 40005;class SegmentTree {public: struct { int val; int l, r; }tree[N]; inline int ls(int root) { return root << 1; } inline int rs(int root) { return (root << 1.

2020-11-08 16:41:16 87

原创 prim 朴素 最小生成树

#include <bits/stdc++.h>using namespace std;const int N = 510;int grid[N][N];int st[N];int dis[N];int n, m;int prim(){ memset(st, 0, sizeof st); memset(dis, 0x3f, sizeof dis); int res = 0; for (int i = 0; i < n; ++i) {

2020-11-04 23:59:50 164

原创 SPFA 超级源点 判断负环

AcWing 852. spfa判断负环#include <bits/stdc++.h>using namespace std;const int N = 2005, M = 10005;int head[N], cnt;int n, m;int dis[N], backup[N];int step[N]; //到当前点最短路径跳转的步数bool st[N];struct{ int v, w; int nxt;} edges[M];int spf

2020-11-04 22:25:59 173

原创 SPFA判断负环 朴素方法 用入队次数判断 一定超时

#include <bits/stdc++.h>using namespace std;const int N = 2005, M = 10005;int head[N], cnt;int n, m;int dis[N], backup[N];int in[N]; //记录节点入队多少次bool st[N];struct{ int u, v, w; int nxt;} edges[M];int spfa(int src, int des){

2020-11-04 22:06:14 151

原创 spfa求最短路 模板

#include <bits/stdc++.h>using namespace std;const int maxn = 100005;int cnt;int head[maxn];int dis[maxn];bool st[maxn]; //用于记录节点是否在更新队列当中struct Edge { int to, next, wt;}edges[maxn];void add(int u, int v, int w) { edges[++cnt].t

2020-11-03 21:55:00 91

原创 Bellman-ford 有边数限制的最短路

给定一个n个点m条边的有向图,图中可能存在重边和自环, 边权可能为负数。请你求出从1号点到n号点的最多经过k条边的最短距离,如果无法从1号点走到n号点,输出impossible。注意:图中可能 存在负权回路 。#include <bits/stdc++.h>using namespace std;const int N = 505, M = 10005;int n, m, k; //点数 边数 松弛时最大迭代次数int dis[N], backup[N];.

2020-11-03 20:08:30 111

原创 有向图的拓扑排序 链式前向星

AcWing 848. 有向图的拓扑序列#include <bits/stdc++.h>using namespace std;const int N = 100005;struct Node { int nxt, to;}nodes[N];int vers[N], cnt;int q[N], d[N]; //q为队列数组,d记录每个节点的入度;int len;int n, m;void add(int u, int v) { nodes[++c.

2020-11-03 15:37:47 205

原创 堆排序模板 输入一个长度为n的整数数列,从小到大输出前m小的数。

#include <bits/stdc++.h>using namespace std;const int N = 100005;int heap[N], siz;int n, m;void down(int i) { int t = i; //t记录i与它的两个子节点中最小的那个节点的编号 if (i * 2 <= siz and heap[i * 2] < heap[t]) t = i * 2; if (i * 2 + 1 <= s

2020-11-03 00:41:22 403

原创 二叉搜索树 遍历 镜像

PTA 7-28 搜索树判断 (25分)对于二叉搜索树,我们规定任一结点的左子树仅包含严格小于该结点的键值,而其右子树包含大于或等于该结点的键值。如果我们交换每个节点的左子树和右子树,得到的树叫做镜像二叉搜索树。现在我们给出一个整数键值序列,请编写程序判断该序列是否为某棵二叉搜索树或某镜像二叉搜索树的前序遍历序列,如果是,则输出对应二叉树的后序遍历序列。#include <bits/stdc++.h>using namespace std;struct Node{ in.

2020-11-02 23:08:03 185

原创 带权并查集 记录节点到根的距离

AcWing 240. 食物链#include <bits/stdc++.h>using namespace std;const int N = 50005;int p[N], dis[N]; //dis为到根节点的距离int find(int x) { if (x != p[x]) { int former_p = p[x]; p[x] = find(p[x]); dis[x] += dis[former_p]; .

2020-11-01 22:02:32 140

原创 并查集 路径压缩 模板

ACWING 837. 连通块中点的数量#include <bits/stdc++.h>using namespace std;const int N = 100005;int p[N], siz[N]; //只有根节点的size是有意义的inline int find(int x) { if (p[x] != x) p[x] = find(p[x]); //路径压缩 return p[x];}int main() {#ifndef ONL.

2020-11-01 15:50:35 83

原创 Tire 模板 高效存储和查找字符串

ACWING 835. Trie字符串统计#include <bits/stdc++.h>using namespace std;const int N = 100005; int idx; //每个节点的唯一标识int son[N][26], cnt[N]; char s1[N], s2[N]; void insert(char s[]) { int p = 0; for (int i = 0; s[i]; ++i) { .

2020-11-01 14:53:47 142

原创 单调栈 模板

给定一个长度为N的整数数列,输出每个数左边第一个比它小的数,如果不存在则输出-1。#include <bits/stdc++.h>using namespace std;stack<int> stk;int main() {#ifndef ONLINE_JUDGE freopen("D:/VS CODE/C++/in.txt", "r", stdin); freopen("D:/VS CODE/C++/out.txt", "w", stdout);.

2020-11-01 13:54:14 73

原创 区间和 离散化模板

ACWING 802 区间和#include <bits/stdc++.h>using namespace std;const int N = 300010;using PII = pair<int, int>;int a[N]; //离散化后坐标点上的值int s[N]; //离散化后坐标点上的前缀和vector<PII> add, query;vector<int> all; //储存离散化映射int n.

2020-10-31 15:03:06 87

原创 PTA树的同构 DFS道路选择

#include <bits/stdc++.h>using namespace std;struct Node { char data; int l, r;}lt[105], rt[105];//记录左树和右树int _list[105] = {0};//记录该节点是否有父节点int build(int n, Node tree[]) { memset(_list, 0, sizeof _list); for (int i = 0; i <

2020-10-30 23:25:31 50

原创 差分模板 区间加减

#include <bits/stdc++.h>using namespace std;const int N = 1e5 + 10;int nums[N];int dif[N];int main() {#ifndef ONLINE_JUDGE freopen("D:/VS CODE/C++/in.txt", "r", stdin); freopen("D:/VS CODE/C++/out.txt", "w", stdout);#endif int n,

2020-10-29 00:35:12 133

原创 AcWing 190 字串变换 双向BFS

#include <bits/stdc++.h>using namespace std;const int N = 100;string A[N], B[N]; //储存变换方式int cnt;string st, ed;int extend_a(queue<string>& q, unordered_map<string, int>& dis){ //对a队列的队首进行拓展 string t = q.front();

2020-10-27 21:31:30 96

原创 电路维修 Acwing

https://www.acwing.com/problem/content/177/#include <bits/stdc++.h>#define x first#define y secondusing namespace std;const int N = 600;using PPI = pair<int, int>;char tb[N][N]; //储存电线初始状态int dis[N][N]; //储存起点到各点的距离bool vis[N][N]; in

2020-10-27 17:47:53 192

原创 状态压缩BFS

魔板,状态压缩BFS#include<iostream>#include<algorithm>#include<cstdio>#include<unordered_map>#include<queue>#include<utility>using namespace std;unordered_map<string, int> dist; //记录变换到当前状态所需要的步骤数unordered_map.

2020-10-25 22:42:22 133

原创 洛谷线段树2

第一行包含三个整数 n,m,pn,m,pn,m,p,分别表示该数列数字的个数、操作的总个数和模数。第二行包含 nnn 个用空格分隔的整数,其中第 iii 个数字表示数列第 iii 项的初始值。接下来 mmm 行每行包含若干个整数,表示一个操作,具体如下:操作 111: 格式:1 x y k 含义:将区间 [x,y][x,y][x,y] 内每个数乘上 kkk操作 222: 格式:2 x y k 含义:将区间 [x,y][x,y][x,y] 内每个数加上 kkk操作 333: 格式:3 x y 含义.

2020-10-21 23:04:37 141

原创 最朴素的线段树

#include<cstring>#include<cstdio>#include<algorithm>#include<iostream>using namespace std;const int N = 2e5 + 10;using ll = long long;int n;struct node { int l, r; ll sum, lz;}tree[N << 2];inline int ls(in

2020-10-21 15:34:07 63

原创 kmp模式匹配模板

kmp算法的关键就是前缀和后缀#include<cstdio>#include<algorithm>#include<cstring>#include<iostream>using namespace std;const int MAX_LEN = 1e5 + 10;int n, len1, len2;char t[MAX_LEN], p[MAX_LEN];int _next[MAX_LEN];inline void get_next.

2020-10-20 15:26:30 85

原创 线段树模板

线段树的类class Segment_tree{public: Segment_tree(int size, int a[]) { arr = new int[size]; tree = new int[size << 2]; for (int i = 0; i < size; ++i) { arr[i] = a[i]; } build_tree(arr, tre

2020-10-18 20:47:20 78

原创 Dijkstra 链式前向星 堆优化 模板

#include <bits/stdc++.h>using namespace std;using ll = long long;using p = pair<ll, int>;const int maxn = 2e5 + 10;int cnt = -1;int head[maxn];ll dis[maxn];bool visted[maxn];struct Edge{ int to, next, wt;}edges[maxn];void ad

2020-10-17 21:42:46 98

原创 非递归汉诺塔问题

非递归汉诺塔问题#include <bits/stdc++.h>using namespace std;struct _move { int n; //当前要移动的盘子编号 int u; //上方还有几个盘子 char s, m, d;//起始塔,中间塔,目的塔 _move(int n1, int u1, char s1, char m1, char d1) : n(n1), u(u1), s(s1), m(m1), d(d1) {}};void hon

2020-10-12 15:19:56 207

原创 json文件的读写

import json# 列表写入文件# 测试listrisk_list = [{'123':'111','456':222},{'123':'111','456':222}]# 将数据写入文件file = open('risk.json', 'w')for i in risk_list: json_i = json.dumps(i) file.write(json...

2020-04-09 05:40:43 110

原创 还原二叉树-dfs

给定一棵二叉树的先序遍历序列和中序遍历序列,要求计算该二叉树的高度。输入格式:输入首先给出正整数N(≤50),为树中结点总数。下面两行先后给出先序和中序遍历序列,均是长度为N的不包含重复英文字母(区别大小写)的字符串。输出格式:输出为一个整数,即该二叉树的高度。输入样例:9ABDFGHIECFDHGIBEAC输出样例:5#include<bits/stdc++.h&gt...

2019-12-23 16:42:04 152

原创 哈利波特的考试-Floyd最短路

哈利·波特要考试了,他需要你的帮助。这门课学的是用魔咒将一种动物变成另一种动物的本事。例如将猫变成老鼠的魔咒是haha,将老鼠变成鱼的魔咒是hehe等等。反方向变化的魔咒就是简单地将原来的魔咒倒过来念,例如ahah可以将老鼠变成猫。另外,如果想把猫变成鱼,可以通过念一个直接魔咒lalala,也可以将猫变老鼠、老鼠变鱼的魔咒连起来念:hahahehe。现在哈利·波特的手里有一本教材,里面列出了所有...

2019-12-22 14:47:17 221

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除