自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 2024年3月27日 算法学习 动态规划(最大连续,最长上升,至少型背包,分组背包,方案数)贪心(排序,排序+堆)

给定K个整数的序列{ N1, N2, …, NK },其任意连续子序列可表示为{ Ni, Ni+1, …, Nj },其中 1 <= i <= j <= K。最大连续子序列是所有连续子序列中元素和最大的一个,例如给定序列{ -2, 11, -4, 13, -5, -2 },其最大连续子序列为{ 11, -4, 13 },最大和为20。现在增加一个要求,即还需要输出该子序列的第一个和最后一个元素。

2024-03-27 23:34:38 930

原创 2024年3月17日 算法学习

给你一个字符串s和一个字符串列表wordDict作为字典。如果可以利用字典中出现的一个或多个单词拼接出s则返回true。**注意:**不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。wordDict。

2024-03-27 23:31:48 822

原创 2024年3月17日 算法学习

给你一个字符串s和一个字符串列表wordDict作为字典。如果可以利用字典中出现的一个或多个单词拼接出s则返回true。**注意:**不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。wordDict。

2024-03-18 09:55:27 769

原创 2024年3月11日 算法刷题记录

大的绘图由小的模块组成,每个小的模块都可以再次拆分,直到每个小的模块只剩下单个字符,因此考虑使用递归。这样属于贪心的思路,但是无法证明这样是对的,没有办法说明最优解是两个最大值的和(就好像一个集合最大值不能分解成两个子集的最大值的和)给你一个仅包含一种字符和空格的模板,模板显示如何创建无尽的图片,将字符用作基本元素并将它们放在正确的位置以形成更大的模板,然后不断进行该操作。设有 N×N 的方格图,我们在其中的某些方格中填入正整数,而其它的方格中则放入数字0。输出一个整数,表示两条路径上取得的最大的和。

2024-03-12 08:23:47 368

原创 ABC 344

表示使用前 i 个背包,组成 T 的前 j 个字符所需要最少的组件数。一个是 find 一个是 substr。ABC用python写代码会比较快。E 题是基于哈希表的双向链表。

2024-03-10 16:28:29 819

原创 跳石板题解 动态规划 递推

不过好像问题不大,上面的是往前看,考虑到不能提前知道跳多少步,那就可以往前看,用递推的方式往后推。有一系列石板,编号1,2,3,…,小明想要从 N 号到 M 号。可以枚举因数,尝试转移:dp[i] = min(dp[i-p]+1), p ∈K 的因数。对于小易当前所在的编号为K的石板,小易单次只能往前跳K的一个约数(不含1和K)步。跳 K 的因数步(除了 1 和 K)。问最少需要跳几次,不能到达输出 -1。设 dp[i] 表示到第 i 号最少需要几步。至于找因数最简单的是枚举,复杂度是。

2024-03-08 20:46:55 389

原创 狡兔三窟问题(猎人抓兔子)

n 个连续的洞(编号1-n),兔子白天待在洞里,晚上跳到相邻的洞里。猎人白天检查,希望找到兔子。给定洞口数 n,检查天数 k 以及 k 个检查洞口编号,输出是否能抓住兔子。e.g.

2024-03-08 19:53:47 355

原创 西安电子科技大学现代密码学实验四报告

加密过程中使用了分片方法,每次加密最多8个明文字符,并对分片明文进行了512比特的填充,其中包括了64比特的标志位和32比特的通信序号。这次实验体现了理论知识与实践能力的结合,强化了我对密码学原理的理解,同时也提醒了我在设计安全系统时需要考虑的各种潜在风险。此外,实验也激发了我对于密码学更深层次问题的好奇心,比如如何设计更加安全的加密算法,以及如何评估一个加密体系的安全性。它让我更加明白,安全性是一个动态的目标,需要不断的学习和适应新的威胁,以保护信息不受未授权访问的侵害。RSA大礼包(密码挑战赛赛题三)

2023-12-29 15:37:28 690

原创 密码学实验三

由式1.7知,给定e,p,q,就可计算出相应的RSA不动点的数目。按部就班实现即可,其中求逆元用拓展欧几里得定理。第一题: 寻找满足特定条件的 e;

2023-11-27 21:28:05 528

原创 密码学实验二

原理:如下例,t 是target的第一个字节,c 是我们暴力枚举的字节,上下两个部分只有这个地方不一样,上方的加密结果是参考,下方暴力枚举 c,会得到 256 种加密结果,第一个 block 和上方加密结果一致的,就是 t。,其中 r 是随机前缀的长度,p 是 padding 的长度,k 是已知的明文的长度,1 代表了待破解字符 c,B 代表块大小。原理:当明文的大小是分组的倍数的时候,pkcs7会添加一个dummy block,其大小就是分组大小。如果X用完了,就把重现更新X 的长度(祥见参考链接)。

2023-11-13 22:47:08 86

原创 [MTC3]Cracking SHA1-Hashed Passwords

在这个场景中,我从树的根节点开始,沿着一条路径向下搜索,直到达到一个叶节点,也就是一个可能的密码组合。首先,我们知道密码是由给定字符集的字符组成的,每个字符都有两种可能的选择。这就形成了一个二叉树,其中每个节点都代表一个字符的选择,树的深度等于字符集的大小。如果找到了一个匹配的哈希值,我就立即停止搜索,并打印出对应的密码和搜索所用的时间。这样,一旦找到答案,就不需要再继续搜索了,这大大提高了代码的效率。来生成所有可能的排列,然后计算每个排列的SHA1哈希值,与给定的哈希值进行比较。

2023-11-06 00:17:26 89

原创 vigenere-like cipher

题干中提到“明文包含大写字母、小写字母、标点符号和空格,但不包含数字”,因此可以枚举密钥,然后将密钥和密文进行异或,得到的结果中,如果有数字,则说明该密钥不正确。首先,题干中所说的维吉尼亚-like是指将密钥复制为和明文一样长(多出来的删除掉),然后进行异或运算。因此,结合one-time pad的思想,可知利用密钥和密文进行异或,便得到明文。

2023-11-05 23:53:15 53

原创 manyTimePad

我会假设第一个额外空格实际上是一个冒号":“第二个是一个逗号”,"但我不能确定。想想提示的第二部分,如果异或运算符两侧有一个空格字符和一个字母字符在同一位置,运算后字母字符会从小写变成大写,或者从大写变成小写。显然,所有明文都有一些奇怪的词语(例如“numxer”、“njoy”、“bicomes”等)。中有一个包含空格字符,另一个包含小写字母“a”(明文)。假设我们在异或运算的结果中的某个位置得到一个大写字符“A”,我们知道。的结果后,我比较结果中的每个字节,看它是否在“a”,我们会得到如下破解的。

2023-11-05 23:52:22 119

原创 划水划水划水

优化半天用一行内存预分配减少了一半的运行时间,哭笑不得。

2023-10-13 15:13:17 50

原创 1878E - Iva & Pav

一开始找来找去找不到bug,靠朋友发现是将 s 清零的时候用的memset搞的鬼。

2023-10-04 11:40:17 85

原创 1878D - Reverse Madness

批注:可以理解为,一旦索引为 i 的位置需要进行 reverse,它一定是和索引为 n-i+1 的元素进行交换。批注:这里的 affect 和上文的 touch 是一个意思。

2023-10-03 10:41:45 89

原创 the cryptopals crypto challenges set 1 part 2

ps(这里思路我当时没缕清,以为 findSingleXor 的结果应该是有特征的。重点是猜出这一位的 key,然后拼起来,最后用来解密密文,这时的结果才是有规律的。这里我先用 set 记录每个字符串对应的分组的集合的大小,如果有重复集合就会比较小,结果证明这样就足以检测 ECB 了。我遇到的问题是在字符串和二进制/十六进制转换的时候,直接使用bin()/hex()去掉前缀的结果进行拼接,这样的后果是长度不对齐,字符转换成二进制,长度应为8,不足需要补前导0,十六进制则长度应为2,不足需要补前导0。

2023-09-26 21:46:35 41

原创 AcWing 1126. 最小花费

要使得 A 最小,则。

2023-09-26 09:20:33 32

原创 the cryptopals crypto challenges Challenges Set 1

代码如下,仅作参考,慢慢学习发现如果自己找到bug效果是最好的,但是如果绞尽脑汁想破头皮都没办法,可能还是需要一点提示。最近通了这几关,很有意思,记录一下思路。

2023-09-25 23:14:46 56

原创 AcWing 1127. 香甜的黄油

【代码】AcWing 1127. 香甜的黄油。

2023-09-25 21:04:47 26

原创 AcWing 920. 最优乘车

对于每条公交线路,从每个站到它后面站建一条权值为 1 的有向边,代表花费为 1 (上一次车)最终求 1 到 n 的最短路,即最少花费,再减一即最少换乘次数。

2023-09-25 20:45:38 44

原创 向自己发起自律挑战

俗话说,靠意志力自律就是在犯贱(bushi,还要靠内驱力,习惯等等因素。昨天开始突然找回了学习的兴致和状态(暑假时天天划水),于是想把这股来之不易的劲儿延续下去,在此向自己(不知道会不会有人看到想和我一起,很欢迎!顺便挑战自己下午最早能几点回到图书馆(其实是挑战的起点)然后用一句话概括自己24小时内最大的成就(自律的成果)

2023-09-13 18:34:06 47

原创 acwing 1106.山峰和山谷 & 博客新起点

这两天写了密码学实验和一道Flood Filled。许久未写代码,惊讶地发现自己的代码实现能力一泻千里,接下来必须保持练习。1106 这道题就是用 bfs 解,但在应用算法时,大致思路容易确定,具体细节难以一步到位,接下来需要刻意练习这方面的能力。打算捡起AcWing的算法提高课按照课程刷下去,但是一定不能是被动的学习,而要积极的思考。的激励,决定保持每天产出一篇博客记录自己的学习~

2023-09-13 11:14:01 69

原创 用来记录壁纸的博客

2023-04-05 20:33:25 42

原创 Data8 开荒记(环境配置与基本介绍)

data8的环境配置比较多内容,因此这是我配过的最久的一次环境,折腾了大概有五个小时吧,主要是网上的资料比较零散,特此将我的经历记录如下,节省后来人的时间。

2022-09-03 17:02:54 1260 2

原创 MISC - 高度隐写

下载题目,解压缩,得到一张图片但是在Kali环境下无法正常打开,说明修改了图片高度,通常宽不会被修改,否则window下将无法打开图片,准备进行爆破利用pngcheck得到正确的CRC值:cbd6df8a运行以下脚本(python2)https://c.runoob.com/compile/6/# -*- conding: utf-8 -*-import binasciiimport structcrc32key = 0xcbd6df8afor i in range(0, 6553.

2022-03-20 13:32:03 1188

原创 Stegdetect 0.4 for windows

stegdetect 下载,可在windows下运行

2022-03-18 13:17:00 1249 2

原创 xdoj - 目录操作

标题 目录操作类别字符串处理时间限制 1S内存限制 256Kb问题描述 在操作系统中,文件系统一般采用层次化的组织形式,由目录(或者文件夹)和文件构成,形成一棵树的形状。有一个特殊的目录被称为根目录,是整个文件系统形成的这棵树的根节点,在类Linux系统中用一个单独的 “/”符号表示。因此一个目录的绝对路径可以表示为“/d2/d3”这样的形式。当前目录表示用户目前正在工作的目录。为了切换到文件系统中的某个目录,可以使用“cd”命令。假设当前目录为“/d2/d3”,下图给出了cd命令

2022-03-09 21:29:33 428

原创 xdoj - 字符统计

标题 字符统计类别字符串处理时间限制 1S内存限制 256Kb问题描述 给出一个字符C和一行文字S,统计在这行文字 S中字符C出现的次数。程序还需要支持大小写敏感选项:当选项打开时,表示同一个字母的大写和小写看作不同的字符;当选项关闭时,表示同一个字母的大写和小写看作相同的字符。输入说明 输入数据由两行构成。第一行包含一个字符C和一个数字n。字符C为大小或小写英文字母。数字n表示大小写敏感选项,当数字n为0时表示大小写不敏感,当数字n为1时表示大小写敏感。字符C和数字n之间用空

2022-03-04 16:05:33 836

原创 xdoj - 寻找最长的行

getline ()#include<iostream>#include<algorithm>#include<string>using namespace std;const int N = 1005;const string ed = "***end***";int main(void){ int maxn = 0; string ans; while (true){ string str; getline(cin, str); if

2022-01-06 20:53:13 480

原创 xdoj - 命令行选项

问题描述请你写一个命令行分析程序,用以分析给定的命令行里包含哪些选项。每个命令行由若干个字符串组成,它们之间恰好由一个空格分隔。这些字符串中的第一个为该命令行工具的名字,由小写字母组成,不含任何其他符号。在工具名字之后可能会包含若干选项(以减号”-”开头的字符串),还可能包含一些不是选项的参数(不以减号“-”开头的字符串)。  请写一个程序分析给出的命令行,输出命令行包含的不重复选项(即,重复的选项只输出一次)。输入格式输入是一个待处理的命令行,长度不超过 255 个字符。该命令行一定是若干个由单个

2021-12-31 12:05:39 255

原创 xdoj - 图像旋转-2021

问题描述旋转是图像处理的基本操作,在这个问题中,你需要将一个图像逆时针旋转90 度。计算机中的图像表示可以用一个矩阵来表示,为了旋转一个图像,只需要将对应的矩阵旋转即可。输入格式输入的第一行包含两个整数 n, m(1 ≤ n, m ≤ 100),分别表示图像矩阵的行数和列数。接下来 n 行每行包含 m 个不超过 1000 的非负整数,表示输入的图像。输出格式输出 m 行,每行包含 n 个整数,表示原始矩阵逆时针旋转 90 度后的矩阵。样例输入2 31 5 33 2 4样例输出

2021-12-31 11:45:51 376

原创 新概念三-Lesson1-课文笔记

A puma at largeat large 逃遁的, 没有被控制的– The thief is still at largePumas are large, cat-like animals which are found in America.cat-likebear-like animalslady-like behaviorchild-like simplicityan angel-like girlcrystal-like eyesflu-like symptoms(C

2021-12-30 21:58:29 1085

原创 xdoj - 螺旋填数

视频讲解#include<iostream>using namespace std;const int N = 1005;int dx[4] = {0, 1, 0, -1};int dy[4] = {1, 0, -1, 0};int m, n, a[N][N];int main(void){ cin >> m >> n; int dir = 0, cnt = 1, x = 0, y = 0, nx = 0, ny = 0; for (int i

2021-12-30 21:08:04 465

原创 动态规划-HDU - 2069 Coin Change

题意有五种硬币不限数量,面值分别是1,5,10,25,50。问你用这些硬币组成n元有多少种方式,硬币的总数要不超过100个。思路状态表示如果类比01背包,那么至少我们可以认为应该用一个二维数组来记录状态,在背包问题中,我们用dp[ i ][ j ]来表示“前 i 件物品装入容量为 j 的背包所能得到的最大总价值”;在这里,我们可以尝试(事实是我也不知道为什么)用dp[ i ][ j ] 来表示“用 j 个硬币组成 k 元的方法数”。对于dp [ 11 ]而言,它一定程度上可以由dp[ 10 ],

2021-11-15 22:13:02 333

原创 课堂小测总结——记若干道有价值的题目

陷阱题1.C选项,这个极限存在,只能说明在x0x_0x0​处的左右极限存在且相等。连续,需要的是lim⁡x→x0f(x0)=f(x0)\lim\limits _{x \to x_0}f(x_0) = f(x_0)x→x0​lim​f(x0​)=f(x0​),这里并没有给出等式右边的信息,因此不能作出判断。判断连续三步走:f(x)在x0处有定义f(x)在x_0处有定义f(x)在x0​处有定义lim⁡x→x0f(x)存在\lim\limits_{x \to x_0}f(x)存在x→x0​lim​f

2021-10-30 17:11:59 97

原创 输入一个想用作整数的字符的错误方法

前提:输入的是一个字符,如’C’错误char x = 0;//或者int x = 0scanf("%d", &x);//或cin >> x;正确char x = 0;//或者int x = 0;scanf("%c", &x);//或cin >> x;

2021-10-29 19:53:22 64

原创 高数第二章——导数与微分总结

即将小考,趁机总结一波第一节 导数的概念一、导数的定义我对导数的理解是,导数是对一个函数从平均变化率到瞬时变化率的一个逼近,蕴含着极限的思想。①三种算法(单侧导数同理)lim⁡x→x0f(x)−f(x0)x−x0\lim\limits_{x\to x_0} \frac { f(x) - f(x_0) }{ x - x_0 }x→x0​lim​x−x0​f(x)−f(x0​)​常用于证明f(x)在某一点可导,或者用于求f(x)在某一点的导数值(可能对f(x)无法直接求导)lim⁡Δx→

2021-10-28 21:07:45 3136

原创 xdoj作业-统计正整数的个数——记两种思路

记录一下两种思路问题问题描述 统计n个正整数中每个数出现的次数。输入说明 第一行是一个整数n(5<n<30),表示要待统计整数的个数;第二行是n个整数,每个整数均小于100000输出说明 按照整数从小到大的顺序依次输出不同的整数及其出现次数,整数和出现次数之间用冒号(:)分隔。输入样例 1219 223 35 321 2 33 44 223 2 19 2 19输出样例2:319:333:135:144:1223:2321:1思路一,map#include

2021-10-25 16:14:22 2043

原创 最长公共子序列笔记

定义dp[ i ][ j ]表示s1…si与t1…tj对应的LCS长度转移(缩小问题规模)当s[ i+1] = t [ j+1]时,dp[ i + 1 ][ j + 1 ] = dp[ i ][ j ] + 1时。因为这个元素构成了LCS的一部分,删除它就是删除了LCS的一部分。对于其它情况dp[ i + 1][ j + 1] = max (dp[ i ][ j + 1], dp[ i + 1][ j ]) 因为最后两个元素不等,因此删除它对两个序列的LCS没有影响,但我们并不知道应该删掉谁的

2021-10-24 11:44:46 60

空空如也

空空如也

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

TA关注的人

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