自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 2021 美团MTCTF babyrop

Canary机制的绕过+栈迁移漏洞分析拿到题目检查保护和链接的动态库(题目给的是libc-2.27.so,分析本地的/lib/x86_64-linux-gnu/libc.so.6就行)这题的重点在于Canary保护┌──(root????e267254b2ec9)-[/home/babyrop]└─# checksec babyrop[*] '/home/babyrop/babyrop' Arch: amd64-64-little RELRO: Full RELRO

2021-12-16 17:54:09 801

原创 ret2syscall

漏洞分析题目ret2syscall查看保护,开启了NX保护,不能ret2shellcode┌──(root????e267254b2ec9)-[/home/ret2sys]└─# checksec rop [*] '/home/ret2sys/rop' Arch: i386-32-little RELRO: Partial RELRO Stack: No canary found NX: NX enabled PIE:

2021-12-15 15:22:32 2099

原创 sniperoj-pwn100-shellcode-x86-64

分析题目下载查看保护,ret2shellcode类型的题是没有NX保护的┌──(root????e267254b2ec9)-[/home/pwn]└─# checksec shellcode [*] '/home/pwn/shellcode' Arch: amd64-64-little RELRO: Partial RELRO Stack: No canary found NX: NX disabled PIE: P

2021-12-15 15:20:23 2820

原创 求1到n连续的数的”异或和“

题目:异或求和打表会发现只有四种情况代码:#include <iostream>using namespace std;typedef long long ll;int main(void) { ios::sync_with_stdio(false); ll T; cin >> T; while(T--) { ll n, ans = 0...

2019-12-18 22:26:56 938

原创 数论(中国余数定理)+小学讲过的数位和能被3整除的必能被3整除

题目:codeforces1266A题意:给你一个长度最多到100位的数,可以改变顺序,判断是否能够组合成一个能被60整除的数思路:用字符串输入,需要满足1、至少包含一个0 2、至少包含两个偶数位(因为说白了就是以00,20,40,60,80结尾),0也算 3、数位和必须要能够整除3(队友说这是小学老师讲的,我怀疑我没有读过小学,证明略,哪天知道了再更新)代码:#inc...

2019-12-18 22:22:50 526

原创 数论(看到10e9考虑开根号玩)

题目:codeforces1263C题意:给一个数n,要求n以内(包括0和n)每个数除n的向下取整值得集合,比如0=⌊5/7⌋0=⌊5/7⌋,1=⌊5/5⌋1=⌊5/5⌋,2=⌊5/2⌋2=⌊5/2⌋,5=⌊5/1⌋5=⌊5/1⌋.则输出0 1 2 5思路:令m =n开方,然后把0到m以内的数全部存进ans,再把1到m的数逐个被n除以,存入ans,排序去重即是答案证明:...

2019-12-18 12:36:17 337

原创 codeforces1263A(数学推理)

题意:给你一堆糖,糖有三种颜色,要求每两个不同的颜色可以构成一对,问可以最多组合成多少对?思路:首先对三个数排序,从小到大:a<b<c, 那么分两种情况讨论,第一种情况:a+b>=c时,则最多当然是a+b对,第二种情况a+b<c, 首先贪心的把a+b变成与c相等,需要耗费(a+b-c)个,也就是可以组合(a+b-c)个这个时候我就担心a可能分不够,这个时候因为a-(a+...

2019-12-17 20:34:20 309

原创 建立搜索二叉树BST(HDU---3999)

主要是创建的时候要为空节点动态分配再赋值,不然没有儿子,必须得有儿子,哪怕为空,不然不是叶子节点,不然输出遍历的时候会错!(传头结点参数的时候传它的地址,因为这样方便改变)#include <bits/stdc++.h>using namespace std;typedef struct tree { tree* left; tree* right; ...

2019-12-17 19:48:31 160

原创 已知先序中序建立树,并且输出后序遍历

题目:HDU---1710思路:有了先序就很好办,那么我们从先序开始依次找其在中序中对应的位置,再看其两边是否在范围内,可能两边都有左右子树,也可能有一个甚至都没有,比如先序序列是1 2 4 7 3 5 8 9 6, 中序遍历是4 7 2 1 8 5 9 3 6, 开始的时候选取左右两个端点,[1,9],则过程是先从先序的位置1开始,找中序中1的位置对应index4,此时1的位置左边...

2019-12-17 17:00:57 192

原创 构造+模拟codeforces1262C

codeforces1262C思路:构造一个正确的目标字符串,遍历当前字符串,如果当前同一index的字符与目标字符串的字符不同,则把子字符串后面的字符都反转代码:#include <iostream>#include <algorithm>#include <string>#include <vector>using namespa...

2019-12-05 22:17:45 177

原创 构造+模拟

codeforces1255C思路记录每个数在所有三元组出现的次数、和每个数连了哪些数(和哪些数在一个三元组里),其中出现次数为1的肯定是序列的头或尾,因为序列可以反转(得到同样的三元组),所以随便选一个出现次数为1的数当头,然后这个数连的点中出现次数为2的就是第二个数。后面的数可以通过判断前面两个数连的数是否有相同,如果有,那么这个数就是第三个数,以此类推。代码:#include &lt...

2019-11-30 11:05:43 181

codeforces1256D

codeforces1256D#include <iostream>using namespace std;typedef long long ll;void hasten(void) { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);}int main(void) { hasten(); int...

2019-11-11 09:42:23 240 1

原创 C语言实现带括号的计算器

中缀表达式转后缀表达式的应用我的算法以及思路:首先将输入的东西作为字符串存入到一个字符串数组,然后将中缀表达式转化为后缀表达式(其中关键在于运算符的转化,比较栈顶元素和当前运算符的优先级,如果栈顶元素的优先级大,则压入栈中,否则把栈里的运算符弹出直到为空,并且加入到后缀表达式的字符串中,再压栈,最后将后缀表达式转化为计算结果样例:#include <stdio.h>#inc...

2019-11-11 08:03:18 5370 3

原创 codeforces1238A(素数)

题目:codeforces1238A此题的思路很巧妙,因为所有的正数都可以看成是由1和所有的素数的倍数组成,所以大于1的数一定可以整除一个正整数(如果是素数就包括它自己,非素数肯定能整除某一个素数),那么只要考虑a-b即可,a-b等于1那么它的因子只能是1,大于1则它一定可以整除某一个正整数#include <iostream>using namespace std;type...

2019-10-11 12:13:44 234 1

原创 整数集合上的二分法

int lower_bound(int number, int left, int right) { //寻找比number大的最小的一个数 int l = left, r = right; while(l < r) { int mid = (l+r)>>1; //mid能取到l,但取不到r if (arr[mid] >= number) r = mid; ...

2019-09-12 14:16:42 166

原创 dfs处理环染色-codeforces1217D

codeforces1217D思路:用邻接表存储整个图G,然后对每个点进行dfs,用一个vis数组标记走没走过,没走过的为0,那么遇到了就直接染成颜色1,祖先点的邻接点走完,就让祖先点的vis标记为2,为了下次其他点dfs到它就可以判断不会行成环,继续染成颜色1了,如果dfs的过程中,中途走回来遇到了祖先点,(即dis[to] == 1)那么肯定要将此时的颜色染成2#includ...

2019-09-09 10:24:52 286

原创 把二维数组当一维数组~codeforces1194B

题目:codeforces1194B#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int maxn = 4e5 + 10;const int INF = 1<<29;char s[maxn]; //因为二维数组...

2019-08-30 11:10:15 550

原创 codeforces 1206C

codeforces1206C题意:给你一个数n(n代表将要连续的个数) 求从1 ~ 2*n 中对于每个连续数两者之差都是小于等于1,如果不存在这样的循环圈就输出NO,否则输出YES并打印出满足条件的循环圈数字思路:循环n次,从第1到第n位置的数赋值,同时也给第n+1到第2n位置的数赋值,先给谁赋值就看此时循环是第几次,这次是奇数还是偶数(找了半天规律)#include <io...

2019-08-29 16:26:24 194

原创 快速乘之a*b%mod的两种方法

#include <iostream>using namespace std;typedef long long ll;ll mul1(ll a, ll b, ll mod) { //法一快速幂的思想 ll ans = 0; while(b) { if (b&1) { ans = (ans + a) % mod; } a = a * 2 % ...

2019-08-10 12:02:53 814

原创 位运算应用---快速幂模板

#include <bits/stdc++.h>using namespace std;typedef long long ll;int power (int a, int b, int mod) { //calculate(a^b)模板 int ans = 1 % mod; for (; b; b >>= 1) { //b每次都除以2,快速幂分治的思想...

2019-08-10 00:06:16 214

原创 KMP---HDU1686

HDU1686求s1在s2中出现了多少次#include <bits/stdc++.h>using namespace std;char s1[10010], s2[1000100];int nxt[10010];void get_next(int len) { //求next数组 nxt[0] = -1; //习惯把第一个字符的next值设...

2019-08-04 13:51:45 142

原创 Prim+邻接表+优先队列优化---POJ1287

POJ1287#include <cstdio>#include <queue>#include <cstring>#include <vector>using namespace std;struct Node { int to, cost; Node(){}; Node(int a, int b) { ...

2019-08-04 10:51:01 208

原创 Kruskal-POJ2421(https://vjudge.net/problem/POJ-2421)

poj2421这题我用了Kruskal算法,算法思想:将目前的结点孤立成每个独立的集合,对边进行贪心算法,不断合并小边,化离散为统一,最后统一完所有结点后就是最小生成树了!具体方法:1、将所有的边存入到一个vector中,然后进行升序排序 2、选择当前最短的边,那么相应这条边所连接的两个节点的父亲就统一为编号小的结点的父亲(寻找父亲和合并父亲用到了并查集) 3、用一个m记录当前自由结点的...

2019-08-04 01:31:32 178

原创 HDU-1237中缀转后缀(不带括号)

抓住核心要点:遇到优先级比自己大的运算符就停止弹栈,否则小于等于的运算符都要一直弹,知道栈为空再把当前的运算符push进去#include <iostream>#include <cstdio>#include <stack>#include <cstring>using namespace std;int main(void)...

2019-07-27 11:36:51 143

原创 Dijkstra-POJ2387邻接表和优先队列的优化

#include <iostream>#include <cstdio>#include <queue>#include <algorithm>#include <cstring>#include <cstdlib>#include <cstring>#include <map>#inc...

2019-07-27 10:48:53 160

原创 Rabin Karp算法(简易版的KMP算法)

#include <bits/stdc++.h>using namespace std;const int mod = 100000;int quick_power(int a, int x){ if (x == 0) return 1; if (x == 1) return a; int k = quick_power(a,x/2)%mod; ...

2019-05-27 20:27:04 306

原创 插入排序---重写了一遍,还是有些小问题,以后不会犯了!

#include <cstdio>using namespace std;void insertion_sort(int* a, int n){ for (int i = 1; i < n; i++) { int top = i-1; int k = a[i]; //只需注意这里要赋值数组的元素值而不是角标,否则循环后...

2019-05-15 08:07:31 157

原创 快速排序

#include <bits/stdc++.h>using namespace std;int a[1000];void quick_sort(int s, int e) //s表示开头下标,e表示结尾下标{ if (s < e) { int i = s, j = e; //i从左往右,j从右往左 while(...

2019-04-29 18:43:58 129

原创 带分治思想的归并排序

#include <bits/stdc++.h>using namespace std;int a[1000];int t[1000];void merge_sort(int x, int y){ if (y - x > 1) //当if不成立时即是递归的出口 { int mid = x + (y-x)/2; in...

2019-04-28 21:41:55 203

原创 最小字符串周期

#include &lt;bits/stdc++.h&gt;using namespace std;int main(void){ char s1[100]; scanf("%s",s1); int len, flag, i, j; //flag用来标记是否已经找到最小周期 len = strlen(s1); for (i = 1; i &l...

2019-01-02 08:54:59 394

原创 约瑟夫环问题——紫书的救济金发放题解

#include &lt;bits/stdc++.h&gt;using namespace std;const int maxn = 25;int n, k, m, a[maxn];int go(int p, int e, int t) //p是位置,e是方向,t是步长{ while(t--) { do { ...

2019-01-01 21:52:04 170

原创 欧几里德算法

首先我们要理解好辗转相除法亦所谓的‘欧几里德算法’两个整数的最大公约数是能够同时整除它们的最大的正整数。辗转相除法基于如下原理:两个整数的最大公约数等于其中较小的数和两数的差的最大公约数。例如,252和105的最大公约数是21;因为 252 − 105 = 21 × (12 − 5) = 147 ,所以147和105的最大公约数也是21。在这个过程中,较大的数缩小了,所以继续进行同样的计算可以不...

2018-12-03 21:31:22 187

原创 计算世界末日的汉诺塔(当n为64吧好像就是世界末日了)

#include&amp;lt;cstdio&amp;gt;#include&amp;lt;cstdlib&amp;gt;#include &amp;lt;iostream&amp;gt;using namespace std;void hannoi(int n, char a, char b, char c){ if (n == 0) return; hannoi(n-1, a,c,b); //将n个圈圈头上的n-1...

2018-12-03 21:14:05 1351

原创 埃拉托斯特尼筛法

#include &lt;iostream&gt;#include &lt;cstdio&gt;#include &lt;cstring&gt;#include &lt;cmath&gt;using namespace std;bool prime[1000000];void Is_primes(int n){ prime[0] = false; prime[1] =...

2018-12-03 20:48:03 210

原创 插入排序

#include &lt;iostream&gt;using namespace std;int main(){ int a[5] = {5,6,2,7,1}; int preIndex,current; for (int i = 1; i &lt; 5; i++) { preIndex = i - 1; //相对于current前一个元素...

2018-11-10 11:43:26 106

原创 选择排序

#include &lt;iostream&gt;#include &lt;string.h&gt;#include &lt;cstdio&gt;using namespace std;int main(){ int a[5] = {5,1,3,6,9}; int minIndex,j,s; minIndex = 0; int len = 5; f...

2018-11-10 10:18:11 117

原创 杭电oj母牛的故事

这是一道杭电oj2018的题目,第一次做这种类型的题目,被吓着了,但最后在提示下还是做出来了,哈哈,其实规律很简单,当年数大于四时,其第n年的牛数就是前一年的数目加上前三年的牛的数目,因为前三年的牛都能够生下一头牛了#include &lt;iostream&gt;using namespace std;int main(void){ int a[250]; for (...

2018-11-10 09:08:19 399

原创 小算法小技巧总结

变量交换(罕见):a = a + b;b = a - b;a = a - b;此时a、b就互换了也可以用指针交换二者变量的地址从而实现输出时数据交换

2018-11-05 14:44:14 162

原创 如何用C语言进行蛇形数组填空

#include &amp;amp;amp;lt;stdio.h&amp;amp;amp;gt;#include &amp;amp;amp;lt;stdlib.h&amp;amp;amp;gt;#include &amp;amp;amp;lt;string.h&amp;amp;amp;gt;int main(void){int a[20][20];int n,i = 0;memset(a,0,sizeof(a)); //通过memset函数实现

2018-11-05 14:34:45 416

空空如也

空空如也

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

TA关注的人

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