自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(95)
  • 资源 (1)
  • 收藏
  • 关注

原创 柔性数组+结构体类型转换

柔性数组:在结构体中声明的时候仅作为占位符,好处是地址是连续的。强制类型转换:可用于通信双方进行信息交流。

2024-05-13 13:00:40 130

原创 RDMA编程实践-SEND-RECEICVE原语应用

本文实现了rdma中send-receive双边原语的三种需求版本,从单次发送到两者都能多次发送。理解其中的代码逻辑,想要发送消息之前对端得创建一个recv队列用来接收消息。发送完了有一个发送完成队列,接收完了也有一个接收完成队列。最后双方断开连接需要一起断开,不能某一方执行disconnect另一方不执行。这一行代码是等待发送成功,发送成功之后,对方会给一个隐式信息表示我已经收到。

2024-01-15 21:34:16 1184

原创 计算机保研-上岸华中科技大学(武汉光电国家研究中心)

保研记录与分享

2022-09-29 15:18:46 1943 13

原创 第25次csp题解(前三题)

25次csp前三题代码

2022-06-08 00:58:36 429

原创 acwing周赛部分题解

1、22-构造数组解题思路:观察可以发现b数组始终是大于a数组的,而两个数组中的每个数都是从1-n中选择的,可以重复。因此第一步:从1-n中选择2m个数第二部:将这2m个数排序,大的m个数给b,小的m个数给a ------一种方案答案就是从1-n中选择2m个数有多少种选择方案。转化一:设x1,x2,x3,…xn表示这n个数在一轮选择中被选中的次数,即有x1+x2+x3+…+xn = 2m,那么这个不定方程解的个数就是答案转化二:设x’i = xi+1;x’1 + x’2 + … +

2022-06-07 18:02:18 275

原创 acwing周赛部分题解(36-54)

1、54场周赛-括号序列题意概括:反转一个括号类型,使得其中括号序列变得平衡解题思路:(1)统计左括号和右括号的数量,如果差值不为2,那么一定不可能变得平衡(2)如果是l == r+2,就反转字符串+镜像一下,让r == l+2(3)编写work函数,从前往后扫描一遍,cnt表示当前左括号数量-右括号数量,r表示右括号的数量和,当发现cnt < 0 的时候,说明要做出改变,将前r个右括号任选一个变成左括号,检验改变之后是否可行,首先cnt += 2,因为改变了一个右括号之后,前i个字符的差值为+2

2022-06-06 20:31:13 192

原创 差分约束例题

1、再卖菜差分约束问题是一个未知量与另外一个未知量的相对大小关系,因此,本题需要先转化成为前缀和的相对关系,并根据这个来建边经过分析可以知道,要满足上述的条件,需要如下条件成立当i = 1时,Si+1 - Si-1 >= 2b[i] && Si+1 - Si-1 <= 2b[i]+1;当i = n时,Si - Si-2 >= 2b[n] && Si - Si-2 <= 2b[i] + 1;其他情况 Si+1 - Si-1 >= 3b[i

2022-05-24 19:17:12 122

原创 5.20--无向图的双连通分量

1、边双连通分量 e-dcc不含有桥的连通区域极大的不包含桥的连通块2、点双连通分量 v-dcc割点:在连通的无向图中把这个点删掉之后变得不连通,每一个割点都至少属于两个连通分量。极大的不包含割点的连通块割点和桥没有必然联系,点连通分量和边连通分量也没有必然联系如何求解:1、边双连通分量,记录一个时间戳,dfn[x]、low[x]如何找到桥x到y是桥,搜完之后dfn[x] < low[y]如何找到所有边的双连通分量?(1) 将所有桥删掉(2) 用一个栈,类似于有向图的的解决办

2022-05-20 15:01:13 222

原创 5.6--欧拉路径和欧拉回路

能够有欧拉路径的条件:1、在无向图中,所有边都是连通的(1)存在欧拉路径的充分必要条件:度数为奇数的点只能有0或2个(2)存在欧拉回路的充分必要条件:所有点的度数都是偶数2、对于有向图,所有边都是连通的(1)存在欧拉路径的充分必要条件:要么所有点的出度均等于入度;要么除了两个点之外,其余所有点的出度等于入度,剩余两个点;一个满足出度比入度多1(起点),另外一个满足入度比出度多1(终点)(2)存在欧拉回路的充分必要条件:所有点的出度均等于入度。...

2022-05-06 18:22:03 1198

原创 5.5--有向图的强联通分量问题

定义:对于一个有向图,连通分量:对于分量中任意两点u,v,必然可以从u走到v,且从v走到u。强连通分量:极大连通分量作用:将一个有向图转为为有向无环图。缩点(将所有连通分量缩成一个点)然后就能够方便求解一些例如最短路等问题如何求:DFS将边分成四大类:如何判断某个点是否属于某个连通分量中:情况1:存在返祖边指向祖先节点情况2:先走到横叉边,横叉边再走到祖先节点一定是走到某个祖先节点上Tarjan算法求scc引入一个时间戳概念:搜索的时候按照顺序给每个节点一个编号对每个点定义两个时间

2022-05-06 14:29:09 176

原创 5.1题解---棋盘+Cow Travelling S(搜索)

1、棋盘解题思路:(1)用dfs,最优性剪枝:每次进入dfs更新从1,1到x,y的最小花费,如果大于已经存储的值,那么就可以停止了。用一个变量来记录是否可以使用魔法,使用魔法之后将颜色变为与父节点一样。#include <iostream>#include <cstring>#include <algorithm>using namespace std;const int N = 1010;int n,m;int dist[N][N],g[N][N];

2022-05-02 13:14:59 261

原创 4.28日--线段树(一)

两个操作:push_up() 子节点的信息更新到父节点push_down() 父节点信息下传到子节点 (懒标记)线段树含有的基本操作1.pushup(u)2.build() 将一段区间初始化成线段树3.modify() 修改 单点和区间4.query() 查询某一段区间的内容原理:除了最后一层之外是一颗满二叉树,用堆的方法来存储,一维数组存储整颗树。n个点的区间需要开4*n倍空间。1、build函数void build(int u,int l,int r){ tr[u].l l

2022-04-28 23:05:20 639

原创 RMQ问题

问题模型:给定一个数组,再给定很多个查询,询问这个区间内的最大值或者最小值1、天才的记忆解题思路:f[i][j]表示以i开始2j个数的最大值,当j = 0时,f[i][0] = w[i],否则f[i][j] = max(f[i][j-1],f[i+(1 << j-1)][j-1]),查询的时候先求出最大的k,使得2k <= (r-l+1),对于查询的值 ans = max(f[l][k],f[r-(1 << k) + 1][k])#include <iostream

2022-04-27 22:18:15 154

原创 环形纸牌问题

1、均分纸牌题意概括:解题思路:可以分类讨论,先讨论1,n的情况,再从讨论[2,n-1]的情况。也可以直接遍历[1,n],如果a[i] != avg,那么a[i+1] += (a[i]-avg),ans++,对于这个式子的理解,如果a[i] > avg,那么需要向右传递,a[i] - avg为正数,反之需要向后一个索取,a[i]-avg为负数,达到了同时兼顾左边和右边,并且对于1和N,仅有一种情况。代码:#include <iostream>using namespace st

2022-04-26 21:10:27 166

原创 最佳牛围栏 -- 前缀+二分(tricks)

最佳牛围栏解题思路:对于这种求最大/最小可能是多少可以采用二分法。给定一个值,判断这个值是否满足要求,如果满足,可以把平均值增大/减少。对于check函数,求平均值,因此将数组a都减去这个平均值,在给定F的情况下,只需要有连续的 >= F个数的和 >=0就存在这样的值。二分的最后要取右端点,因为l,r是浮点数,取左边的话如果值恰好能够取整,那么左边会有精度损失#include <iostream>#include <cstring>#include <a

2022-04-26 10:07:08 105

原创 4.22--状态机模型

概念:一系列有序的事件特点:描述的是一些过程,不是类似与背包问题一样是一个结果。把混沌的状态细化1、例题:大盗阿福#include <iostream>#include <cstring>#include <algorithm>using namespace std;const int N = 1e5+10;int t,n;int a[N],f[N][2];int main(){ cin >> t; while(t

2022-04-23 13:09:35 274

原创 4.13学习-背包问题

序列dp:后一个数和前面的数存在关系背包问题:从某些数里选出一些数,组合dp。当背包问题优化为一维的时候,只有完全背包问题的体积是从小到大枚举的,其余都是从大到小循环。是两维的话没有任何限制。for 物品: for 体积: for 决策1.01背包问题:每个物品选、不选2.完全背包问题:每个物品可以选0~无穷个求所有前缀的最大值3.多重背包问题:每个物品可以选0~s[i]个枚举一下最后一个物品选多少个求滑动窗口内的最大值r = j%v如果给定了某种物

2022-04-14 22:35:19 174

原创 4.11日刷题--前缀与差分的另一种应用

1、统计方形题意概括:给定一个n行,m列的地图,统计其中的正方形个数和长方形个数解题思路:把这个格子看做是由a[n],b[m]生成,c[i][j] = a[i]*b[j],a和b的每个值都是1每个图形的生成都由a中连续的1和b中连续的1构成,因此求出不同长宽的矩形即可。利用差分可以预先处理好连续1的个数。#include <iostream>#include <cstring>#include <algorithm>using namespace std;

2022-04-12 19:32:39 151

原创 4.10日刷题--搜索+二分

1、P2392 kkksc03考前临时抱佛脚题意概括:对于给定的N个数组,把每个数组分成两堆,使得这两堆和的最大值最小,求每个数组按照这样分组之后的最小值之和。解题思路:观察数据范围之和发现可以枚举每个数组分成两堆的情况,按照题目要求求最小值即可,需要注意:并不是分成大小接近的两堆就是最大值最小的情况代码如下:/*4 1 1 11 2 3 160111不能按照左边一半,右边一半来选。否则这个点输出164但是答案是163*/#include <iostream>#in

2022-04-10 23:54:58 124

原创 4.9日刷题

1、P5198 [USACO19JAN]Icy Perimeter S题意概括:给定一个地图,然后求连通块的周长和面积。解题思路:面积就用dfs就能算出,周长求解的方式为在搜索的过程中,对于每一个点,如果周围越界了或者为点,周长++。#include <iostream>#include <cstring>#include <algorithm>#include <vector>using namespace std;typedef pair

2022-04-09 23:21:44 303

原创 4.5日刷题

1、积水面积解题思路:任何一个连续积水的地方满足h[left] >= h[right] 或者h[left] < h[right],只要把这两种情况找出来然后相加就可以。(之前像个大傻逼求最大值,这两者是独立的)#include <iostream>#include <cstring>#include <algorithm>using namespace std;const int N = 1e4+10;int n;int a[N],s[N];

2022-04-05 21:55:01 312

原创 4.2 日刷题

1、黑白棋子的移动解题思路:注意输入n的范围 <4 是无解的,我还傻傻的模拟半天。用递归求解,每个状态最终都会变成n = 4的时候的状态,然后直接输出即可#include <iostream>#include <cstring>#include <algorithm>using namespace std;const int N = 210;char str[N];int n;bool check(){ for (int i = 1; i

2022-04-03 17:59:58 179

原创 4.1日刷题

独木桥三连击阶乘之和车站P1012.拼数完美矩阵子矩阵计数整数分组

2022-04-02 18:13:29 170

原创 3.30日洛谷

1.删数问题解题思路:这样进行贪心:如果存在逆序的关系str[i] > str[j],那么就把str[i]删掉,然后从头开始遍历字符串,这里一定会有逆序的关系,因为超出str的范围之后是最小的,也就是最后一个字符一定大于之后的字符。#include <iostream>#include <cstring>#include <algorithm>using namespace std;const int N = 260;string str;int

2022-03-30 23:27:42 133

原创 题目汇总(ACWing)

枚举:1.拍照解题思路:枚举a1,求出每个ai,然后检查这个答案是否合法。2.牛为什么过马路解题思路:对于一对相同的字母,枚举中间是否存在没有记录的单个字符。3.牛的基因组学解题思路:暴力枚举每一列,查看是否有可以区分两种牛的基因贪心:1.疯狂的科学家解题思路:可以利用类似双指针的思想去找到a,b字符串连续的不同的地方。bfs:1.社交距离II解题思路:首先求出感染的最小半径,也就是没有感染的牛到感染的牛的最小距离,然后按照位置顺序利用bfs遍历每一头感染的牛,看看它能感染哪些牛,每

2022-03-17 21:24:33 790

原创 R多元线性回归模型与模型选择

什么是多元线性回归?用矩阵来进行表示为:实现模型的p-value表示我这三个系数要不要的显著性注:大部分操作与简单线性回归完全相同把所有变量都用来分析:快捷可以发现:Multiple R-squared随着变量数量的增加始终提升,可以解释为变量解释的误差占总误差的比例越来越大。Adjusted R-squared并不一定,暗示变量不是越多越好。最大的模型中,尽管模型显著,胆没有任何一个变量是显著的。这也是为什么要做模型选择的原因。修正已有拟合模型第一个 . 表示要预测的变量y,第

2022-03-11 21:52:07 2673

原创 R做线性回归基础

mod = lm(mpg ~ wt,data = mtcars)res = summary(mod)系数是否统计显著看 t value/p value/*的数量,而不是绝对值大小,t value越大,p value越小,*越多那就越显著是否科学显著看绝对数值大小(estimate),表示没改变一单位的x,y期望发生的变化。residual standard error:预测的值在这个范围内波动,比如是正太分布的话再[-a,a]的概率是60%多,[-2a,2a]的概率是95%的概率。R-squ

2022-03-11 20:02:25 2331

原创 扩充序列(找规律)

扩充序列利用arr数组首先生成2的k次方,方便后面进行计算,不过要记得开long long代码如下:#include<bits/stdc++.h>using namespace std;const int N = 60;typedef long long ll;ll n,k;ll arr[N];int fun(int sn,ll sk){ ll tmp = arr[sn]; if(sk == tmp) { return sn+1;

2022-03-10 15:58:40 227

原创 BFS中的多源BFS-双端队列BFS

BFS找到的答案为什么一定是最小的?证明:BFS队列具有两段性:队列中同时存的所有点到起点的距离差值最多是1。BFS队列具有单调性:分成两段性,前面一定是小的。数学归纳法证明:1.初始的时候距离为0成立2.假设队首的某个点距离起点为x,把它能扩展的点加到队尾,距离为x+1,仍然满足两段性和单调性。因此队列中的所有元素都满足上面的两个性质例题1:矩阵距离这个题思路就是首先将起点加入到队列,然后正常的bfs就行把棋盘堪称一整个点,把这个点变成其他的点要经过多少步骤...

2022-03-09 21:53:33 229

原创 BFS中的Flood Fill和最短路模型

Flood Fill核心思想:对每次加进来的格子判断是否能够加入新的格子可以在线性时间复杂度内,找到某个点所在的连通块。宽搜是不会爆栈的,深搜可能会爆栈。找连通块。在算法题里面一般栈空间为1M,100000层可能就会爆。例题 :池塘计数学到一个新写法:判断八联通用两重循环for(int i = t.x-1;i<=t.x+1;i++){ for(int j=t.y-1;j<=t.y+1;j++) { if(i==t.x&&j==t.y) c

2022-03-09 17:08:09 173

原创 3.8日刷题总结

今天做了以下几题:洛谷:1.P2419 [USACO08JAN]Cow Contest S2.P7228 [COCI2015-2016#3] MOLEKULE3.P6591 [YsOI2020]植树4.P1037 [NOIP2002 普及组] 产生数解题思路1.假设现在你所在的班级成绩发布,你想知道自己的排名,如果你知道前面有多少人比你高,后面有多少人比你低,那么就可以得到你自己的排名。因此,此题首先采用floyd算法求出其中存在的大于和小于关系,统计每个节点的入度和出度,如果入度+出度==N

2022-03-08 23:42:36 178

原创 dfs剪枝与迭代加深与双向dfs

做题顺序:1.考虑如何能正确搜索出所有的方案2.再考虑剪枝1.优化搜索顺序大部分情况下,我们应该优先搜索分支较少的节点。2.排除等效冗余比如不考虑顺序的话用组合方式来搜索3.可行性剪枝如果某种方案不合法就不进行搜索4.最优性剪枝比如搜索最小值,若搜到的值已经比答案多,那就停止5.记忆化搜索...

2022-03-08 12:23:58 252

原创 Trie树

Tire树常用来保存字符串或者01字符的一种数据结构,对于查询字符串或者异或的操作会非常的快。例题:Tire字符串统计最大异或对牛异或最大异或和

2022-03-04 20:25:46 239

原创 c++写入csv文件

#include<bits/stdc++.h>using namespace std;void write(string filename,vector<vector<string> > &data){ //filename是待写入的文件名,data是保存待写文件的数据,保证filename一定存在 ofstream outFile; outFile.open(filename,ios::out); //打开这个文件 for(

2022-03-02 09:41:57 4008

原创 c++读取csv文件

#include<bits/stdc++.h>using namespace std;void read_csv(string filename) //传入文件所在的位置{ ifstream inFile(filename); string lineStr; vector<vector<string> > strArray;//用来保存读取出来的数据,可以看成是一个二维数组,类型一般是string,其他类型可以转换 cout<&

2022-03-01 23:53:26 7515 7

原创 贪心问题之区间

区间选点最大不相交区间数量区间分组区间覆盖关于左端点排序还是右端点排序的思考(参考 ACwing):1、如果想知道只有一间教室,能安排下的最多不冲突人数(不是所有的人都有机会,有的会被舍掉)是多少(区间选点和最大不相交问题),那么当然是最先结束的人排在前面,这样后面的人才有更多机会。如果是按左端点排序,那么如过一个人0点开始用,那么肯定他排在最前面,但是如果他自己就占用了24小时,那么只能给他一个人用了,这样就达不到最大的效果。所以按右端点排序。2、如果想知道这些人都必须安排,没有人被舍弃,至少

2022-02-25 09:53:10 223

原创 关于二分一些模板

1.一般的二分模板有两套,假设a数组是一个上升数组,待查找的为x。//查找第一个出现的x,如果没有x则输出待插入的位置。int search(int l,int r,int x){ while(l<r) { int mid = (l+r) / 2; if(a[mid]>=x) r = mid; else l = mid+1; } if(a[l]<x) return l+1; else return

2022-02-23 21:47:34 58

原创 旅行家的预算(洛谷)

题目链接:旅行家的预算解题思路:题目的目标是求出最小的油费,如果我们知道在每个加油站都加了多少升油,那就可以求出油费了,最小也就意味着在每个加油站加的油最合适。思考什么叫做合适,假设我当前处在第index个加油站(起始在第0个),如果我把油加满了,最远能走到的距离假设为maxdist,如果从当前加油站到maxdist中还有其他加油站的邮费比当前加油站油费低,那我就可以走到那个加油站(next)进行加油,我在index加的油刚好走到next就行。解题过程:上面是本题的关键思路,在解题过程中需要考虑多中情况

2022-02-23 18:15:03 421

原创 关于背包问题的总结

背包问题的分类:1. 01背包问题2. 完全背包问题3. 多重背包问题4. 完全背包问题DP问题的解题思路:01背包问题问题描述:见例题:01背包问题问题分析:对于每一个物品,可以选择要也可以选择。所以状态的计算就是更新i所表示的集合,因此,f(i,j) = max(f[i-1][j],f[i-1][j-v[i]]+w[i])。这就是朴素版的01背包问题,代码如下:#include<bits/stdc++.h>using namespace std;const

2022-02-10 22:20:32 1028

原创 P1318 积水面积

解题思路:对于每一个点,去往前找比它大的第一个数,去往后找比他大的第一个数,然后算min(arr[left]-arr[i],arr[right]-arr[i]),答案加上这个值乘以(right-left-1),如果在往前找的时候,发现某个数和他相等,那么说明之前已经处理过了,就不处理了,直接返回。#include<bits/stdc++.h>#define MAX 10001using namespace std;int n;int arr[MAX];long long res=..

2021-12-04 16:26:00 766

simhash算法优化.pdf

simhash论文

2021-05-08

空空如也

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

TA关注的人

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