- 博客(36)
- 收藏
- 关注
原创 树 链 剖 分
树链剖分树链剖分用于将树分割成若干条链的形式,以维护树上路径的信息。定义重子节点 :其子节点中子树最大的子结点。如果有多个子树最大的子结点,取其一。如果没有子节点,就无重子节点。轻子节点: 表示剩余的所有子结点。从这个结点到重子节点的边为 重边。到其他轻子节点的边为 轻边。若干条首尾衔接的重边构成 重链。初始化两遍dfs第一次处理每个节点的dep(深度) , fa(父亲节点) ,sz(子树大小), son(重链结点)void dfs1(int u , int v , int de )
2022-04-13 09:05:35 403
原创 下一个字典序
构造下一个字典序#include <bits/stdc++.h>using namespace std;const int N = 5 ; int all[N] ; int main(){ int n = 4 ; for(int i = 0 ; i < n; i ++ ) all[i] = i ; do { for(int i= 0 ; i < n ; i ++ ) { cout<<all[i] <<" " ; }
2021-12-21 22:05:51 384 6
原创 E. MEX and Increments
E. MEX and Increments链接题意:数组每一个数都可以加任意次数的1 求当前数组中缺失为i(0<=i<=n)的操作个数思路:每一个i 都是构成前面的操作次数加上将当前值有的个数如果当前值的个数为0 操作次数为 构成前面序列的操作个数 操作个数要加上前面最大可变的差值去构成当前的值的序列如果当前值的个数不为0 操作个数为构成前面的操作个数+当前值的个数代码:#include <bits/stdc++.h>using namespace std;co
2021-12-21 21:35:17 795 1
原创 D. Social Network
D. Social Network链接题意:并查集维护答案取可连接的连通块的和(最大)最开始只能连接一个当两个人在一个并查集里面的时候就可以再连一个连通块代码#include <bits/stdc++.h>using namespace std;const int N = 1e3 + 10 ;int p[N] , si[N] ;int find(int x ){ if(p[x] != x ) p[x] = find(p[x]) ; return p[x] ;
2021-12-19 11:12:55 449 1
原创 E. William The Oblivious
E. William The Oblivious[链接](E. William The Oblivious)题意:给你一个长为 n 的字符串,只包含 abc 三种字符。q 次操作,每次把一个位置的字符改成给定字符,询问当前串至少修改几次满足不包含子串 abc。修改指把一个位置的字符修改成 a、b、c 三种字符之一。线段树维护记录每个区间有多少a b c ab bc abc维护区间a = la + ra ;b = lb + rb ;c = lc + rc ;ab = min(la + rab
2021-12-19 11:06:12 190
原创 abc F - Dist Max 2
abc F - Dist Max 2(二分求答案)链接给n个点, 求min(|xi−xj|,|yi−yj|)的最大值#include <bits/stdc++.h>using namespace std;const int N = 200010;typedef pair<int , int >PII ;int n ;struct node { int x , y ;}all[N] ;bool cmp(node a ,node b ){ return
2021-08-22 11:28:43 204 1
原创 牛客:牛老板
牛老板(记忆化搜索dfs)链接#include <bits/stdc++.h>using namespace std;const int N = 20;long long n6[N] , n9[N] ;long long k ;map<long long , long long > M ;void init(){ n6[0 ] = 1 , n9[0] = 1 ; for(int i = 1 ; i <= 18; i ++ ) { n6[i]
2021-08-20 23:22:01 266
原创 D. Playoff Tournament
D. Playoff Tournament模拟题链接#include <bits/stdc++.h>using namespace std;const int N = 1e6+10;char str[N] ;int tr[N] ;int n ;void pu_up(int u){ if(u == 1 ) return ; int p = u >> 1 ; if(str[n - p + 1 ] == '?') tr[p] = tr[p <<
2021-08-12 21:27:18 161
原创 C. They Are Everywhere 尺取
C. They Are Everywhere链接尺取代码#include <bits/stdc++.h>using namespace std;int main(){ int n ; string a ; cin>>n; cin>>a; map<char , int > p; int si = 0 ; for(int i = 0 ; i < n ; i ++ ) { if(!p[a[i]]) si ++ ; p[
2021-08-06 15:14:41 138
原创 爬虫访问网页(一)
爬虫访问网页(一)工具python开发工具安装requests库代码import requests#引入requests库r = requests.get("http://www.baidu.com")#访问网址print(r.status_code)#状态码 200 为访问成功r.encoding = "UTF-8"#更改编码print(r.text)#输出网页html代码requests 库函数说明requests.request()构造一个申请,支撑以
2021-07-07 14:45:17 666
原创 Best Cow Fences
Best Cow Fences题目链接#include <bits/stdc++.h>using namespace std;const int N = 1e5+10;double all[N] , sum[N];int n , k;bool check(double mid){ for(int i = 1 ; i <= n ; i ++) sum[i] = all[i] - mid; for(int i = 1 ;i <=n ; i ++) sum[i] +
2021-05-04 00:11:29 128
原创 迷阵
迷阵牛客网 题目链接思路:二分+宽搜最小是0 ,最大是3000二分出midfor循环i+mid来找答案宽搜中最小值为1 ,最大值为i+mid宽搜:从1 , 1 开始搜索可以走的并且没有走过的加到queue中如果可以走到终点,返回true,即这个mid是符合答案的将ans更新为mid,同时将最大值更新为mid如果不可以,把最小值更新为mid+ 1#include <bits/stdc++.h>using namespace std;typedef pair<
2021-05-03 21:19:16 129
原创 2021蓝桥c++B组
文章目录蓝桥题解试题 A: 空间试题B:卡片试题C:直线货物摆放试题 E: 路径试题F:时间显示试题 G: 砝码称重试题 H: 杨辉三角形蓝桥题解(这知识哇,他不过脑哇~)试题 A: 空间题目:思路:256MB = 256 * 2 ^10 *2^10 / 4答案:67108864试题B:卡片题目:思路:代码:#include <bits/stdc++.h>using namespace std;int all[15];int main(){ for(in
2021-04-30 16:01:43 355
原创 L2-3 清点代码库 (25 分)
L2-3 清点代码库 (25 分)链接stl库的应用比赛的时候没好好读题……直接用map<string,int>写的,wa了几个点stl没怎么学明白 放我方大佬的题解链接代码#include <bits/stdc++.h>using namespace std;map<vector<int> ,int>p;vector<pair<vector<int> , int>> ve;int n , m ;b
2021-04-27 00:05:50 1606
原创 L2-2 病毒溯源 (25 分)
L2-2 病毒溯源 (25 分)链接这题1.先求最大深度,然后再bfs2.拓扑(还没玩明白)明天补1.代码#include <bits/stdc++.h>using namespace std;const int N = 1e4 +10;int ne[N] , e[N] , h[N] , idx;int n ;int all[N];int res;int ok ;void add(int a , int b){ e[idx] = b; ne[idx] =
2021-04-26 23:57:38 1321
原创 L2-1 包装机(25 分)
L2-1 包装机(25 分)模拟题代码#include <bits/stdc++.h>using namespace std;string all[110];int main(){ int n , m , k ; cin>>n>>m>>k; for(int i = 0 ; i < n ; i ++ ) cin>>all[i]; int ne[110]; memset(ne , 0 , sizeof ne);
2021-04-26 23:52:00 444
原创 L1-8 乘法口诀数列
L1-8 乘法口诀数列这个题的一个坑的点在0的处理链接#include <bits/stdc++.h>using namespace std;int all[100010];int main(){ int a , b , n ; cin>>a>>b>>n; all[0] = a; all[1] = b ; int k = 2 ; for(int i = 2 ; i < n ; i ++) { int t = all[
2021-04-26 23:44:56 348
原创 L1-6 吉老师的回归
L1-6 吉老师的回归链接这道题写的时候想的就是暴力for循环(wa了一个点)考试之后讲题的时学后find函数find会返回匹配字符串的第一个位置代码:#include <bits/stdc++.h>using namespace std;int main(){ int n , m ; cin>>n>>m; getchar(); while(n --) { string str; getline(cin, str); int t
2021-04-26 23:39:13 283
原创 拓扑图
拓扑排序百度百科:对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边<u,v>∈E(G),则u在线性序列中出现在v之前。通常,这样的线性序列称为满足拓扑次序(Topological Order)的序列,简称拓扑序列。简单的说,由某个集合上的一个偏序得到该集合上的一个全序,这个操作称之为拓扑排序。(所有边,起点在终点前面)有向无环图:拓扑图入度:有几条边指向自己出度:有几条边出去思
2021-04-26 21:28:19 3066 1
原创 正则表达式
正则表达式正则表达式的常用操作符操作符说明实例.表示任何字符[ ]字符集,对单个字符给出取值范围[a, b ,c] 表示a , b, c ,[a ~z]表示a到z的单个字符[^]非字符集,对单个字符给出排除范围[^a,b,c]表示非a或非b或c的单个字符*前一个字符的0次或无限次扩展abc*表示 ab , abc ,abcc , ……+前一个字符的1次或无限次扩展abc+ 表示abc , abcc , abccc ……?前一个字
2021-04-19 17:00:26 83
原创 洛谷P2872
洛谷P2872 [USACO07DEC]Building Roads S(一个最小生成树,小菜鸟卡了一个半小时)题目链接(关于最小生成树菜鸟的另一篇博客里有)代码#include <bits/stdc++.h>using namespace std;const int N = 1010 , M = N * N * 2 ;int n , m ;int find_all[N];struct node //存储的坐标{ long long a, b;}all[N];
2021-04-13 21:03:38 150
原创 C语言产生五个不同随机数
C语言产生五个不同随机数代码#include <stdio.h>#include <time.h>#include <stdlib.h>int main(){ srand(int(time(0))); int all[10]; for(int i = 0 ; i < 5 ; i ++) { all[i] = rand() % 32 + 1; for(int j = 0 ; j < i ; j ++) { if(all[
2021-04-11 15:02:52 3665
原创 树的直径
树的直径思路从一个点开始,找距离这个点最远的点x从x开始搜索,找距离x点最远的点 yx和y距离就是数直径的最大值题目Cow Marathon 代码 :#include <iostream>#include <queue>#include <cstring>#include <algorithm>#include <cstdio>//poj不支持万能头using namespace std;const int N=
2021-04-10 15:23:15 76
原创 Windows10下安装requests
Windows10下安装requests出现的问题小菜鸟突然想玩爬虫, 在慕课上找了python网络爬虫与信息提取,小菜鸟真的是菜的安详,第一天安装requests包安了一下午(委委屈屈),下面终结了几个我出现的问题和解决方法最简单的办法就是在dos命令下输入pip install requests但小菜鸟遇到了很多问题1. pip命令最开始的时候是这个样子的(不管是在c盘还是d盘)在网上找为什么之后网上是让更改环境变量我的电脑属性高级设置环境变量path
2021-04-08 16:35:16 982
原创 标签树的遍历
文章目录标签树的遍历标签树的上行遍历标签树的下行遍历标签树的平行遍历标签树的遍历(菜鸟最近在学爬虫,码一点东西)标签树的上行遍历属性说明.parent节点的父亲标签.parents节点先辈标签的迭代类型,用于循环先辈节点,标签树的下行遍历属性说明.contents子节点的列表,将<tag>所有的节点存入列表.children子节点的迭代类型,与.contents类似,用于循环遍历儿子节点.descendants子
2021-04-07 19:40:35 153
原创 龟速乘
龟速乘(位运算,类快速幂)题(先上题)64位整数乘法题是给a,b, p,算a*b%p的值普通之直接成会爆 long long 的数据范围其中一个解法是龟速乘思想 :a * b = b个a相加a * b % p = (a % p + 2a % p +3a % p ……)b转化为二进制即可求得a前的系数(可能说的不是很清楚)代码#include <bits/stdc++.h>using namespace std;typedef long long LL;LL
2021-03-31 21:00:56 470
原创 二分图
文章目录染色体判定二分图 匈牙利算法染色体判定二分图思路题目匈牙利算法思路题目染色体判定二分图 匈牙利算法二分图:二分图又称作二部图,是图论中的一种特殊模型。 设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交的子集(A,B),并且图中的每条边(i,j)所关联的两个顶点i和j分别属于这两个不同的顶点集(i in A,j in B),则称图G为一个二分图。染色体判定二分图思路遍历每一个点如果没有被染色,深搜将这个点染色遍历这个点可以到达的下一个点标记成另一个颜色如果一个点能被
2021-03-09 19:42:22 97
原创 Prim和Kruskal
文章目录最小生成树Prim思路:题目Kruskal思路题目最小生成树百度百科:一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持图连通的最少的边。 最小生成树可以用kruskal(克鲁斯卡尔)算法或prim(普里姆)算法求出。Prim思路:循环 n个点找到不在集合距离集合里点最短的点这个点加到集合里结果+=长度更新这个点到其他点的距离,取最小值题目Prim算法求最小生成树代码:#include <bits/stdc++.h
2021-03-09 18:28:31 189
原创 2021. 03. 04俱乐部月赛
文章目录俱乐部月赛A题目描述输入输出样例输入输出本题坑点代码B题目描述:输入输出样例输入输出本题坑点:代码C题目描述输入输出样例输入输出本题坑点代码D题目描述输入输出样例输入输出提示本题坑点代码E题目描述输入输出样例输入输出本题坑点:代码F题目描述输入输出样例输入输出本题坑点代码G题目描述输入输出样例输入输出本题坑点代码俱乐部月赛A题目:[ zhb去做客]题目描述zhb在黑板上写了n个数,它每次用板擦去掉任意两个数,并在后面写上这两个数的相加的值对11取模的结果。 例:6 7 8 9 10 11,
2021-03-08 16:02:40 122
原创 Floyd最短路
Floyd最短路适用于多源最短路思路邻接矩阵存储权值基于动态规划,即从 i 点到 j 点,会经过 k 点, 遍历这三个点取min(dist[i , k ]+ dis[k , j], dis[i , j])三重循环题目Floyd求最短路代码 :#include <bits/stdc++.h>using namespace std;const int N = 210;int all[N][N] , n , m , k , x , y ,z, a ,b; void
2021-03-07 21:04:56 63
原创 最短路
文章目录最短路bellman-ford和spfabellman-ford思路题目spfa思路题目最短路bellman-ford和spfa使用条件 :单源最短路bellman-ford 有负权的最短路spfa有负权的最短路(也同样适用于都是整权的)(小菜鸟刚把知识点学完了,题还没怎么做,等写写题之后再补充)bellman-ford思路怎么存储都行循环n(点数)次遍历所有的边更新距离题目有边数限制的最短路代码:#include <bits/stdc++.h>
2021-03-07 20:21:55 57
原创 Dijkstra求最短路
#Dijkstra求最短路用于单元最短路,即给定一个带权有向图 G=(V,E) ,其中每条边的权是一个非负实数。另外,还给定 V 中的一个顶点,称为源。我们要计算从源到所有其他各顶点的最短路径长度。这里的长度是指路上各边权之和。这个问题通常称为单源最短路径问题。存储,稠密图用邻接矩阵(数组),稀疏图通领接表(一维数组模拟链表)稠密图:点数 ^2 和 边数 一个数量级稀疏图:点数较多,边数较少Dijkstra求最短路思路:初始化距离数组,数比最大边大更新题中一条边到另一条边的值(要较小
2021-03-07 11:11:53 128
原创 2021-03-05
by:hsq文章目录python转c语言py和c的区别程序结构数据类型(常用)整形(即python中的int)浮点型(python中的float)字符型(非python中的str)输入与输出输入输出常用语句判断(基础)循环for循环while循环do……while……循环运算符数组一维数组二维数组字符串的函数python转c语言py和c的区别py是以缩进,冒号来控制逻辑,而C语言是通过大括号控制的eg:求n的阶乘(python版本)re = 1n = int(input())for i
2021-03-05 17:01:58 69
原创 单链表
文章目录数组模拟单链表单链表定义数组模拟链表好处代码操作及代码实现初始化向链表头插入一个数删除第k个插入的数后面的数在第k个插入的数后插入一个数题数组模拟单链表单链表定义单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) + 指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。(只能从前向后遍历)数组模拟链表好处速度快代码一个数组存数字e[](数字域),一个
2021-02-24 20:21:07 147
原创 搜索
搜索深度优先搜索(回溯) dfs枚举每个状态修改状态递归搜索回溯恢复现场eg:排列数字给定一个整数n,将数字1~n排成一排,将会有很多种排列方法。现在,请你按照字典序将所有的排列方法输出。#include<bits/stdc++.h>using namespace std;const int N =10;int all[N],n;bool ok[N];//状态数组void dfs(int u){ //边界条件,输出结果 if(u == n)
2021-02-20 14:58:22 119
原创 第一周
by:hsq文章目录干了什么(说实话啥也没干)2021.01.23知识点substr 返回子字符串字符串转字符字符转换为字符串set遍历干了什么(说实话啥也没干)2021.01.23y总算法基础视频 (第二节课)vj打了两道题(都有bug)算法基础课题(双指针前写完)##2021.01.24知识点substr 返回子字符串#include <bits/stdc++.h>using namespace std;int main(){ int a;
2021-01-24 19:27:23 120
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人