- 博客(137)
- 收藏
- 关注
原创 ALPC_Natural_Selection
刚刚结束的ICPC2023沈阳是自然选择号的最后一场 XCPC 区域赛,很高兴也很幸运能拿到校排名 rk4,圆了一个这半年才开始做的梦。在这里讲一下这支队伍的故事。
2023-11-15 11:24:59
441
原创 Safe Policy Optimization 复现
第 2 点中的 alpha 尝试了固定值(0.7,0.85)以及自适应值(类似 PDO 更新拉格朗日乘子),发现自适应的更新 alpha 效果更好,与改进前相比,前期训练表现提升较快,也能得到满足约束的解,并且 reward 有较大提高。使用 RCPO 将拉格朗日乘子初值设置为 2 之后,可以跑出可行解,但是 reward 不高,且仍然会出现震荡的现象。由此猜测对于多约束问题,除了论文中的随机挑选一个违反的约束进行优化,可能还可以同时优化所有违反的约束。,如果约束都被满足,那么最优的。
2023-07-17 02:07:12
834
1
原创 强化学习:Actor-Critic、SPG、DDPG、MADDPG
DQN 或者 DDPG 都不适用于多智能体环境,主要的问题是在训练过程中每个智能体的策略都在变化,因此从每个智能体的角度来看,环境变得十分不稳定。即对于同一个 observation,执行相同的 action 得到的 reward 不同,环境的真实状态可能天差地别,进而导致 q 值的估计很不稳定,也就不能给出 action 的正确梯度。我们想要让 Critic 的评判更全面,就需要给它更多的信息,比如其他智能体的状态和动作等,让对于某个 agent 的环境变成完全可观察的。MADDPG 的思想就是每个
2022-12-01 20:01:10
2156
原创 自适应点云配准(RANSAC、ICP)
FPFH 保留了 PFH 的大部分信息,但忽略了相邻点之间的计算,而是按照距离的反比将一个邻域内的点的直方图加权得到 33 维向量,效率更高。我的实现中采用了前两种。任务一和任务二的主要思路一致,都是先对点云进行降采样、滤波后计算点云特征信息(包括法向量、特征直方图、以及后续特征匹配需要的若干特征),再利用提取的特征使用 RANSAC 的方法进行粗配准,最后使用 ICP 的方法进行精配准。改进方法就是,对于源点云中的一个点,如果在目标点云中不存在和它的距离小于某个阈值的点,那么在此次迭代中就不考虑该点。
2022-11-24 15:18:26
14077
21
原创 支持向量机之一:约束优化问题、硬间隔SVM
带约束的优化问题可以描述为以下形式minx f(x)s.t. ∀i,gi(x)≤0,∀j,hj(x)=0(1.1)\tag{1.1}\begin{aligned}\min_x\ &f(x)\\s.t.\ &\forall i, g_i(x)\leq 0,\\ &\forall j, h_j(x)=0&\end{aligned}xmin s.t. f(x)∀i,gi(x)≤0,∀j,hj(x)=0(1.1)称 f(x)f(x)f(x) 为目标函数,gi(x)g_i(x)gi(
2022-10-12 19:23:10
1190
原创 DQN、蒙特卡洛树搜索(MCTS)
Q(s,a): 状态 s 下采取动作 a 的期望收益Q(s,a)←(1−α)Q(s,a)+α[r+γmaxa′Q(s′,a′)]
2022-08-11 11:09:35
1505
原创 分支预测器实验简述
本来没打算写的,一是因为最近太忙了,二是因为这个东西太玄学了,很多地方都在吊打我的常识。开始做的时候已经是提交当天下午了(当时还没有延期的通知),所以前面没做好数据记录。拿到代码以后我首先试了很多种平凡的改法,比如 PC xor ghr 改为 (PC << 2) xor ghr 之类的,改进不大,大多数情况下都要比基本的 gshare 劣。然后实现了一个仅用局部历史的预测器,测量几组数据发现比 gshare 优秀。嗯,很好。然后我又写了个预测器来选择是采纳局部信息的预测器还是全局信息的预测器
2022-03-29 16:13:54
1152
8
原创 JavaScript异步
真没想到这个系列还能更新下去…之前本来就是想写个烟花写个黑白棋小程序图一乐的,结果搞个文化节活动找不着人来写js,只能自己上了,连熬三个大夜总算是把一千多行的代码理完、部分重构完了。先占坑,等忙完这一阵再补。(这话不知道都说了多少次了,光是想想这两个月要干什么就头大)...
2022-03-24 01:07:27
1363
1
原创 保姆级缓冲区炸弹破解教程
四个关卡本身不算难,而且有提示,在已经有二进制炸弹基础的情况下这绝对是保姆级教程了。但是有个非常鬼畜的第 0 关。我刚上手的时候就开始做第 0 关,结果做了一个多小时还是不能再不劫持控制的情况下过关,没想到后面的关卡反而简单了。建议通关顺序:1-2-3-0-4。先不管第几关第几关,先把程序的栈结构理一下:嗯,还是比较清楚的。我们开始写入的地方就是 buf。注意用 _alloca 在栈中申请空间字节数量是 4 的倍数(当然在动调下这些都不是问题):第一个木马最后是调用了 exit(0),因此无需维
2022-03-14 20:23:35
1958
6
原创 非保姆级二进制炸弹破解分析
本文采用静态分析的方法,即通过阅读反汇编代码理清程序运行逻辑,通过写脚本得到密码。与之相对地也可以采用动态调试,即在 ida 里面设断点,通过修改寄存器信息等绕过一些爆炸点,类似直接在内存里看答案。我不会把整个破解过程分析一遍,只重点分析一些宏观的思路以及容易卡住的点,最后分析了下彩蛋的不同解法。保姆级教程见 [Blu3m00n's Blog](https://blu3m00n.top/2022/02/22/%E4%BA%8C%E8%BF%9B%E5%88%B6%E7%82%B8%E5%BC%B9%E5%8
2022-03-07 16:58:06
1241
1
原创 一个wordle小挂
前段时间看到了 wordle 这个游戏,觉得挺有意思。我刚开始的策略是前几个词尽可能把 26 个字母覆盖改一遍,然后最后一次机会就是一个排列组合的问题了。这样做一是因为我想要猜中的把握大一点(非酋实惨);二是因为我没有对可猜测单词集合的整体认识,不知道猜哪个词能筛选掉更多的不合法答案。今晚趁着背不进近代史,刚好思考了一下,顺便写了写。初步想法首先可以从源码里找到合法的长度为 5 的单词(记为 validWords)以及可能出现的答案(记为restWords)。一个自然的想法是先建一棵至多六层的决策树,
2022-02-28 09:04:44
3594
原创 [SystemVerilog] MIPS架构下的五级流水线CPU设计
众所周知,MIPS体系的五级流水线CPU分为五个阶段:取指(IF)、译码(ID)、执行(EX)、存储器(MEM)、写回(WB)。可以发现节点数比较多,为了减少出错(对自己静态调试能力较为自信.jpg),那么程序的框架就显得比较重要了。我采用了按阶段划分的方式,每个阶段一个模块,然后ALU、内存、寄存器文件又单列出来,最后在顶层处理模块间的连线,同时完成冲突模块的设计。
2022-01-26 20:25:12
4243
原创 [SystemVerilog] 基于 FPGA 的数字钟设计
本文使用 SystemVerilog 语言在 Basys3 开发板上实现了带时钟、倒计时、闹钟、秒表、日期、日期/时间设定功能的数字钟。整体思路上,为避免除法器的使用,每个数位设置一个寄存器。有五套并行的(类)计时系统,分别存放时钟、倒计时、闹钟、秒表、日期的信息。- **控制模块** 接受分频后的时钟信号,把输入引脚的信息译码。- **主逻辑** 接受原始时钟信号。 - 处理时钟自增、倒计时自减、秒表自增、日期自增 - 处理时钟、倒计时、日期的设定
2022-01-06 11:18:16
2569
2
原创 一种解决药店卖药问题的新思路
解决这道药店卖药问题最普遍也是最容易想到的做法是贪心求解,然而本题多限制之间相互作用,关系复杂,因此简单的贪心难以找到十分优秀的解。本文提供了一种不同的思路,从新的角度对这个问题进行思考,设计了新的算法,并且详述了算法主要思路产生过程及其合理性。实际运行结果优秀,随机数据下(也许大概率)能找到全局最优解。报告注重思路的分析和证明,实现部分稍简略,具体可见代码。
2022-01-05 09:28:24
3762
7
原创 又是一年末
不敢相信,就地过年竟然还是今年的事情。但大二开学以后时间就在各种工作、学习、竞赛中过得飞快,反应过来又该过年了。我干了什么1. 课内学了数字逻辑,微体系结构2. 深入学习了下C++3. 做了个能用的微信小程序4. 学习了一点点汇编,逆向,pwn一些底层的东西5. 接触了些基本的CV,NLP算法6. 拿了点牌7. 坚持锻炼8. 读了些科幻和人物传记9. 承担了一些骨干工作,也给集训队做了些微小的贡献我没完成什么1. 学一种乐器(咕了两年了...)2. 学一点点剪辑(多媒体上了
2021-12-27 20:05:24
1080
4
原创 牛客多校训练赛补题
集训终于结束了,这个成绩挺出乎我的预料。不论牛客还是杭电,正常发挥20多名,发挥好了能打到十几名。包括昨天 CCPC 预选赛打了第十名(zcq yyds),给我一种选对赛站能出线的感觉?虽然打出来的成绩是以前没想到的,但是这 20 场比赛一场一场打下来以后,我也深刻体会到有很多地方还有不足,而且训练赛三人三机也和正式比赛不一样。继续加油@[toc](目录)# contest2
shellcode向内存中写入可执行的代码,并通过覆盖返回地址跳转到该处执行(未开启 Nx 保护)思路比较显然,已知 buf2 的地址(在 bss 段),把 shellcode 写在 s 里然后返回 buf2 相应的地址即可。问题:为什么不能返回到 s 中 shellcode 的位置?是因为栈地址随机吗?那 buf2 的地址为什么不是随机的(不开 PIE)?from pwn import *p = process("./ret2shellcode")shellcode = asm(shell
2021-06-01 20:57:41
679
2
原创 PwnNotes-0x00 开始
写在前面一些 IDA Pro 的使用:Shift + F12:打开 String window,在其中搜索某个字符串即可定位到内存中的位置。右键,jump to xref to operand… 即可定位到引用了该字符串的函数。BugkuCTF-pwn2读入了一个字符串长度最长 0x100,但是从第三行得知 s 到 rbp 只有 0x30,因此可以覆盖 main 返回地址。在左边找到一个函数名叫 get_shell_,显然可以跳转到这里。这里,只需要跳转到 0x400751。那么输入的字
2021-05-26 22:22:37
258
原创 CISCN2021初赛WriteUp
第一次打 ctf,啥也没学,赛前一道题没做过,了解了下 IDA 的使用就上了。glass200 分 reverse,安卓逆向,.apk 改 .zip 解压,classes.dex 转 classes.jar 后打开,找到 MainActivity 开始读代码。发现调用了 public native boolean checkFlag(String paramString); 这样一个函数,但这个函数并没有写出来。搜了一下 native 关键字,发现是用来调用本地 C 代码的。然后在 glass\li
2021-05-19 16:00:31
1155
1
原创 西安游记
真·游记。人在高铁上,痛定思痛,来年再战。赛前:不像昆明一样卡三题就行。(???)十六号下午四点半来到西安,摆脱了长沙的阴冷潮湿。第一天晚上住在西安钟楼下面的一家酒店,面朝小吃街,毗邻商业街,人声鼎沸,落地窗根本挡不住。晚上去了烂怂大雁塔,真没啥好看的,而且还进不去。又去大唐不夜城转了一圈,十点多就回酒店洗洗睡了。第二天一早起来吃了碗臊子面,就坐了一个半小时的车去西工大。热身赛发放一血气球十分尴尬… 真就华为杯呗。晚上面基了老朋友,吃了烤肉,聊了好久,非常high。赛前一晚上醒了有七八次?手表还告诉
2021-04-19 21:55:45
279
原创 这竟然是一篇年度总结
突然想起来我的总结还没写…本来计划的是1月29号在机场写的,结果没去机场,也就咕了,转眼就大年初九了。这次只从开学开始写起吧。其实仔细想想,开学以来立的那些 flag 基本都被我拔掉了,有那么点小得意。我干了什么学了一点点机器学习。 完成了一个最最基本的二分类神经网络。学了一点点网页开发。 写了一个放烟花的网页放在 github 上(虽然核心不在网页上)。学了一点点 python。 完成了一些有趣的实践,写了一些游戏,完成了一些实际的需求,写了一个五子棋的人机对弈(好像坑还没填上)。学了一点
2021-02-20 21:07:28
2005
12
原创 selenium实现优快云自动评论
写在前面鄙人不才,博客访问数寥寥,仅有的几个评论还几乎都是来捞经验的。于是乎我便写了一个给别人博客评论的脚本,讲究个礼尚往来。主要的步骤分为:获取博客链接 - 登录 - 评论。前置操作需要用到 selenium 和 Beautifulsoup 两个库,通过以下命令安装:pip install seleniumpip install beautifulsoup4另外还需要安装 Chromedriver,网上已经说得很详细了,解压后把 .exe 放在 python 目录下即可。selenium
2021-02-19 18:44:04
1151
15
原创 银行排队大作业实验报告
首先,附加题的目标和普通版的目标不能保证在特殊数据下被同时满足(如果按照普通版要求,一个窗口,两个普通客户,后面密集的来 VIP 客户,那么第二个普通客户需要等待很久很久)。因此我们必须要牺牲 VIP 的部分权益(不能无限插队)来提升普通用户体验,通过计算,每个顾客的期望等待时间可能是递增的,即越后面来的客户会等越久(比如如果期望服务时间大于顾客到来的期望间隔时间,那么可以证明顾客的期望等待时间不小于某个等差数列,证明略)。因此直接计算等待时间的方差或者平均值是不合理且没有意义的,不能作为评判程序好坏的
2021-02-18 20:10:13
1130
1
原创 能邀请你来看烟花吗
先看效果flag 不倒的 flag 终于没倒!这个我是在一个现成的网站的基础上优化而成的。那个三百多行代码没有一个注释,还有很多逻辑十分奇怪,看得我好辛苦。但还是非常感谢它,我的很多参数是基于这个网站设定的,如果让我自己猜还不知道要多久。这个玩意的 3D 效果是完全通过手写写出来的,就是每个粒子都有三维坐标,绘制的时候再投影到某个平面上。应该还有更高级的工具来制作 3D 效果。HTML 部分网页的结构非常简单,只需要布置一个 <canvas> 元素,其余的操作都在 JS 里面实现:&
2021-02-09 21:30:00
349
2
原创 JavaScript对象
这也是一个目录JavaScript对象标准对象DateRegExpJSON面向对象创建对象原型继承class继承JavaScript对象JS 中 __proto__ 和 prototype 存在的意义是什么?JS 的 new 到底是干什么的?标准对象Date从本地读取时间。尤其注意月份范围是 0~11。var now = new Date();now; // Wed Jun 24 2015 19:49:22 GMT+0800 (CST)now.getFullYear(); // 2015
2021-01-21 11:35:01
264
2
原创 JavaScript基本操作
这是一个目录JavaScript基本操作最基本的基本操作变量作用域方法理解this关键字Function.apply()装饰器高阶函数Array.map()Array.reduce()Array.filter()Array.sort()etc闭包箭头函数生成器JavaScript基本操作先立一个flag,如果不留校集训的话过年之前把那个三百多行的代码读透了。最基本的基本操作var name = zrd;console.log(`Hello, ${name}!这是多行字符串`)//数组操作
2021-01-21 10:57:03
714
2
原创 用opencv把小照片合成大照片
这效果实在是不知道该怎么描述…放一张著名的海报(楚门的世界),大概就这意思。放大看细节:正好大计课上提到了 opencv,顺便搞一下。假设,我们已经通过一顿操作获得了相同尺寸的背景图(bg)和前景图(fg),那么一个自然的想法就是把图片加权合并起来,也就是:,其中 alpha,beta 分别代表权重,gamma 代表合成图片的偏移量(也就是明暗)。# 合并图片cv2.addWeighted(fg, alpha, bg, beta, gamma)# alpha,beta 分别代表权重,gam
2021-01-09 15:29:43
1356
原创 杂七杂八
是时候新开一篇文章了,记一些奇怪的东西。这是一个目录vscode常用快捷键html相关vscode常用快捷键快捷键作用选择当前行Ctrl + L移动选中行Alt + ↑/↓\uparrow/\downarrow↑/↓向上或向下复制一行Shift + Alt + ↑\uparrow↑ 或 Shift + Alt + ↓\downarrow↓在当前行下方插入一行Ctrl + Enter在当前行上方插入一行Ctrl + Shift + Enter
2021-01-09 13:39:19
435
3
原创 2020ICPC济南站复盘及近期打算
济南站写在前面拿了第一块银牌。完全划水的一场比赛。。。虽说是打星,但还是很不舒服。过了五题,我贡献了差不多是最简单的三个题,其中最水的签到题还有一次罚时。实时证明半个月不写竞赛代码水平还是下降太厉害了啊。。。复盘开题顺序:M-G-C-D-J-L-A最后 L 和 A 双双萎,很大部分是我的责任。MGCD基本上都是签到题,没啥好说的。写完以后只用了大概四十五分钟,排在前二十的位置。然后噩梦就开始了。J 是个构造题,我不大擅长,就交给 wjy 了。他想了好一阵子,1A 了。这期间我看了 L,发现
2020-12-27 21:22:02
1163
2
原创 还算不错的五子棋伪AI
所以我为什么要用 python 写这个鬼玩意,导致现在搜三层有余搜四层搜不出来的尴尬境地。核心就是简单的 min-max 搜索。那么每次我们需要评估每次落子后局面的价值。对于五子棋来说,这个价值和有多少活二、活三之类棋型的数量有关,对于一个局部的某一方向上的棋型,我大概分成了十种情况,用 `number, potential, sides` 三个参数来进行描述,分别表示极大相连棋子数,是否有连成五子的潜力,以及自由端(没被地方堵死或者碰到边界)的数量。对于不同的三元组,给予不同的价值,那么整个局面的价值
2020-12-27 18:43:59
1701
原创 2020ICPC上海站复盘及近期打算
上海站吐槽必须吐槽六百八十多个队的比赛太难打了,金牌还是只有35个。幸好最后还是凭着封榜过两题拿到了25名(可能前面还有打星?)。8题还好没被榜首虐的太惨。赛后我才知道那两盒核桃是上海大学寄过来的…我还以为是队友拿过来的没好意思吃。复盘开题顺序:G-B-M-D-C-H-I-L没有特别难写的题,基本上过题顺序就是开题的顺序。G 是签到题。B 稍微有些思维含量。但只要发现取反后数字之和不变,就很容易做了。赛后想到如果把数字之和看做“雷-非雷”边的数量,这个性质就十分显然了。最重要的是A棋盘肯定
2020-12-17 12:33:55
630
原创 利用python爬虫下载小说
回想当初自学Python很大一部分原因是想要自己爬数据,今天终于学会了怎么下载小说。于是搞了一波《球状闪电》。需要用到两个库:requests 和 BeautifulSoup,用 pip 安装即可。主要的步骤是:利用 requests.get(url) 获取网页信息。注意如果中文出现乱码,就加上 edcoding = '*',其中星号代表 html 解码方式,通常在 head 里面的 charset 可以找到。通过审查元素找到想要抓取内容的路径(右击正文部分打开检查即可)利用 find_all(
2020-10-20 23:45:38
1059
1
原创 第一次简单实现神经网络
好久不见!推荐知乎上的三篇回答:一 二 三关于反向传播:https://my.oschina.net/90888/blog/1584009搞了一下午终于搞懂了神经网络的基本基本基本原理。上面说的 45 分钟搞懂真的是太搞了。于是临摹了某位大神的代码(一模一样)并做了些解释。这个两层的网络主要任务是根据读入的身高体重来判断男女。我们都知道,神经网络的每个节点的输出是前一层的每个节点的输出的加权和,加上某个偏置,再经过激活函数得到的。经过激活函数的目的是使运算变得不再线性,否则无论多少层的神经网络都可以
2020-10-15 10:16:04
737
1
原创 二项式反演与斯特林反演
二项式反演如果 f[m]=∑i=mn(ni)g[i]f[m]=\sum_{i=m}^n{n\choose i}g[i]f[m]=∑i=mn(in)g[i]根据二项式反演:g[i]=∑k=in(−1)k−i(ki)f[k]g[i]=\sum_{k=i}^n(-1)^{k-i}{k\choose i}f[k]g[i]=k=i∑n(−1)k−i(ik)f[k]好像是二项式反演的另一种...
2020-03-16 13:44:37
2489
1
原创 圆方树
神奇的建树方法。对每个点双新建一个方点,把这个点双里原来的边去掉,并把每个点连向这个方点。这样原图就是一棵树,而且这棵树有一些优美的性质: 1.原图的割点就是圆方树中度数大于 111 的圆点。 2.树上任意一条路径上圆点方点间隔分布。 3.如果圆点的 sizesizesize 为 111 ,那么一个圆点子树的 sizesizesize 和就是它“下面”的所有点的数量(用心灵去感受)。...
2019-05-14 20:51:57
2514
原创 [BJOI2019]勘破神机
前置技能——求解递推式的通项公式以二阶递推式 fn=afn−1+bfn−2f_n=af_{n-1}+bf_{n-2}fn=afn−1+bfn−2 为例,做法如下(不会证明):解出特征方程 x2=ax+bx^2=ax+bx2=ax+b 的两个根 x1,x2x_1,x_2x1,x2。设 fn=k1x1n+k2x2nf_n=k_1x_1^n+k_2x_2^nfn=k1x1n+k...
2019-05-14 20:51:01
743
原创 杂题
1CF446D题意:给定 500 个点的图,上面有不多于 100 个标记点,其中 n 一定是标记点。求从 1 号点出发,随机游走到的第 K 个点恰好是 n 的概率。随机游走定义为每次在一个点等概率选择一条边走出去。K≤109K\leq 10^9K≤109如果我们求出 pi,jp_{i,j}pi,j 表示从 i 出发第一个到达的关键点是 j 的概率,其中 i,j 都是关键点。那我们就可以矩乘...
2019-05-14 20:50:51
438
原创 两种特殊的矩阵(杨氏矩阵及其应用)
性质1.杨氏矩阵是这样的二维数组,满足 ai,j≤ai+1,j,ai,j≤ai,j+1a_{i,j}\leq a_{i+1,j},a_{i,j}\leq a_{i,j+1}ai,j≤ai+1,j,ai,j≤ai,j+1。以 a1,1a_{1,1}a1,1 为根的话,杨表满足堆的性质。以 a1,ma_{1,m}a1,m 为根,满足平衡树的性质。2.按照正常方式一个一个把元素插入杨表中...
2019-05-14 20:50:38
2044
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人