自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【持续更新】实用算法小点总结(怕忘QAQ)

没格式就没格式了吧(。ì _ í。)#include <iostream>#include <algorithm>#include <string.h>#include <ctype.h>#include <set>#include <cmath>#include <queue>#include ...

2019-03-23 21:43:25 386

原创 【Python】如何在Python项目中使用相对路径正确的导入模块/包

1. 问题描述现有a.py文件,其中包含一个Test类如下:# a.pyclass Test: result: str def __init__(self, result): self.result = result此外,还有一个aa.py文件,想要使用a.py中的Test类创建一个对象,并打印出对象的内容,如下:# aa.py<导入a.py中的类>x = Test("a->aa success")print(x.result)

2021-06-18 16:37:33 7380 1

原创 【Golang】基于RSA算法的数据通信和数字签名

1. 生成公钥和私钥package mainimport ( "crypto/rand" "crypto/rsa" "crypto/x509" "encoding/pem" "fmt" "os")type Rsa struct {}/* * 生成RSA公钥和私钥并保存在对应的目录文件下 * 参数bits: 指定生成的秘钥的长度, 单位: bit */func (r *Rsa) RsaGenKey(bits int, privatePath, pubulicPath s

2021-04-27 21:47:51 525 1

原创 【学习笔记】如何理解Raft中的ReadIndex?

Raft作者Diego Ongaro在其博士论文《CONSENSUS: BRIDGING THEORY AND PRACTICE》中对ReadIndex进行了相关阐述:(以下内容来自机翻)6.4 Processing read-only queries more efficiently      只读客户端命令只查询复制的状态机;他们不会改变它。因此,我们很自然地会问,这些查询是否可以绕过Raft日志,Raft日志的目的是以相同的顺序将更改复制到服务器

2021-04-15 15:30:54 1498

原创 【牛客练习赛58-C】矩阵消除游戏(dfs+状态标记)

题目传送门题目思路之前做过的题,又不会做了????。基本思路就是枚举+dfs。枚举选择x(x∈[0,k]x\in[0,k]x∈[0,k])行,那么还需要选择k-x列。通过dfs来计算n行里面选择哪x行,通过二进制(1个int型整数)来标记选了哪些行,进行必要的剪枝。确定了要选的x行后,剩下则需要计算删除该x行后,每一列的和,取和最大的k-x列,统计答案,并更新答案。注意,判断int型每一位上是0还是1时,最好用>>而不是用<<,否则会超时。 玄学问题,和底层的硬件实现和c

2021-03-28 17:38:44 275

原创 【ABC196-D】 Hanjo(dfs+状态标记)

题目传送门题目思路应该是经典铺瓷砖问题了,QAQ。从左到右,从上到下去遍历这个H*W的网格,每遇到一个1x1的格子:如果可以放1x1的瓷砖,就放1个1x1的瓷砖如果可以水平放置1个2x1的瓷砖,就水平放1个2x1的瓷砖如果可以竖直放置1个2x1的瓷砖,就竖直放1个2x1的瓷砖可以用二进制(一个int类型的数)或者二维数组来标记每个格子的状态:有没有铺瓷砖。通过dfs来求解答案。代码二进制标记状态法:#include <iostream>#includ

2021-03-28 17:20:25 350 2

原创 【CF703-Div2-C1/2】C2. Guessing the Greatest(交互题-思维+二分)

题目地址:https://codeforces.com/contest/1486/problem/C2另一道入门交互题:https://codeforces.com/contest/679/problem/A题目:大小为n=105n=10^5n=105的数组,每次询问为 ? l r?\ l\ r? l r 格式,询问[l,r][l,r][l,r]区间的次大值在整个数组中的位置(从111开始)。在最多进行202020次询问之后,以 ! pos!\ p

2021-03-12 21:24:44 165 1

原创 【Golang】go程序性能测试教程+总结

参考教程:http://www.topgoer.com/函数/单元测试.htmlhttps://blog.csdn.net/weixin_33906657/article/details/91699657https://www.cnblogs.com/-lee/p/12689524.htmlhttps://blog.csdn.net/u012855229/article/details/51930709/https://cloud.tencent.com/developer/article/146

2020-10-28 20:44:50 860

原创 【数据可视化】使用pyecharts绘制南丁格尔玫瑰图和水平堆叠条形图

南丁格尔玫瑰图from pyecharts.charts import Piefrom pyecharts import options as optsimport random# 随机颜色生成# def randomcolor(kind):# colors = []# for i in range(kind):# colArr = ['1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', .

2020-10-27 21:02:29 2761 1

原创 【小技能】svg转png/pdf方法总结和比较

系统环境:MacOS分辨率=画面水平方向的像素值* 画面垂直方向的像素值(1)imagemagick$ brew install imagemagick $ brew install ghostscript $ convert -density 700 1.svg 1.png density表示分辨率 ,分辨率越高,图像越清晰,图像越大。注意:需要修改svg文件的源码,给出准确的width和height值,不能width=100%否则会报下面的错误:convert: must spec

2020-10-27 10:45:26 2515

原创 【算法原理+洛谷P6114+HDU6761】Lyndon分解

算法原理:Duval算法时间效率O(n)O(n)O(n)此处谈一谈自己对算法原理的理解:k-j相当于循环节的长度,i到j之间可能会出现多个重复的lyndon串,所以后面更新i的时候用的是while。s[j]<s[k]的时候很好理解,s[j]包含在以i为起点的lyndon串中,j此时回退到起点,s[j]=s[k]时, j和k同时++,一直在向右移动匹配(i到j之间可能出现多个循环节),此时循环节的长度不变。例题lyndon分解后每个lyndon串的右端点(字符串下标从1开始存)洛.

2020-10-24 21:46:10 341

原创 【2020CCPC秦皇岛:C】Cameraman(计算几何+思维+枚举)

题目input28 83 735 62 72 56 63 255 42 45 52 31 4outputCase #1: 13.50000000Case #2: 16.00000000解题思路这道题的样例暗示应该以Bob为顶点去求解。但是实际上,第一个样例的答案是错误的:(来源:知乎用户cometeme的回答https://www.zhihu.com/question/426081900)虽然这道题假了,但是还是试着以Bob为顶点过下这道题吧。.

2020-10-22 12:40:45 1072

原创 【Golang】Go语言defer用法大总结(含return返回机制)

引入defer是Go语言中的一个关键字(延迟调用),一般用于释放资源和连接、关闭文件、释放锁等。和defer类似的有java的finally和C++的析构函数,这些语句一般是一定会执行的(某些特殊情况后文会提到),不过析构函数析构的是对象,而defer后面一般跟函数或方法。1、 多个defer语句,按先进后出的方式执行package mainimport "fmt"func main() { var whatever [5]struct{} for i := range wha

2020-09-14 11:57:00 7516

原创 【学习笔记】浅识差分隐私

2020-08-22 17:23:01 366

原创 【2020牛客多校5:D】Drop Voicing(LIS+推理)

传送门题目给定一个长度为n(2≤n≤500)n(2≤n≤500)n(2≤n≤500)的排列a[0...n−1]a[0...n-1]a[0...n−1],有两种操作:1、drop-2:将倒数第二个数移到最前面2、invert:将第一个数移到最后面且连续的drop-2操作称为multi-drop,问最少需要多少个multi-drop操作,使得此排列为升序(即最终的排列为1,2,…,n)思路称连续的invert操作为multi-invert,可以发现将一个数移到任一位置需要最多1个multi-dr

2020-07-25 23:15:37 325

原创 【CF1369D】TediousLee(找规律递推——计数)

传送门题目:解题思路:画出leve1~5的图形之后就可以发现,level[i]是由1个level[i-1]和2个level[i-2]再加一个根节点组成的,以level[4]为例:红色的为level[3],绿色的为level[2]那么就可以递推出level[I]的"claw"数:cnt[i]=2∗cnt[i−2]+cnt[i−1]cnt[i]=2*cnt[i-2]+cnt[i-1]cnt[i]=2∗cnt[i−2]+cnt[i−1]每次取“claw”的时候都是先取最下面的,那么对于leve

2020-06-24 22:42:49 747 3

原创 【MapReduce】MapReduce(DataJoin)实现数据连接+Bloom Filter优化

数据:file1:categoryname addressIDBeijing Red Star 1Shenzhen Thunder 3Guangzhou Honda 2Beijing Rising 1Guangzhou Development Bank 2Tencent 3Bank of Beijing 1Nanchang Univ 5Beijing Red Star 1Nanchang Univ 5Beijing Red Star 5Shenzhen Thunder 6.

2020-06-07 12:23:04 457

原创 【网络安全】PGP/GPG优质教程汇总

一下内容我没有全看完,在学习过程中觉得是不错的资源和教程,在这里汇总一下。PGP功能原理讲解GPG公私钥+加解密+签名(命令行) 超清楚!基于RSA的PGP/GPG邮件、文件加密教程(MacOS)OpenPGP/ PGP/ GPG文档 GPG密钥的生成与使用如何将PGP应用于MacOSGnus的实用指南...

2020-05-29 22:02:59 1752

原创 【POJ2775】The Number of the Same BST(二叉搜索树+计数+lucas定理)

传送门题目:给出一个数列,由该数列可以确定一颗二叉搜索树。求此二叉搜索树可以由多少个不同的数列确定。树上最多有100个结点。解题思路:100个结点可能出现极端情况(链式,100层),不能用数组存,考虑动态开点用指针存储 , 记得清空树,回收空间。当前结点t,递推式:ans[t]=ans[lt]∗ans[rt]∗Csize[t]−1size[lt]ans[t]=ans[lt]*ans[rt]*C_{size[t]-1}^{size[lt]}ans[t]=ans[lt]∗ans[rt]∗Csize

2020-05-24 23:42:49 330

原创 【POJ1101&OpenJudge2802】The Game 小游戏(BFS+记忆化)

传送门题目:解题思路:注意题里的卡片位置(x,y)对应的是(列,行),可以将坐标转换成我们熟悉的(行,列)形式。图按常规方法存,只需要将要查询的(x,y)换成(y,x)即可。dis[x][y]表示从(x1,y1)到(x,y)所需要的最短线段数,在bfs的时候更新这个值。由于dis[x2][y2]可以由多个位置和多个方向更新来,队列中应该记录{x,y,dir,step},并且允许元素多次入队,但每个(x,y)只处理一次。网上的博客好多都是错的,假代码没过自己的样例,但AC了。。数据挺假的,题也

2020-05-24 12:36:30 635

原创 【CF1354C1&C2】Polygon Embedding(求解包含正多边形的最小正方形)

C1传送门C2传送门题目:求能包含 边长为1的正2n边形 的最小正方形,输出正方形的边长。推导思路:为了一般化推导,这里设正多边形的边长为a。当n为偶数时:可以发现正方形的边长=对边之间的距离:tan(θ)=tan(π−πn2)=ans2a2\displaystyle tan(\theta)=tan(\frac{\pi-\frac{\pi}{n}}{2})=\frac{\frac{ans}{2}}{\frac{a}{2}}tan(θ)=tan(2π−nπ​​)=2a​2ans​​a

2020-05-18 11:20:29 455 1

原创 【CF1355E】Restorer Distance(整数三分)--附整数/浮点三分模板

传送门题目:解题思路:存在这么一个高度h使得代价最小,其他高度的代价都比它大。这是一个凹函数,可以三分来求解。附三分模板:转载自https://www.cnblogs.com/lukelmouse/p/12545973.html//整数三分int l = 1,r = 100;while(l < r) { int lmid = l + (r - l) / 3; int rmid = r - (r - l) / 3; lans = f(lmid),rans =

2020-05-17 10:28:00 898 3

原创 【CF1342D】Multiple Testcases(贪心+优先队列)

传送门题目:思路:贪心策略:从大到小填m,用vector存每个分组内的元素。优先队列中维护分块内的元素数目(小根堆)。如果当前m可以填入队顶分组内,则一直往当前队顶分组放元素,直至不能再放;如果当前m不可以填入队顶分组内,那么说明需要新建分组,再一直往新的分组内填元素,直至不能填。算法正确性还是比较显然的。当然也可以不采用可以填就一直填的策略,也可以单个单个的填,但是注意优先队...

2020-04-28 00:23:23 290

原创 【CF1333F】Kate and imperfection(埃氏筛+思维)

传送门题目:思路:令lenlenlen =2~n内的质数个数+1,最多可以从nnn中选取lenlenlen个数使得这些数组成的集合的 imperfection值为1。如果集合的大小k≤lenk\le lenk≤len,那么总能选取kkk个数使得他们之间两两互质,集合的imperfection值为1。考虑剩下的合数,依次从中选取1,2,3...n−len1,2,3...n-len1,2,...

2020-04-10 00:33:57 499

原创 【CF1333C】Eugene and an array(子区间计数)

传送门题目:思路:枚举右端点,统计有多少个左端点和当前右端点组成的区间不是good,总数记为cntcntcnt。对于一个确定的区间[l,r][l,r][l,r],如果sum[r]=sum[l−1]sum[r]=sum[l-1]sum[r]=sum[l−1],那么该区间内元素和为0,sum[]sum[]sum[]表示前缀和。统计sum[r]sum[r]sum[r]最新出现的位置...

2020-04-09 19:07:06 347

原创 【CF1107G】Vasya and Maximum Profit(单调栈/单调栈+线段树最大子段和)

传送门题目:思路:式子:earn[i]=a−c[i]earn[i]=a-c[i]earn[i]=a−c[i]sum[i]=∑j=1iearn[j],(1≤i≤n)sum[i]=\sum_{j=1}^{i}earn[j],(1≤i≤n)sum[i]=j=1∑i​earn[j],(1≤i≤n)ans=max{sum[r]−sum[l−1]+gap(l,r)}ans=max\{sum[r]...

2020-04-03 20:58:58 305

原创 【牛客练习赛60:C】操作集锦(dp+子序列计数)

传送门题目给出长度为的字符串,求有多少种不同的长度为的子序列。(1≤n≤1e3,0≤k≤n)(1≤n≤1e3, 0≤k≤n)(1≤n≤1e3,0≤k≤n)思路空串也是一种合法的子序列,所以特判k=0k=0k=0二维dp求解(当然也可以一维,我原本的做法是一维的,比下面的解法稍微麻烦一点,就不讲啦)解法一:O(26n2)O(26n^2)O(26n2)dp[i][j]dp[i...

2020-04-02 16:19:39 209

原创 【HDOJ6071】Lazy Running(同余最短路思想)

传送门题目:四个点1,2,3,41,2,3,41,2,3,4顺序连成环,给定相邻两点间的距离,问从222号点出发再回到222号点的所有路径中,路径长度不小于kkk的最小值。输出这个最小值。1≤k≤1e181≤k≤1e181≤k≤1e18思路:主要用到同余的思想。记w=min(dis12,dis2,3)w=min(dis_{12},dis_{2,3})w=min(dis12​,dis2,...

2020-04-02 16:11:29 280

原创 【同余最短路】P3403+P2371+P2662+牛客4853D

同余最短路经典套路给定nnn个数,每个数都可以选多次(也可以不选),将所有选中的数相加。问最终能够组成多少种不同的数或者不能组成的最大数或者。。。形如ax+by+cz+..=kax+by+cz+..=kax+by+cz+..=k,其中a,b,ca,b,ca,b,c表示对应的数的选中次数。从最简单的ax+by=kax+by=kax+by=k入手分析:by=k−axby=k-axby=k−ax...

2020-04-02 15:38:32 303

原创 【牛客挑战赛38:E】七星阵(极角排序+dp+思维)

传送门题目:input:9 3-1997 94-1591 -1211-439 -1951917 -17771845 -7711909 5941080 1682-253 1983-1469 13561000 0-499 866-500 -866output:36样例对应的图:思路:红点组成七边形,可以从一个顶点将这七边形划分为6个三角形,每个三角...

2020-03-22 14:53:46 297

原创 【BZOJ1150】数据备份(堆/优先队列)

传送门题目:思路:先获取每两个相邻办公楼之间的距离。DiD_iDi​(1≤i≤n-1)当k=1时,选择最小的DiD_iDi​当k=2时方案一:选择最小的DiD_iDi​和除了Di−1,Di,Di+1D_{i-1},D_i,D_{i+1}Di−1​,Di​,Di+1​之外的其他数中的最小值方案二:选择最小的DiD_iDi​旁边的Di−1,Di+1D_{i-1},D_{i+1...

2020-03-20 23:58:57 233

原创 【CF1325E】 Ehab's REAL Number Theory Problem(思维+最小环bfs)

传送门题目:思路:如果一个数xxx有三个不同的质约数p1,p2,p3p_1, p_2, p_3p1​,p2​,p3​,那么这个数至少有8个约数。这是因为gcd(p1,p3)=1,gcd(p2,p3)=1gcd(p_1,p_3)=1, gcd(p_2, p_3)=1gcd(p1​,p3​)=1,gcd(p2​,p3​)=1,那么gcd(p1∗p2,p3)=1gcd(p_1*p_2, p_...

2020-03-16 15:49:50 418 2

原创 【CF1324E】Sleeping Schedule(dp)

传送门题目:思路:h用处不大,因为上次睡的时间和下次醒的时间是一样的,每次都面临两种选择。dp[i][j]dp[i][j]dp[i][j]表示前iii次选择jjj次“ai−1a_i-1ai​−1”这种方案能够获得的最大good sleeping数(0≤j≤I0≤j≤I0≤j≤I)sum[i]=∑k=1iaksum[i]=\sum_{k=1}^i a_ksum[i]=∑k=1i​ak​...

2020-03-14 18:37:42 276 2

原创 【CF1312E】Array Shrinking(dp)

传送门题目:思路:数组中的某些数可以通过执行多次题目中的操作最终归为1个数。先确定每个r(1≤r≤n)r(1≤r≤n)r(1≤r≤n)有哪些l(1≤l≤r)l(1≤l≤r)l(1≤l≤r)满足[l,r][l,r][l,r]内的数可以归为1个数。在处理的时候可以先枚举lll,这样rrr每次都只增加1。且[l,oldr][l,oldr][l,oldr]的结果已知,[l,newr][l,ne...

2020-03-12 20:44:46 340

原创 【CF1312D】Count the Arrays(计数)

传送门题目:思路: n个元素有一对相同的,那么n个数中共有n-1个不同的数,从m个数中选n-1,方法数:Cmn−1C_m^{n-1}Cmn−1​从n-1个不同的数中选择一个数使其在要构造的数组中出现两次,最大的数是唯一的,不能选它,所以方法数为:n-2除了重复出现的数一个在最大数的左边,一个在右边外,其他n-3个数可以出现在最大数的左边/右边,方法数为:2n−32^{n-3}2n−3...

2020-03-12 20:30:18 327

原创 【linux程序设计】使用POSIX API的文件I/O操作方法仿写cp命令

电子科技大学《linux操作系统编程》实验2:https://www.icourse163.org/learn/UESTC-1003040002?tid=1206878228#/learn/content?type=detail&id=1211971805&cid=1215051733实现效果:上述两个 命令参数缺失给出错误提示信息 源文件为目录时给出错误提示信息...

2020-03-04 22:56:52 4575 2

原创 【2020牛客寒假基础算法训练营】第二场总结

A 签到B 签到C dp题意:n道题,第i道题做对的概率为pip_ipi​,问分别做对n道题中分别做对0,1,2,3,…n道的概率。思路:dp[i][j]表示前i道题中对了j道的概率dp[i][j]表示前i道题中对了j道的概率dp[i][j]表示前i道题中对了j道的概率dp[i][0]=dp[i−1][0]∗(1−pi)dp[i][0]=dp[i-1][0]*(1-p_i)dp[i]...

2020-02-20 21:07:37 868

原创 【2020牛客寒假基础算法训练营】第三场总结

A 签到题意: 迷宫遇到D只能向下,遇到R只能向右,遇到B既可以向下也可以向右,问从左上走到右下有多少种方案。思路:dp或者记忆化dfsB 构造题意:A的逆过程,即知道方案数,构造这样一个迷宫思路:若以方案数为20为例根据上面的构造过程可以从二进制考虑,先将1,2,4,8,16等构造出来,最后一列填D还是B取决于该位上是0还是1,是1则填B,否则填D。所以1e9+7以内的数...

2020-02-19 17:44:01 315

原创 【2020牛客寒假基础算法训练营】第四场总结

A 签到B 签到 括号匹配 栈C 子段乘积 注意不能除0D题意:给出序列,求多少个区间异或值为0思路:遍历序列的同时记录当前前缀异或值,用map统计当前前缀异或值之前出现次数,用这个次数更新答案。初始mp[0]=1。E 贪心思路:给出一串加号和1-9的数字组成的字符串,如:23984692+238752+2+34+,求重组后表达式的结果的最小值是多少思路:有n个加号就有n...

2020-02-19 14:11:40 299

原创 【2020牛客寒假基础算法训练营】第五场总结

A 签到B题意:在x轴上找一个点,使得它到给定的点之间的最大距离最小,输出最大距离的最小值思路:答案点的左/右侧,得到的最大距离都比答案大,所以答案所在的点是一个极小值点。可以对在x轴上找的这个点三分,或者对最大距离二分,找到第一个满足答案的最大距离(该距离最小)ac代码://三分法#include <bits/stdc++.h>using namespace...

2020-02-19 10:49:11 305

前端学习路线

学长总结的前端学习路线,和大家分享一下。 希望和大家一起学习,一起进步

2018-10-15

空空如也

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

TA关注的人

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