自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 以后在个人博客更了

已迁移至https://liyunfan1223.github.io/

2021-03-27 18:50:40 229

原创 关于c++内存回收(delete)对程序整体运行时间影响的疑问

起因是这样的,最近算法课在上红黑树,写红黑树的时候肯定涉及一些内存管理的问题,主要是在插入结点的时候要用new分配一个新的结点,并在清空红黑树的时候把这些结点delete释放掉。因为要测试多组数据的运行时间,需要实现一个清空(destroy)操作。本着避免一切可能造成的内存泄漏,一开始我写了完整的清空函数,也就是从根节点开始递归,回收每个结点的内存空间,其中我的结点和树定义如下。enum RBTColor{RED, BLACK};class RBTNode {public: RBTColo

2020-11-16 23:03:53 1126 3

原创 CCPC2020长春 J. Abstract Painting(状压dp)

J. Abstract Painting(状压dp)题意给定n,在x轴[0,n]范围内画半径不超过5的圆,圆心在x轴上,要求任意两个圆不相交(可以相切),且已有固定的k个圆,求满足条件的画法方案数。分析很明显从dp的角度思考,一开始考虑区间dp,但是总状态数O(n2)O(n^2)O(n2) ,转移O(n)O(n)O(n),总复杂度O(n3)O(n^3)O(n3),超时。于是从线性dp的角度考虑,发现因为圆的半径小于等于5,因此某一点的情况只对从这一点往后10个点有后效性,也就是说可以用状态压缩的

2020-11-08 20:47:13 2357 10

原创 点分治专题

简介如果处理“所有经过某一个顶点的链对答案的贡献”的时间复杂度为O(n)O(n)O(n)或者O(nlogn)O(nlogn)O(nlogn),那么运用点分治的思想可以把问题规模降为O(nlogn)O(nlogn)O(nlogn)或O(nlog2n)O(nlog^2n)O(nlog2n),而非暴力枚举顶点计算答案的O(n2)O(n^2)O(n2)。所以说,点分治是一种在树上统计合法链个数的思想。显而易见的,对于当前顶点xxx,任意一条链要么经过xxx,要么不经过xxx。于是我们只需要计算那些经过xxx的链

2020-10-08 00:23:44 357

原创 XCPC Team Trainning Round 1 (NCPC2018)

补题地址EOJCF榜单&补题情况题解、分析和code一部分是自己写的,一部分是抄的队友的。A. Altruistic Amphibians 01背包题意给出n只青蛙和洞的高度d,每只青蛙有l、w、h三个属性,分别表示跳跃高度、重量和身高。青蛙可以像叠罗汉一样叠在一起,但要求每只青蛙身上的重量小于它自身。当某只青蛙的跳跃高度+身下叠起来的高度>d时,青蛙可以跳出洞,问最多几只青蛙能跳出去?分析首先考虑如何安排青蛙跳出的顺序。最轻的青蛙无法提供任何高度,因此可以安排第一个跳出

2020-09-19 14:24:00 556

原创 2020杭电多校第八场D.Discovery of Cycles

D.Discovery-of-cycles标签:LCT、尺取法根据题意,只要求出左边界为i时,边界内所有边能构成环时最小的右边界ans[i],即可O(1)查询答案。(若不可能构成环则ans[i]=m+1,查询答案时判断r与ans[l]的大小关系)由于ans[i]单调递增,可以采用尺取法。若当前区间不能构成环则调整右边界(加边),否则计算当前ans[l],并调整左边界(去边)。判断是否构成环可以通过并查集,但一般来说并查集只支持加边不支持去边。所以需要借助LCT中的Link和Cut操作实现加边去边,.

2020-09-02 19:50:31 204

原创 ACM模板

自用,不定期更新。为什么没有xxxxxx呢因为我也不会啊。图论单源最短路径(dijkstra)#include<bits/stdc++.h>#define LL long longusing namespace std;const int N=2e5+5;const LL INF=0x3f3f3f3f3f3f3f3f;struct Dijkstra { struct Edge { int to;LL val; }; struct Node { LL dis;in

2020-08-30 16:12:35 259

原创 2020牛客多校训练营(第九、十场)

目录第九场A.Groundhog-and-2-Power-RepresentationF.Groundhog-Looking-DowdyK.The-Flee-Plan-of-GroundhogE.Groundhog-Chasing-DeathB.Groundhog-and-Apple-Tree第十场第九场A.Groundhog-and-2-Power-Representation标签:高精度、递归读入递归处理括号内的输入,cnt[i]表示2i2^i2i的个数,由答案范围可知i小于1000,也就是只需

2020-08-22 02:33:59 345

原创 2020杭电多校训练(第五、六场)

目录第五场1001.Tetrahedron1009.Paperfolding1003.Boring-Game1012.Set11007.Tree第六场1006.A-Very-Easy-Graph-Problem1010.Expectation1005.Fragrant-numbers1007.A-Very-Easy-Math-Problem第五场1001.Tetrahedron标签:数学、结论结论题。设直角四面体一点到底面3个顶点距离分别为a、b、c,顶点到底面高为h,则有1h2=1a2+1b2+1

2020-08-07 23:24:11 395

原创 2020牛客多校训练营(第七、八场)

目录第七场H.DividingB.Mask-AllocationC.A-National-Pandemic第七场H.Dividing标签:整除分块发现符合要求的(n,k)无非两种,要么n是k的倍数,要么n-1是k的倍数(n=1也算)于是就把问题转化成求解∑k=1n⌊Nk⌋+∑k=2n(⌊N−1k⌋+1)\sum_{k=1}^n\lfloor\frac{N}{k} \rfloor+\sum_{k=2}^n(\lfloor\frac{N-1}{k} \rfloor+1)∑k=1n​⌊kN​⌋+∑k=2

2020-08-03 23:45:05 357

原创 2020杭电多校训练(第三、四场)

目录第三场1005.Little-W-and-Contest1007.Tokitsukaze-and-Rescue1008.Triangle-Collision1006.X-Number第四场1004.Deliver-the-Cake1007.Go-Running1003.Contest-of-Rope-Pulling第三场1005.Little-W-and-Contest算法标签:并查集、组合数因为可行的组合只有2、2、1和2、2、2两种那么每次合并时统计两个集合中1和2的个数,并计算出“因这次

2020-08-01 02:22:39 425

原创 2020牛客多校暑期训练营(第五、六场)

目录第五场D.Drop-VoicingB.Graph第六场快速清一下进度。。回头细补第五场D.Drop-Voicing算法标签:求LIS经过一些观察之后把问题转换成:“最少移动多少个数使得环有序”,也就是要找出原环的最长递增子序列(LIS)。打的时候因为n比较小直接O(n3)O(n^3)O(n3)过了,但是通过二分或者树状数组其实是可以压到O(n2logn)O(n^2logn)O(n2logn)的参考:最长上升子序列(LIS)的三种求法#include<bits/stdc++.h>

2020-07-28 02:30:58 214

原创 2020杭电多校训练(第一、二场)

目录第一场1005.Fibonacci-Sum1009.Leading-Robots1006.Finding-a-MEX第二场1012.String-Distance1005.New-Equipments第一场1005.Fibonacci-Sum标签:二次剩余、二项式展开已知斐波那契数列通项公式Fn=15[(1+52)n−(1−52)n]Fn=\frac{1}{\sqrt{5}}[(\frac{1+\sqrt{5}}{2})^n-(\frac{1-\sqrt{5}}{2})^n]Fn=5​1​[(2

2020-07-25 20:47:48 393

原创 2020牛客暑期多校训练营(第二、三、四场)

目录第三场C.Operation_LoveE.Two_MatchingsF.Fraction_Construction_Problem第三场C.Operation_Love按照顺序依次计算两点之间的距离如果(a,b)长度为6,(b,c)长度为1,说明(a,b)是拇指的线段如果(a,b)长度为6,(b,c)长度为9,说明(b,a)是拇指的线段如果是左手,那么其他所有点都在拇指线段的左侧,反之则在右侧。判断点在线段左侧还是右侧可以通过叉乘的方法。假设线段为(x1,y1)->(x2,y2),

2020-07-24 14:19:00 290

原创 扩展欧几里得算法(乘法逆元、不定方程求整数解)

目录欧几里得算法(辗转相除法)扩展欧几里得算法求解扩欧板子应用欧几里得算法(辗转相除法)也就是gcd(a,b)=gcd(b,a%b)gcd(a,b)=gcd(b,a\%b)gcd(a,b)=gcd(b,a%b)知乎上看到了一个比较好的证明(证明过程不重要):我们只需要证明a,b的公因数集等于b,a%b的公因数集,那么这两个集合里的最大值肯定也相等,即gcd(a,b)=gcd(b,a%b)gcd(a,b)=gcd(b,a\%b)gcd(a,b)=gcd(b,a%b)设a=bq+ra=bq+ra=bq

2020-07-20 00:47:42 856

原创 Codeforces EduRound #91 1380E. Merging Towers(并查集+启发式合并)

题目描述:题目标签:构造图+LCA/并查集题目大意:给出半径为1…n的n个盘子和m根塔,要求每根塔上盘子的半径始终从底向上递减,一次操作可以将一根塔上的任意个盘子移动到另一个塔的顶部,另某一情形下的复杂度为将所有盘子移动到同一根塔上所需要的最小操作数。题目给出m-1次询问,每次询问时输出当前情形的复杂度并合并两根塔上的盘子到同一根塔上。首先计算复杂度,复杂度等于满足t[i]≠t[i+1],i∈[1,n−1]t[i]\not=t[i+1],i\in[1,n-1]t[i]​=t[i+1],i∈[1,

2020-07-17 00:03:39 316

原创 2020牛客暑期多校训练营(第一、二场)

目录第一场:J.Easy_IntegrationI.1_or_2H.Minimum-cost_FlowA.B-Suffix_Array第二场F.Fake_MaxpoolingC.Cover_the_TreeB.BoundaryJ.Just_Shuffle第一场:J.Easy_Integration结论是(n!)^2 / (2n+1)!。听说是用Wallis积分算的,我还是找规律吧。#include<bits/stdc++.h>using namespace std;typedef l

2020-07-16 17:17:10 267 1

原创 CDQ分治和多维偏序问题

尝试一下写个专题吧。目录1. CDQ分治介绍2. 逆序对问题3. 二维偏序问题4. 三维偏序问题1. CDQ分治介绍CDQ分治与其说是一种算法,不如说是一种思想。分治算法往往可以分成三步:分解:将原问题分为若干个子问题解决:递归处理分段后的子问题合并:通过子问题的解求出原问题的解在我看来,CDQ分治与一般的分治算法的区别关键在于合并这一步上,也就是merge操作。常见的分治算法(比如归并排序、线段树的merge操作等等)往往只关注合并后的结果,但CDQ分治则会同时关注结果和过程两方面,并

2020-07-09 01:31:41 493

原创 Codeforces Round #654 1371E2.Asterism (Hard Version)

题目描述:E2. Asterism (Hard Version)time limit per test 1 secondmemory limit per test 256 megabytesThis is the hard version of the problem. The difference between versions is the constraints on n and ai. You can make hacks only if all versions of the probl

2020-07-04 00:37:54 300

原创 Web编程大作业(六)桌面直播+人脸识别+总结(ffmpeg,jsmpeg,jquery.facedetection)

目录桌面直播人脸识别总结桌面直播只能算是一个基于ffmpeg和jsmpeg的应用。首先需要安装的内容有:ffmpeg、jsmpeg、ws模块安装过程reference:https://my.oschina.net/chengpengvb/blog/1832469 (ffmpeg建议在官网装最新的可执行版本)直接把下载下来的jsmpeg的代码引入网站后端var STREAM_SECRET = 'supersecret', STREAM_PORT = 8081, WEBSOCKET_PORT =

2020-06-30 19:15:58 774 1

原创 Web编程大作业(五)在线黑板&弹幕功能(canvas+websocket)

目录在线黑板前置准备实现原理一些细节处理弹幕功能前置准备实现原理细节处理效果和代码在线黑板前置准备先用canvas做一个简易版的黑板,能改变笔触的颜色和粗细,并将当前绘图复制到另一个元素上这个简易版黑板的代码也可以看一下<style> .can{ border: 2px black solid; top:100px; margin:auto; } #show{ border: 2px black

2020-06-30 00:42:47 938 1

原创 Web编程大作业(四)高清重制+在线测验+热点广播(angular框架,websocket,树莓派)

目录1.高清重制1. express的再理解2. angular作用域问题、自动同步问题3. 写html页面的一点方法2. 在线测验功能实现3. 热点广播网站文件夹发送树莓派安装数据库手机端测试小结1.高清重制前几篇写的代码功能更多的是从技术层面出发,把网站需要用到的业务逻辑打通,但没有怎么考虑网页的外观样式和代码结构之类的问题。同时也是觉得因为代码结构写的太乱,很难在此基础上加更多的功能和样式。于是就从零开始,手写了整个express框架,配合angular重新写了一个高清重制版。样式方面没有用bo

2020-06-27 12:34:10 503

原创 Web编程大作业(三)在线聊天&文件共享(nodejs-websocket+multer)

目录关于websocket利用nodejs-websocket搭建websocket服务器在线聊天功能实现文件共享功能实现总结和一点问题(?)关于websocket相对于http的单项传输(只能由客户端发起请求),websocket的特点是实现了双向传输,即后端也可以随时向前端传输数据。一个典型的应用就是在线聊天室。某客户端向websocket服务器发送的数据(发送聊天内容)-->websocket服务器收到请求-->服务器主动向每个连接websocket的客户端广播信息(客户端收到聊天内

2020-06-21 21:43:26 799

原创 Web编程大作业(二)用户注册&登录系统(express+MySQL)

目录1. 注册&登录系统逻辑图2. 效果演示3. 代码实现1. 首页(index)2. 登陆页面(login)3. 注册页面(register)4. 零零散散的知识点总结1. 注册&登录系统逻辑图2. 效果演示初次访问网站时,后端没有检查到cookie,于是自动跳转至登录页面点击“注册账号”后跳转至注册页面身份选择为教师时会多出验证码一项。(此处验证码暂时是固定的)如果输入的信息有误,会根据错误信息进行对应的提示。如果注册信息无误则会显示注册成功,并有一个返回首页的

2020-06-18 10:25:19 2301 1

原创 Web编程大作业(一)树莓派环境配置、Wifi搭建

目录项目要求和一点想法树莓派环境配置烧录Raspbian buster系统通过网线连接电脑,进入VNC远程桌面设置静态ip创建web服务器安装nodejs用express框架搭建本地web服务器通过Wifi热点访问自建的网站1. 项目要求和一点想法第一步当然是先把树莓派的硬件装起来然后第二步就不知道干啥了简单分析一下,这个项目可以分成两个相对独立的部分,第一部分是在本地先把网站的大多数功能实现,(不同类型用户登录、即时文件共享、WebSocket下发文件、Ca

2020-06-06 14:32:42 1248

原创 Codeforces Round #644 1360H. Binary Median(思维、构造)

题目描述:time limit per test2 secondsmemory limit per test256 megabytesConsider all binary strings of length m (1≤m≤60). A binary string is a string that consists of the characters 0 and 1 only. For example, 0110 is a binary string, and 012aba is not. Obv

2020-05-26 19:52:24 336

原创 Codeforces Round #643 1355E.Restorer Distance(三分/二分)

题目描述:E. Restorer Distancetime limit per test 1 secondmemory limit per test 256 megabytesYou have to restore the wall. The wall consists of N pillars of bricks, the height of the i-th pillar is initially equal to hi, the height is measured in number of

2020-05-18 03:33:22 290

原创 Nowcoder 5477E. 弦(卡特兰数、组合数学)

题目描述:给定一个圆,圆上有2N个互不重叠的点。每次操作随机选择两个先前未选择过的点连一条弦,共连成N条弦,求所有弦不交的概率。输入描述:一行,只有一个整数N(1≤N≤10^7)。输出描述:一行,即答案。答案应以模109+7的形式输出。正式的说,令M=109+7,答案可以表示为最简分数p/q的形式,其中p和q为整数且q与M互质。输出整数x满足 0≤x<M且 x⋅q ≡ p(mod M)。示例1输入2输出666666672算法标签:卡特兰数、组合数学首先确定思考方向,要用合法

2020-05-16 12:59:29 788 2

原创 Nowcoder 5278G.血压游戏 第18届上海大学网络友谊赛(虚树+dp)

题目描述Compute 有一棵 n 个点,编号分别为 1∼n 的树,其中 s 号点为根。Compute 在树上养了很多松鼠,在第 i 个点上住了 ai个松鼠。因为某些缘故,它们开始同时向根节点移动,但它们相当不安分,如果在同一个节点上,它们就会打起来,简单地来说以下事件会依序发生:·如果一个节点上有 2 只或 2 只以上的松鼠,他们会打架,然后这个节点上松鼠的数量会减少 1;·根节点的所有松鼠移动到地面,位于地面上的松鼠不会再打架;·所有松鼠同时朝它们的父节点移动。所有事件各自都在一瞬间完成,

2020-05-10 22:04:37 532

原创 Codeforces Round#635 1337E.Kaavi and Magic Spell(区间dp)

题目描述:E. Kaavi and Magic Spelltime limit per test 2 secondsmemory limit per test 512 megabytesKaavi, the mysterious fortune teller, deeply believes that one’s fate is inevitable and unavoidable. Of...

2020-05-08 17:13:05 242

原创 Codeforces Round#639 1345D.Monopole Magnets(构造)

最近一个月基本处在只偶尔打下contest不刷题的状态,结果就是把把拉胯,于是rating这还是幸亏本场unrated了。让人不禁感叹这就是努力型选手吗,真是有够好笑的呢痛定思痛,为了督促自己不要疏于练习,定个小目标,以后把每次contest最后做不出来(或者很勉强做出来)的题自己再好好理解总结一下(尽量是做到Div.2的D题,1900-2200的),参考内容包括但不仅限于出题人给出的tut...

2020-05-07 23:07:39 264

原创 一个流水账式的nodejs爬虫项目介绍(下)

好像不管写都没法摆脱它流水账的本质,所以,我摊牌了。照例目录:介绍实现过程MySQL数据库1.1 MySQL结构1.2 插入信息(nodejs接入MySQL)1.3 操作方法(筛选、排序、统计)网站搭建2.1 express框架一点简单的认识2.2 关于html内嵌js代码2.3 使用express框架一些坑和扩展MySQL中文乱码可选搜索范围...

2020-05-01 20:57:20 424

原创 一个细致入微的nodejs爬虫项目介绍(上)

一个细致入微的nodejs爬虫项目介绍(上)为了完成作业以及让自己看上去没有真的在划水,决定开始写博客了。虽然说写博客这件事的出发点是为了交作业,但博客这种形式说到底是为了给别人看的,是为了尽可能让别人理解的。如果只是自顾自地讲,而不以“让别人理解”为目标,写博客这件事就沦为一种自我满足,其实也就没有什么意义了。所以,既然是要写出来,放到网上的,那么在介绍的过程中,我会尽可能指出所有可能产生...

2020-04-19 04:00:06 835

空空如也

空空如也

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

TA关注的人

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