自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 gateway限流 redisRateLimiter

起因作为sduoj开发组的成员,承担起一定的责任和义务(主要是因为自己比较闲没事情干),主动负责给oj添加gateway限流的工作查看官方文档gateway官方文档然而文档里面只说了非常简单的用法,在配置中心去配置单独的路由,显而易见,这种做法非常简单粗暴,但是配置中心可能会乱七八糟,无法直视。追求更好更简约显然上述的方法绝对是我们(主要是学长)不能接受,so我开始尝试阅读RedisRateLimiter类的源代码,发现了里面的有个内部类Config,用来储存速率和桶容量在父类里面查

2021-04-10 15:03:33 2443

原创 2021-10-21

一、概念裁剪是CG中许多重要问题的基础,裁剪最典型的用途是确定场景中或画面中位于给定区域之内的部分。由于在一个典型的场景之中,需要对大量的点、线段进行裁剪,因此裁剪算法的效率十分重要。关于裁剪有一些很常见的算法,比如说Cohen-Sutherland线段细分裁剪算法、中点分割算法、Cyrus-Beck算法、Liang-Barsky算法。这篇文章重点讲Liang-Barsky算法。剩下的那些算法有空再补。二、Liang-Barsky算法参考博客:https://www.cnblogs.com/keg

2021-10-21 20:23:41 206

原创 jenkins部署github项目记录

准备首先先在电脑安装java,maven,配置好环境变量,然后如果是debian系统,直接apt install jenkins然后到/usr/share/jenkins/目录下运行jenkins.war即可java -jar jenkins.war --httpPort=9090如果需要改端口,加上后面的参数即可(装了宝塔的一定别忘了开安全端口)然后输入root和对应的初始密码,如果忘记初始密码可以在/root/.jenkins/secrets/Initi…那个文件里面查找这些基本都没什么问

2021-07-30 15:30:35 293

原创 debian修改java版本

一开始装的时候没注意版本,装了默认的java11版本。一个月之后发现版本要修改,但是忘记了一开始怎么装的。导致搞了半天也卸载不掉,应该是用apt安装的,配置文件读取的优先级比/etc/profile要高,所以改那个文件一点用都没有,需要先卸载,但是apt remove java是错误的,正确的应该是apt remove Openjdk*,然后在挪动对应的java版本并进行maven和java的配置,另外值得一提的是apt install maven会强制安装jdk11,他俩是绑定一起的。...

2021-07-27 16:17:57 460

原创 表格请求体参数转json

尝试了各种方法,没有解决途径,求大佬解决。

2021-07-26 17:03:43 154

原创 jdk版本问题

原demo jdk 15版本,把代码移植到jdk1.8的项目里面,出现报错javax.net.ssl.SSLException: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty at sun.security.ssl.Alerts.getSSLException(Alert

2021-07-16 16:32:54 211

原创 物理机debian环境搭建

全程ob腾哥配置,记录一下。1.首先需要一个刻录u盘,格式化。2.下载u盘刻录软件,refus。3.到镜像站或官网下载debian iso4.插入u盘,进行刻录5.到电脑插入u盘,开机猛戳F12,查看是否有utef u盘对应的选择框,如果没有(刻录错误/bios设置问题)6.一路安装,注意安装ssh,方便远程登陆操作。7.获取ip,远程登陆。...

2021-07-04 17:52:52 609 1

原创 springboot slf4j 日志配置

还是sduoj的feature,最近事情比较多,所以这个feature做的比较简单随意,没有搞很多复杂的东西,仅仅是多写了一个xml配置文件。<?xml version="1.0" encoding="UTF-8"?><configuration> <include resource="org/springframework/boot/logging/logback/defaults.xml" /> <include resource="or

2021-05-25 15:45:06 163

原创 spring data mongodb学习笔记

11.5 ID每个mongodb对应的实体类里面一定要有@Id,如果没有mongodb会自动生成,但是不会跟实体产生映射。11.6 Type mapper

2021-04-21 23:53:18 425

原创 命令行启动的线程模型优化

熟悉代码腾哥给了些任务通读完judger的核心代码,跟黄学长联系修改完OLE,就开始尝试研究命令行启动的线程模型优化。(因为judger的代码在github上是公开的,so我这里就直接贴腾哥的代码啦)@author:张腾学长public class CommandExecutor { // CPU 池 private final Queue<Integer> cpuPool; // 线程池 private final CompletionServic

2021-04-20 23:48:12 205 1

原创 山东大学数据结构与算法设计

前人栽树,后人乘凉(滑稽)主要我觉得自己代码写的简洁清晰,每一次这种代码都很清静,像去设计一件艺术品一样。实验二:竞赛树+外排序github代码链接这个没啥好说的,很多文件一起读感觉挺有意思的。竞赛树里面存储的是序号,传递进数组指针来进行比较。...

2021-04-20 22:24:39 801 1

原创 openlab项目开发记录

2021年4月18日前端给figma设计思路图, 讨论两个小时,商榷大体技术和实现,确定后端nosql存储方式2021年4月19日设计nosql表格

2021-04-19 11:53:11 153

原创 关于装箱问题的算法研究

装箱问题的算法研究山东大学 赵一帆问题描述在箱子装载问题中,有若干个容量为c的箱子和n个待装载入箱子中的物品。物品i需占s[i]个单元(0<s[i]≤c)。所谓成功装载(feasible packing),是指能把所有物品都装入箱子而不溢出,而最优装载(optimal packing)则是指使用了最少箱子的成功装载。问题分析这道题目是算法课设发给我要求完成的题目,给了四种基本的算法,再加上avl树和竞赛树优化(竞赛树那部分我写的还是有点满意),后续我感觉可以用模拟退火来做一下,所以就搜集资料

2021-04-15 23:18:03 4886 2

原创 关于第一次给学院做项目的经历

起源腾哥给我介绍了一个项目,做一个选课系统,给从文书院的,那时候是寒假,正好每天除了教学生和做发现杯的项目,就没有事情做了,所以欣然接受了。合作腾哥作为leader,我是后端,还有两个同学作为前端(直到寒假回来见面才知道是两个女生。。),因为是第一次接项目,所以格外认真,调整除了百分百的状态准备去迎接。上面的文档都是腾哥写的,这么专业的文档和分配是我从来都没有见过的,当时的我感觉特别的陌生,有被这些文字给压到,任务量分配的很细,给我这个急性子些许的焦虑。哦我是一个急性子,所以在熟悉了腾哥给的

2021-04-11 17:57:09 205

原创 cas统一认证实现

起源作为SDUOJ开发组的一员,承担自己的责任与义务,为sduoj添枝加叶。了解原理腾哥给我讲了原理,上面这个图生动形象。理解了原理,腾哥又发了一些对应的接口,我就开始试着写一写,写这个比gateway限流轻松了很多,不需要查阅很多的文档和看一坨坨的源码(尽管他们写的很好)。最开始的一版业务基本都写到了Controller层,非常的不健康和不友好,也体现了我菜狗一般的业务逻辑。后来腾哥跟我说最好抽离一下,为之后接入QQ和微信做准备,然后我就把很多代码都抽离到了server层。cas验证没什

2021-04-11 10:20:54 666

原创 c++缺省构造函数

c++缺省构造函数类内嵌对象类书写实验报告时发现一个问题,首先写了一个类如果说写这个程序的人是为了不让编译器产生缺省构造函数,那么他显然达到了这个目的。但实际上在public中已经有构造函数的情况下,编译器是不会产生缺省构造函数的,因此如果去掉private里面的Date(){}该程序依旧会报错。那如果把自己写的构造函数全部放在private里面呢,让public里面没有构造函数,编...

2020-03-14 21:29:20 1438 1

原创 网络流习题

网络流这东西其实就是建模,对于算法本身需要深度理解它的基础模型,即对货物的来回传递,还要求掌握算法每一步的效果和作用(其实对每一个算法都是如此),我记录博客主要是为了防止自己忘记。昨天学长出了一道题,1e5对10的二分图,1e5的人分配在10个星球上,实际上加边优化跑dinic可以过,但是有一种更优的算法,因为每个人最多只有2^10种状态,那么可以把人压缩为2^10个点,跑dinic更快。...

2019-10-31 21:18:22 264

原创 树链剖分入门详解

先抛出一个问题,一棵n个点的树,每个点有一个不变的权值,m次询问任意两点之间的权值和。最简单的算法:m次循环,每次从一个点出发,dfs累计走过的路径,直到到达另外一个点。int dfs(int x,int fa,long long deep){ d[x]=deep; for(int i=head[x];i;i=nxt[i]) { int u=to[i];if(u==fa) c...

2019-10-16 20:15:49 280

原创 高等数学一——微积分个人笔记

该博客记录一些细点。1.数列存在极限数列,但函数不存在极限函数,因为函数存在无数种趋近情况:例如对于f(x)=x,不存在极限;而因此不能简单地讨论函数是否有极限。而数组有确定的下标值,对于其中地某一个数组下标,都有确切的值与它对应,只有数组单方向无限延申的时候才有无限趋近的可能。2.对于,函数剧烈波动。...

2019-10-14 08:58:12 1211

原创 c++最近公共祖先LCA(倍增算法和tarjan)

1.倍增找两个点的LCA,先让它们深度相同,然后倍增向上跳跃,跳到使他们的值不相同的最浅层的点,那么此点的上方即是LCA。#include#include#include#include#include#include#include#define in(x) scanf("%d",&x);using namespace std;int n,m,rt,d[500007],

2017-09-01 15:28:18 6385

原创 洛谷p1816忠诚

原题区间查询最小值,数据1e5,nlogn算法,联想到RMQ算法,f[i][j]表示i点后2#include#include#include#include#include#include#define in(x) scanf("%d",&x);using namespace std;int n,m,a[100007],f[100007][33];int main(){

2017-08-31 17:02:20 405

原创 快速幂模板c++

原题#include#include#include#include#include#includeusing namespace std;long long b,p,k;int main(){ scanf("%lld%lld%lld",&b,&p,&k); long long ans=1;long long a=b,l=p; for(;l;l>>=1

2017-08-31 16:57:36 931

原创 洛谷p1198最大数

原题数据大小是1e6,实现单调修改和区间最大值,和树状数组模板类似,不过有地方需要注意。求最后l个值得最大值,只需要反着装值,到x求后l,那么求x+l之前的最值就可以了(x到n的值已求)。#include#include#include#include#include#include#define in(x) scanf("%lld",&x);using namespac

2017-08-31 16:46:34 369

原创 洛谷p1160队列安排

原题用数组模拟很费事,所以用双向链表,套用模板即可。#include#include#include#include#include#define in(x) scanf("%d",&x);using namespace std;int n,m,head[200005],vis[200005];struct node{ int next,up,mark;}a[2

2017-08-31 16:37:16 525 1

原创 洛谷p1496火烧赤壁

原题排着找就行了,但是范围太大,需要离散化一下,左端点由小到大排序,然后每个进行判断。另外结构体习惯用stablesort。#include#include#include#include#include#include#include#define in(x) scanf("%d",&x);using namespace std;int n;struct node

2017-08-31 15:54:24 670

原创 洛谷p1908逆序对

原题这里有一个树状数组的做法,先离散化,由小到大排序,每枚举到一个点,就加入树状数组,然后计算之前比他大的值,加入ans。#include#include#include#include#include#include#define in(x) scanf("%d",&x);using namespace std;int n,p[40001],c[40001];struc

2017-08-31 15:38:06 407

原创 c++树状数组2模板

原题区间修改,单点求值,那么都需要logn的复杂度,将修改的效果添加到大节点上,向下遍历树,这样最后求单点时向上遍历树。#include#include#include#include#include#include#define in(x) scanf("%d",&x);using namespace std;int n,m,a[500001],c[500001];vo

2017-08-31 15:29:11 364

原创 c++树状数组1模板

原题这是一个模板,奇数点存本身值,偶数点根据其二进制中1的个数存2的n次方个值,这样改值用logn就可以了。#include#include#include#include#includeusing namespace std;int n,m,a[500009],c[500009];int change(int pos,int v){ for(int i=pos;i

2017-08-31 15:14:26 1138

原创 洛谷p1455搭配购买

原题没有搭配就是一道裸01背包,搭配的话用并查集并一并,结束后只取他们的祖先加入背包计算。#include#include#include#include#includeusing namespace std;int n,m,mon,v[10001],w[10001],fa[10001],f[10001];int find(int x){ if(fa[x]==x)

2017-08-31 14:58:46 357

原创 洛谷p1525关押罪犯

原题挺有意思的一道题。大多数人思路应该是贪心,将犯罪值有大到小排,将两个人放在两个并查集中,如果他们在同一个并查集就退出。这样你画一下样例就明白了,这两个人的确放在两栋楼,但是具体哪个人放在哪栋楼效果是不同的,而你要确定的话又需要枚举一遍,超时妥妥的。两个互为敌人的位置无法确定,但是很明显还是要用并查集的。敌人的敌人呢?他们是不是一定在同一栋楼?(贪心思想)所以每次可以确定在一

2017-08-31 14:46:35 335

原创 洛谷p1196银河英雄传说c++

原题把两个舰队合并起来,查询某两个舰是否在同一舰队中,简单用一下并查集就可以了。但本题不限于此,还需要求两个舰的距离,那么试试改并查集,并查集最大的特点就是利用祖先,那么他们的距离就可以用到祖先的距离差表示。现在的问题是求某点到其祖先的距离,一定不能取消路径压缩计算次数,铁定超时。开一个数组front[i]表示i点到祖先的距离,典型的加权并查集,在路径压缩时进行修改(详见代码)。

2017-08-31 14:35:53 789

原创 洛谷p1005矩阵取数游戏

原题2^80超int,需要高精度计算,也可以int128.行和行之间没有联系,所以只要单独求每一行之后取和即可,dp过程中i,j分别表示左端点和右端点。#include#define lll __int128void print(lll x){ if (x==0) return; if (x) print(x/10); putchar(x%10+'0');

2017-08-31 11:11:29 504

原创 洛谷p1541乌龟棋

原题不能用贪心,那么就是线性dp,难点在于如何表示状态,因为牌的种类只有4种,所以开一个五维数组分别表示位置、不同牌的牌数即可。可以优化一维,因为牌的总数已知,m-3种牌数=另外一种牌的数量。我写的是递推式,因为牌数刚好用完,直接输出f[n][0][0][0]。#include#include#include#include#includeusing namespace st

2017-08-31 10:50:35 408

原创 洛谷p1970花匠

原题一共两种情况,分别画图模拟一下就可以很快想出思路,线性dp分情况讨论 ,波峰与波谷交替出现,比如现在正在求f[i],那么寻找i之前比他矮(那么他就是波峰)或比他高(他是波谷),取最大值存入,并且记录他是波谷还是波峰。代码不难实现,看懂思路就好。#include#include#include#include#includeusing namespace std;int

2017-08-31 10:42:52 317

原创 洛谷p2831愤怒的小鸟

原题每个猪的位置不同,所以不能简单的表示出状态,all[i]表示第i个抛物线打掉了哪些猪,其值本身存储状态(二进制),只需要找所有有用的抛物线,然后状压f[i]表示i状态下最少用掉的鸟,转移方程见代码。其中的m可以用来优化。代码虽然长,但是比较好懂。#include#include#include#include#include#includeusing namespace

2017-08-31 09:57:05 404

原创 洛谷p1052过河

原题先想一下思路,由于是区间跳跃,不能用贪心,那么f[i]表示跳到i时最少踩到的石子数,i只能由i-t~i-s转移过来,所以选择其中的最小值跳,保证f[i]最小。但是l太大了,1e9,但是m和t很小,就是1e9中有很多没有用的空间,我们求终点的值,所以中间废掉的空间可以省略,缩点之后用还能用单调队列优化一下。#include#include#include#include#in

2017-08-31 09:32:48 305

原创 洛谷p1879玉米田

原题看取膜的数就知道暴搜死定,那么用状压,f[i][j]表示可以转移到i行j状态的方案数,和互不侵犯类似,但由于提前有赋值,所以把1和0换一下可以更方便的判断推导。#include#include#include#include#include#includeusing namespace std;int m,n;bool a[14][14];int b[14],f[14]

2017-08-31 08:44:10 528

原创 洛谷p1896互不侵犯

原题先思考怎么表示状态,用f[i][j]表示第i行放j个显然不行,那么需要一个可以表示出状态的变量,由于m很小,可以用二进制表示每个位置是否放置,因此f[i][j][z]表示第i行放置状态j时共放置z个国王的方案数,本行只收上一行的状态。我用的是状压dfs,和状压dp想法一样,而且比较好实现,另外复杂度相同。状压dfs(((2^n)^2)*k*n)最坏情况1e9,可以ac。x表示行

2017-08-31 07:45:30 399

原创 洛谷p3800power收集

原题一道很不错的优先队列题f[i][j]的最大值由上一行的状态有关,转移方程f[i][j]=max(f[i-1][z])+a[i][j],z∈(j-k,j+k)每个转移会超时,所以我们对上一行建立单调队列,由1推到m,提前入队,超出范围出队。#include#include#include#include#includeusing namespace std;int n

2017-08-30 19:44:00 253

原创 洛谷p1419寻找段落

原题看到小数,想一下可不可以二分,如果二分怎么判断。让每个值去减mid,找到一个正值的段落即可,如果没有l和r的限制,f[i]=max(f[i-1],0)+a[i]-mid即可。但由于l和r,可以使用单调队列,最小的最优,使你所求的区间最大。#include#include#include#include#includeusing namespace std;int

2017-08-30 19:03:57 422

空空如也

空空如也

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

TA关注的人

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