自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【Shuffle】

先查壳,发现是 32 位 Ubuntu 程序。再Linux环境下运行发现输出一串乱码,根据题目提示要还原到被乱码之前的效果。在IDA环境下静态分析:发现有strcpy中的flag。

2022-01-10 10:14:59 259

原创 UPX脱壳

什么是加壳加壳是一种程序的保护机制,它可以保护我们的程序不那么容易的被逆向出来。不能直接用IDA分析出来。其原理为经过一段加壳程序得到一个新的程序,我们原来的程序就在新的程序中的一部分,生成的新程序中也会多一段代码,多的一部分就是解密代码。加壳一般分为两类,一种是加密加壳,其目的就是为了防止逆向而存在的一种壳。另外一种就是压缩壳,将很大的,有很多重复数据的程序压缩成很小的程序,在运行的过程当中动态解压。其中UPX就是一种压缩壳。UPX脱壳加壳可执行文件 UPX sample.exe脱壳执行文件

2021-11-28 16:46:25 1595

原创 汇编语言学习记录

基础知识篇2021.11.6汇编语言与机器语言一一对应。汇编语言由一下3类组成:1、汇编指令(机器码的助记符)2、伪指令(由编译器执行)3、其他符号(由编译器识别)存储器CPU是计算机的核心部件,他控制整个计算机的运作,要想让一个CPU运作,就必须向他提供指令和数据。指令和数据在存储器中存放,也就是平时所说的内存。磁盘不同于内存,磁盘上的数据或程序如果不读到内存中,就无法被CPU使用。指令和数据指令和数据是应用上的概念二进制信息1000100111011000—>1000

2021-11-06 12:13:13 194

原创 攻防世界WP[no-strings-attached]

攻防世界WP[no-strings-attached]一二三四五第一次写WP,做了一道感觉对自己来说有提升的一道题:一首先将下发的文件查壳,发现是32位的程序,于是用32位的IDA打开找到main函数,按F5查看伪代码:int __cdecl main(int argc, const char **argv, const char **envp){ setlocale(6, &locale); banner(); prompt_authentication(); auth

2021-11-02 14:40:38 622

原创 【模板】主席树模板

#include<bits/stdc++.h>using namespace std ;const int maxn = 2e5+7 ;int n,m ;int a[maxn],b[maxn],rt[maxn<<5],ndnum ;int lson[maxn<<5],rson[maxn<<5],sum[maxn<<5] ;...

2019-10-24 20:01:13 163

原创 【题解】星空【状压DP】

这道题思维难度非常高,有很多处理的小技巧,并且代码也有很多细节 ;第一步这道题是一种序列的区间操作,我们都知道,区间操作比较麻烦,所以我们要想办法将区间操作转换成单点修改;这时,我们想到了差分,假如我们对一个序列进行操作,这时一个序列里的相对状态不会变只有两端改变,换句话说就是这个序列的差分并不会发生改变,只有两端的差分数组会发生变化。但这里的差分并不是差而是异或;对一个区间[l,r]进...

2019-10-22 16:59:30 207

原创 DP总结

总结Dp专题也复习结束了,下面简单的总结一下DP的知识。1. 线性DP注意dp的三个条件 子问题重叠性 最优子结构 无后效性;做题时要抽象出题目的关键点作为状态,并选择覆盖整个状态空间的最小维度集合;关键在于设计出状态,状态设计对了,方程就比较好想。而设计状态又要依靠经验,大量的刷题量来积累出来的。2.背包首先掌握01背包,完全背包,多重背包,分组背包的模型在传统的线性DP基础上...

2019-10-14 19:22:42 283

原创 图论总结

图论总结这几天我们将图论复习完了,现在系统的总结一下图论相关知识。我觉得图论就是分为算法应用和建图技巧。1. 最短路:最短路分为单源最短路和任意两点最短路单源最短路:单源最短路大致有两种算法:Dijkstra:这是在最短路中经常使用的算法,原本的复杂度是n方的,可以用堆优化将其优化到稳定的mlogn,不会被卡。(其实这个算法的时间复杂度为(m+n)logn)只不过省略了n,但有时后数...

2019-10-11 20:03:49 545

原创 【SNOI2017】炸弹(线段树优化建边+Tarjan缩点+拓扑排序)

这道题如果强行爆搜的话时间复杂度应该是N^2的,所以我们要考虑怎么优化。线段树优化这就是这道题的主要方法:给一个区间连边而不是区间里的每一个点,这样的话时间复杂度就会降成log的复杂度,变成了nlogn,这个复杂度在我们可接受范围之内。具体的来讲就是已n+1为线段树的根的编号,开始建立新的节点,如果搜到了叶子节点,它的编号就变成了自己原来的编号,每当要向区间连边时,就从这个区间上的点连接包含...

2019-10-05 18:40:43 186

原创 【题解】【luogu2939】分层图最短路

分层图分层图是针对于对图的边权有强制性修改的一类问题(修改次数较少);它的思想其实就是拆点。以上面这道题为例:将k条边的权值变为0;将原图建为k层每一个层内之间的边权不变,跨层的边权设为0;这样就实现了分层图;再在分层图上跑一边最短路就可以了;代码如下:#include<bits/stdc++.h>using namespace std;const int ...

2019-10-01 11:04:55 293 1

原创 【一本通提高篇】【题解】皇宫看守(树形DP总结)

思路:做过最大独立集,最小点覆盖,最小支配集,树上背包,普通树形DP,这就是树形DP的主要方式。最小支配集是选择最少的点去覆盖所有的点,每个选择的点可以覆盖相连的点和它本身。首先,最小支配集的状态设置就有难度,不只是用子节点跟新父亲节点,父亲的状态也会影响答案。那么我们这样定义状态:有三种状态:1.选父亲节点,不选本节点。2.选子节点,不选本节点。3.选本节点。那么:dp[x]...

2019-09-20 17:15:42 655

原创 【题解】【BZOJ1832】聚会(LCA)

DescriptionY岛风景美丽宜人,气候温和,物产丰富。Y岛上有N个城市,有N-1条城市间的道路连接着它们。每一条道路都连接某两个城市。幸运的是,小可可通过这些道路可以走遍Y岛的所有城市。神奇的是,乘车经过每条道路所需要的费用都是一样的。小可可,小卡卡和小YY经常想聚会,每次聚会,他们都会选择一个城市,使得3个人到达这个城市的总费用最小。 由于他们计划中还会有很多次聚会,每次都选择一个地点是...

2019-09-11 19:52:02 1067

原创 【题解】【POJ3417】暗的连锁【LCA+树上差分】

题目描述原题来自:POJ 3417Dark 是一张无向图,图中有n个节点和两类边,一类边被称为主要边,而另一类被称为附加边。Dark 有 条主要边,并且 Dark 的任意两个节点之间都存在一条只由主要边构成的路径。另外,Dark 还有m条附加边。你的任务是把 Dark 斩为不连通的两部分。一开始 Dark 的附加边都处于无敌状态,你只能选择一条主要边切断。一旦你切断了一条主要边,Dark 就...

2019-09-10 16:57:34 991

原创 【题解】【Luogu1703最优贸易】最短路

我们在做这道题时正反图要同时建立,然后从起点出发,跑一遍DJ处理出权值最小的点F[x],再反着跑一遍处理出权值最大的点,D[x]。再枚举每个点,用D[x]-F[x]跟新答案即可。#include<bits/stdc++.h>#define maxn 510000using namespace std;priority_queue< pair < int , ...

2019-09-06 21:45:59 187

原创 【题解】【BZOJ2957楼房重建】(线段树)

Description小A的楼房外有一大片施工工地,工地上有N栋待建的楼房。每天,这片工地上的房子拆了又建、建了又拆。他经常无聊地看着窗外发呆,数自己能够看到多少栋房子。  为了简化问题,我们考虑这些事件发生在一个二维平面上。小A在平面上(0,0)点的位置,第i栋楼房可以用一条连接(i,0)和(i,Hi)的线段表示,其中Hi为第i栋楼房的高度。如果这栋楼房上任何一个高度大于0的点与(0,0)的...

2019-08-30 20:43:00 216

原创 【机房训练赛】Mine(DP)

然而这道题其实是DP。一直递推下去就好了:那么我们现在来定义状态:这里的DP与往常的不一样,我们要用i推到i+1;用dp[i]表示我们前i个字符中的填问号的方案数:只有这一维状态是显然不够的,因为前几个格子的状态会影响到这一格的,为了方便DP我们设置了如下的二维状态:dp[i][0]:表示第i个格子和第i-1个格子都不填雷:dp[i][1]:表示第i个格子不填雷,而第i-1个格子要填...

2019-08-30 19:27:07 160

原创 【机房模拟赛】Clique(贪心)

这道题非常非常的灵活,非常考察我们的变通能力,在考试时遇到这道题,我尝试了许多办法,数据结构,建图,·····都失败了、其实我开始就想到了贪心,但我不知道怎么sort,权值相加,但是距离又是相减,···就觉得贪不了。还好最后反应过来了。那么就说一下思路吧:其实这道题就是最简单的线段覆盖问题,将每个点的位置加减它的权值就可以得到很多条在数轴上的线段。只是,我们只需要尽可能多的两两互不相交的线...

2019-08-29 17:31:54 233

原创 【机房模拟赛】cut(整数分块)

这道题的数据范围其实已经是很大的提示了;读懂题后,简单的推一下,就能得到一个不等式:这个不等式吧里面的求和可以直接暴力累加,因为n只有100。那么最重要的是如何快速枚举n呢??这里就要用到数论分块的知识了:给一个定值x,和一个变量a(1<a<x)那么x除以a向下取整所得的取值最多只有二倍的根号x种取值;现在,有了这个理论的支撑,我们就能很轻松的做出这道题了:k+sum进...

2019-08-25 15:21:24 221

原创 【机房模拟赛】Party

其实这道题是个水题,我当初看一眼就想出了正解,:记录每个点的度数,若果小于题目要求的度数d,则删去这个点以及这个点连的边。继续,知道图中的点全部符合要求为止,最后在遍历整个剩下的图,从中找一个最大连通块即可。代码如下:#include<bits/stdc++.h>using namespace std;const int maxn = 200100;int n,m,d;...

2019-08-23 20:39:27 154

原创 【机房模拟赛】History(并查集技能包扩展)

哎不多说了,本身这道题的题意就很复杂,简单来说,就是询问并查集的历史版本,在考试时我一眼就看出来是先离线再可持久化并查集,但是因为本蒟蒻太菜不会可持久化并查集。于是就自我放弃了。看完yyr巨佬的题解后,有什么LCT,可持久化并查集。。。。都太难了。这是机房远古神犇ltw教会了我一种类可持久化并查集的方法,按秩合并加时间记录。按秩合并我倒是知道,但从来没有写过,但用这种方法写这道题是真的简单:...

2019-08-23 15:38:10 156

原创 【机房练习赛】Dinner

本来看到这道题的第一想法是环形区间DP的,但是模拟完样例我就恍然大悟,在10的时间内可以同时让1,5点完餐,那不就是找最大值得最小值吗?然后就是二分答案了,二分最少时间。然后就是我的玄学check 我在考试的时候是想到了变成二倍链在区间上处理的,但我直接O(n)处理了每个区间的和不大于x的块,然后枚举二倍链上长度为n的序列看着两个点之间的块数有多少个,如果小于等于m就返回true; 然而...

2019-08-22 21:17:43 230

原创 【机房练习赛】Count(树上妙用)

当时考试的时候我看到这道题都蒙了,完全没有思路。还是机房里的各路大佬把我讲懂了。首先做这道题之前需要先证明一件事情:若分的块大小确定,若可以分,那么有且只有一种。那么对于上面这颗树的一部分如图,若以下分法是合法的:那么其他分支也是合法的;这时如果像下图一样分,就会出现一种情况:显然n与n+1是互质的,原来n%4==0而现在不成立了。所以得证。那么开始继续深入吧:要分成几个相同...

2019-08-22 17:38:16 146

原创 题解【luoguP1083】借教室——差分妙用

其实一开始我是想到用线段树处理的,但仔细一想发现不好处理,所以另寻它路,突然想到了二分的方法,再运用差分优化统计,就过了;代码如下:#include<bits/stdc++.h>using namespace std;const int N=1000010;int n,m;int num[N];int s[N],t[N],d[N];int now[N];boo...

2019-08-17 20:35:36 150

原创 题解【BZOJ1003】物流运输

这道题的考察很全面,考到了最短路和DP的结合,非常灵活,是一道很好的题;具体思路就是提前预处理出第i天到第j天都能走的最短路;然后进行DP就可以了,用dp【i】表示前i天运输所需的最少费用;代码如下:#include<bits/stdc++.h> using namespace std;struct data{int next,to,w;}e[801];int n...

2019-08-13 19:00:26 157

原创 树链剖分模板

树剖大法好!!!!!!#include<bits/stdc++.h>#define maxn 500005using namespace std;struct edge{ int pre,to;}e[maxn*2];int n,m,root,mod,a[maxn],b[maxn],head[maxn],cnt=0,fa[maxn],dep[maxn],son[max...

2019-08-05 18:45:17 146

原创 浅谈0/1分数规划

题面见POJ2676这就是一道0/1分数规划的模板题,其最经典的做法就是二分答案,然后check一下就可以了。PS:注意double类型精度问题。那么直接看代码吧:#include<bits/stdc++.h>#define maxn 1111#define INF 0x7fffffff#define eps 1e-15#define pi acos(-1.0)#d...

2019-07-31 19:18:00 160

原创 最小生成树与建边技巧(一本通提高篇#新的开始)

直接看题面吧:发展采矿业当然首先得有矿井,小 FF 花了上次探险获得的千分之一的财富请人在岛上挖了n口矿井,但他似乎忘记考虑的矿井供电问题……为了保证电力的供应,小 FF 想到了两种办法:1.在这一口矿井上建立一个发电站,费用为wi (发电站的输出功率可以供给任意多个矿井)。2.将这口矿井与另外的已经有电力供应的矿井之间建立电网,费用为ei 。小 FF 希望身为「NewBe_One」计划...

2019-07-28 11:31:36 333

原创 最短路及其延伸

最短图想必最短路大家都很熟悉,那么我们就先对最短路两个重要的算法总结一下;PrimPrim其实就是以DP为基础的最短路算法,通过两个节点的中介转折点来更新两点之间的最短路。从而解决任意两点的最短路,时间复杂度是O(n^3);具体实现过程如下:mp[Maxn][Maxn];//两点之间的最短路 for(int k=1;k<=n;++k)//k枚举状态所以必须在外层循环 for(...

2019-07-13 09:30:59 201

原创 Splay详讲

编者注:(为了更好的理解Splay,需要读者对Treap有一定的了解)那么话不多说,我们直接进入正题吧:什么是Splay伸展树(Splay Tree),也叫分裂树,是一种二叉排序树,它能在O(log n)内完成插入、查找和删除操作。学过Treap的人或许会问那么Treap和Splay到底有什么区别呢?其实很简单,相比于Treap,Splay能够更好的处理区间的问题,虽然Treap好像也可...

2019-07-10 21:15:23 697

原创 并查集的再次进阶,从实际情况中分离出模型

今天我们再来谈一谈并查集的深度运用:从实际问题中分离出并查集的模型这是我们机房模拟赛的DST2:乍一看我们对这道题一脸懵逼,不过不要慌,先来分析一下这道题的要求:来看一看一个2x2的棋盘:a bc d1个棋盘如果合法,那么就满足c+b=a+d移项就会发现a-b=c-d仔细一想不就是每一列之间的差都为定值吗?同列也可以得到每一行之间的差也相等。“对于任意一列,两行之间的差相...

2019-07-10 14:41:58 193

原创 由食物链(NOI——2001)到并查集的深度理解

我们先来看一道题目:食物链(NOI2001)动物王国中有三类动物 A,B,C,这三类动物的食物链构成了有趣的环形。A 吃 B,B吃 C,C 吃 A。现有 N 个动物,以 1 - N 编号。每个动物都是 A,B,C 中的一种,但是我们并不知道它到底是哪一种。有人用两种说法对这 N 个动物所构成的食物链关系进行描述:第一种说法是“1 X Y”,表示 X 和 Y 是同类。第二种说法是“2 ...

2019-07-08 19:59:10 197

原创 线段树

关于对线段树模板的简化:在刚开始学线段树时,我们学习的是利用完全二叉树的性质来建立子节点:左儿子的节点等于父亲节点序号乘2,右儿子的节点的序号等于左儿子的节点数加1,并且选用结构体的方式来存储信息。大概就是这样一个思路。由于考虑到结构体引用慢,并且在可持久化线段树(主席树)中,已经不满足完全二叉树的性质,为了统一线段树的写法,建议大家统一使用动态开节点建树的方法。变量名的改变变化不大,列举如下...

2019-07-08 19:39:27 322

空空如也

空空如也

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

TA关注的人

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