二维动规小结

如何做CTF的二维码处理,CTF二维码解题 二维码在当今已经深入我们生活的方方面面,出门带个手机一切都可以搞定。即使是街边小摊位也能轻松扫码支付,真的不要太方便了,既然二维码如此厉害,我们就需要深入去了解一下它,并且二维码也是CTF中的一个重要的考点。今天我们就分享一下二维码的相关知识,以及如何在CTF中解答二维码的问题。 阅读详情

点击打开链接

目前做的题目分二类

一是直接推公式从底向上:

类似题目有:

Problem IDTitleSource
 
Problem  A
数字三角形
 
Problem  B
变音量
 
Problem  C
花店橱窗
 
Problem  D
摆花
 
Problem  E
机器分配
 
Problem  F
小胖办证

这些题目中有些值得注意

problem B:变音量

Description

你将要在元旦演奏一场吉他专场。但你不希望声音平淡,所以你希望每个曲之间都有变化。现在你已经确定了每个曲可以与上一个曲之间的音量的变化量,即每首曲开始,你可以对音量选择增加或减少一个指定的变化值。当然音量不可能为负数,也不能太高,因此必需保证每首曲音量在0和maxLevel之间(包含)。

你的任务是,根据已有的开始音量beginLevel 和每首曲之间的变化量,求出最后一首曲的最大可能音量。如果没有方案,输出 -1。

Input

第一行有三个整数,n, beginLevel, maxLevel,分别表示曲目数,开始量,最大限制音量。下面有n-1行整数,第i行整数表示第i首曲与第i+1首曲之间的变化量。

Output

只一行一个数,答案。

Sample Input

输入样例1:4  5 10
5
3
7
输入样例2:
5 8 20
15
2
9
10

Sample Output

输出样例1:10输出样例2:-1

这题不能用数组直接记录当前可以到达的音量,而要用一个bool图来确定(题目每个音量只有两个状态)

不然会炸数组。用bool直接表示状态更方便且省空间 。

for(int i=1;i<=n-1;i++)
	{
	bool flag=false;	
	for(int j=0;j<=maxn;j++)
	if(a[i][j])
	{ flag=true;//判断是否有新的音量生成;
	  if(j-b[i]>=0) a[i+1][j-b[i]]=true;//生成小音量;
	  if(j+b[i]<=maxn) a[i+1][j+b[i]]=true;//生成大音量;
	}
	if(!flag) {cout<<-1;exit(0);}
}

problem C 花店橱窗:

Description

某花店现有F束花,每一束花的品种都不一样,同时至少有同样数量的花瓶,被按顺序摆成一行,花瓶的位置是固定的,从左到右按1到V顺序编号,V是花瓶的数目。花束可以移动,并且每束花用1到F的整数标识。如果I < J,则花束I必须放在花束J左边的花瓶中。例如,假设杜鹃花的标识数为1,秋海棠的标识数为2,康乃馨的标识数为3,所有花束在放入花瓶时必须保持其标识数的顺序,即杜鹃花必须放在秋海棠左边的花瓶中,秋海棠必须放在康乃馨左边的花瓶中。如果花瓶的数目大于花束的数目,则多余的花瓶必须空,即每个花瓶只能放一束花。

每个花瓶的形状和颜色也不相同,因此,当各个花瓶中放入不同的花束时,会产生不同的美学效果,并以美学值(一个整数)来表示,空置花瓶的美学值为0。在上述的例子中,花瓶与花束的不同搭配所具有的美学值,可以用如下的表格来表示:

         花瓶1      花瓶2      花瓶3      花瓶4      花瓶5

杜鹃花     7       23     -5      -24   16

秋海棠     5       21     -4      10     23

康乃馨     -21   5       -4      -20   20

根据表格,杜鹃花放在花瓶2中,会显得非常好看,但若放在花瓶4中,则显得很难看

Input

输入的第一行是两个整数F和V,分别为花束数和花瓶数(1≤F≤100,F≤V≤100)。接下来是矩阵Aij,它有I行,每行J个整数,Aij表示花束I摆放在花瓶J中的美学值。

Output

输出的第一行是一个整数,为最大的美学值;接下来有F行,每行两个数,为那束花放入那个花瓶的编号。

Sample Input

3 5
7 23 –5 –24 16
5 21 –4 10 23
-21 5 –4 –20 20

Sample Output

53
递推公式为:
a[i][j]=max(a[i-1][j-1]+a[i][j],a[i][j-1]);

另外 要注意的是路径的推导(只能由上至下即找到最优解后递归搜索)
void findway(int x,int y)
{if(x==0) return;
 while(a[x][y]==a[x][y-1] && y>=2)
	y--;
	path[x]=y;
 findway(x-1,y-1);}

 problem E:机器分配

  b[i][j]=max(b[i][j],a[i][j-k]+b[i-1][k]);

   problem F:小胖办证

scanf("%d",&s[i][j]);  
    for(i=1;i<=m;i++)f[n][i]=s[n][i];  //初值:最后一层   
    for(i=n;i>0;i--){    //从下往上  
       
        f[i][1]=s[i][1]+f[i+1][1];  
        for(j=2;j<=m;j++)    //向右走和从下往上   
            f[i][j]=s[i][j]+min(f[i+1][j],f[i][j-1]);  
        for(j=m-1;j>0;j--)   //向左走   
            f[i][j]=min(f[i][j],f[i][j+1]+s[i][j]);  
        }

找路径的方式

void found(int i,int j)
{if(i==1) 
	{
	for(int i=path[0];i>=1;i--)
		cout<<path[i]<<endl;
	    exit(0);	
	}
	ll nn=b[i][j]-a[i][j];
	if(nn==b[i-1][j]) 
	{path[++path[0]]=j;found(i-1,j);}
	if(nn==b[i][j-1])
	{path[++path[0]]=j-1;found(i,j-1);}
	
	path[++path[0]]=j+1;found(i,j+1);
}


二是俩个对象通过二维数组记录推导

像:

Problem  G
最长公共子序列
 
Problem  H
编辑距离
 
Problem  I

相似基因

这些题目都差不多

主要讲一下相似基因:


Description

大家都知道,基因可以看作一个碱基对序列。它包含了4种核苷酸,简记作A,C,G,T。生物学家正致力于寻找人类基因的功能,以利用于诊断疾病和发明药物。

在一个人类基因工作组的任务中,生物学家研究的是:两个基因的相似程度。因为这个研究对疾病的治疗有着非同寻常的作用。两个基因的相似度的计算方法如下:

对于两个已知基因,例如AGTGATG和GTTAG,将它们的碱基互相对应。当然,中间可以加入一些空碱基-,例如:

A

G

T

G

A

T

-

G

-

G

T

-

-

T

A

G

 

这样,两个基因之间的相似度就可以用碱基之间相似度的总和来描述,碱基之间的相似度如下表所示:

 


 

那么相似度就是:(-3)+5+5+(-2)+(-3)+5+(-3)+5=9。因为两个基因的对应方法不唯一,例如又有:

A

G

T

G

A

T

G

-

G

T

T

A

-

G

 

相似度为:(-3)+5+5+(-2)+5+(-1)+5=14。规定两个基因的相似度为所有对应方法中,相似度最大的那个。

Input

共两行。每行首先是一个整数,表示基因的长度;隔一个空格后是一个基因序列,序列中只含A,C,G,T四个字母。1<=序列的长度<=100。

Output

仅一行,即输入基因的相似度。

Sample Input

7 AGTGATG5 GTTAG

Sample Output

14

可以发现两串数一共有三种情况(因为最优解可以由局部最优推出):

那么我们从头推导:

这个题每个基因对应关系不同,可以把两个基因都遍历一遍。

f[i][j]:字符串s1的前i个与字符串s2的前j个匹配所能达到的最大匹配值,先把每个基因都对应空碱基算出来,

初始化:

for(int i=1;i<=Slen;i++) a[i][0]=a[i-1][0]+VAL[s[S[i]-'0']][5];
for(int j=1;j<=Tlen;j++) a[0][j]=a[0][j-1]+VAL[s[T[j]-'0']][5];

后推

temp[0]=a[i-1][j]+VAL[s[S[i]-'0']][5];//S1对应空碱基;
temp[1]=a[i][j-1]+VAL[s[T[j]-'0']][5];//S2对应;
temp[2]=a[i-1][j-1]+VAL[s[S[i]-'0']][s[T[j]-'0']];//S1对应S2;

注意一个小技巧:

scanf("%s %s",a+1,b+1);
m=strlen(a+1);
n=strlen(b+1);

可以把数组后推一位!!!!!!!!!!!!!!!!!!!!!!!

总结就是这些,补充待续......

supermapGIS二维制图小结 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 开发工具与关键技术:SuperMap iDesktop 10i、supermapGIS 作者:何德润 撰写时间:2020.4.28 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~... 阅读详情

相关推荐

【Matlab 传感器布局优化】基于群智能算法的wsn覆盖优化研究

本文主要是对同构和异构传感器在指定空间内的布局进行优化,以最大覆盖率为目标,使用了DBO/SCA/WOA/SSA/NOA等启发式算法,在100x100的空间内,对30,100,200个传感器进行优化,得到最优的布局位置和对应覆盖率。

u013367499的博客 1817

变音量

[问题描述] 你将要在元旦演奏一场吉他专场。但你不希望声音平淡,所以你希望每个曲之间都有变化。现在你已经确定了每个曲可以与上一个曲之间的音量的变化量,即每首曲开始,你可以对音量选择增加或减少一个指定的变化值。当然音量不可能为负数,也不能太高,因此必需保证每首曲音量在0和maxLevel之间(包含)。 你的任务是,根据已有的开始音量beginLevel 和每首曲之间的变化量,求出最后一首曲的最大可

peter_zhu01的博客 1188

AI 赋能测试全生命周期:多 Agent 协同的自动化提效方案

本文提出了一种基于Coze平台的多Agent协同测试解决方案,旨在解决软件测试中PRD解析不清晰、测试点覆盖不全、用例编写效率低、代码生成耗时等痛点。通过PRD优化、测试点生成、测试用例生成和单元测试框架生成四个Agent的协同工作,结合Cursor工具实现从需求到代码的全链路自动化。以电商平台登录模块为例,展示了从模糊PRD到标准化测试用例和可执行Java单元测试代码的完整转化流程。该方案通过AI赋能显著提升测试效率,减少人工干预,实现测试覆盖率≥95%,为快速迭代的软件研发提供了高效的测试自动化支持。

QINJIEEE的博客 1098

平淡

日子一天天的过着,转眼间十月中旬了,天气一天天的冷起来了,冬天来临了,出了校门的冬天似乎也比往年来的早,房子里可能是由于楼下改造,暖气一半有一半没有。 好久没过过周末了,给自己过个周末,早上晚起了半个小时,下午上街买了个毛毯,过冬用,回来后给家里打了个电话,给父母问了声好,晚上吃饭时接到个消息,是老朋友的。一天就这样过去了。 这段时间似乎进入了一个“瓶颈”了,每天不知道该干什

明天的希望,让我们忘了今天的痛苦-------- 1026

利用正射影像对斜射图像进行反向投影

因此,RANSAC算法可以通过计算inliners和outliers的数量来评估估计关键点的质量,确保与其他点不一致的点不会在Homography矩阵中被估计。然后,它通过考虑关键点周围区域中图像的梯度大小和方向来计算每个提取的关键点的方向。由于单应性矩阵的计算可能会受到两个图像中异常值的存在的影响,这将导致矩阵的不正确估计并导致沿图像的对准和映射不良。FLANN匹配器的方法基于K近邻搜索的概念,即从图像中找到k个近邻。找到相机在正射影像坐标系中的位置并在正射影像上绘制重叠区域的边界框。

gis收藏家的博客 1511

scGPT学习资料汇总 - 单细胞多组学基础模型

scGPT(single-cell Generative Pre-trained Transformer)是一个针对单细胞多组学数据的基础模型,由多伦多大学Wang Bo实验室开发。该模型通过在超过3300万个细胞上进行生成式预训练,捕捉了基因和细胞之间的复杂关系,为多种下游任务提供了强大的基础。scGPT为单细胞分析提供了强大的基础模型和丰富的资源。通过本文汇总的学习材料,读者可以快速掌握scGPT的使用,并将其应用到自己的研究中。

2401_87189860的博客 838

变音量——动态规划

问题描述 你将要在元旦演奏一场吉他专场。但你不希望声音平淡,所以你希望每个曲之间都有变化。现在你已经确定了每个曲可以与上一个曲之间的音量的变化量,即每首曲开始,你可以对音量选择增加或减少一个指定的变化值。当然音量不可能为负数,也不能太高,因此必需保证每首曲音量在0和maxLevel之间(包含)。 你的任务是,根据已有的开始音量beginLevel 和每首曲之间的变化量,求出最后一首曲的最大可能音量...

PushyTao的博客 773

小米手机Magisk解锁与Root完整指南:从Bootloader到模块管理

Android系统Root权限获取是设备深度定制的核心技术之一,其核心原理在于通过修改系统启动流程获取超级用户权限。Systemless Root技术通过动态挂载修改,在不触碰系统分区的前提下实现功能注入,既保证了系统完整性,又能绕过完整性检测。这一技术为设备带来了极高的可定制性,用户可以通过模块化方式增强系统功能、修改UI界面或启用隐藏特性。在小米手机生态中,由于官方提供了完整的Bootloader解锁通道,结合Magisk的无系统修改Root方案,使得安全可控的深度定制成为可能。本文聚焦于Bootloa

weixin_29164185的博客 333

【2020.2.7 练习赛】 T2-音量调节(可行性dp)

来源:JZOJ 题目描述 一个吉他手准备参加一场演出。他不喜欢在演出时始终使用同一个音量,所以他决定每一首歌之前他都要改变一次音量。在演出开始之前,他已经做好了一个列表,里面写着在每首歌开始之前他想要改变的音量是多少。每一次改变音量,他可以选择调高也可以调低。 音量用一个整数描述。输入文件中给定整数 beginLevel ,代表吉他刚开始的音量,以及整数 maxLevel ,代表吉他的最大音量。音量不能小于 0 也不能大于 maxLevel 。

Admin-zx 的博客 434

一文快速教你如何下载国自然模版

5. 成功进入“相关文件查看”页面后,点击左侧的“项目申请文件“,如果你此次申请的是“面上项目”,选择对应的下拉框,找到对应的模版下载即可。6. 🫑们发现,在当前页面点击“青年科学基金项目”,左侧出现的是“原国家杰出青年科学基金项目”。7. 进入下一页后,点击“青年科学基金项目”,便可以在右侧找到🫑们要找的模版啦。2. 成功登陆后,点击1处的“首页”,在首页界面,再点击2处的“项目批准”。8. 点击上图3处的“文件详情”,就可以找到可以下载的模版啦(如下图)。3. 从“项目批准”进入后,点击“管理”。

薰珞婷紫小亭子的博客 2396

RK3588 固定hdmiin的dev/videoX节点

RK3588 固定hdmiin的dev/videoX节点

目前从事linux驱动开发,多交流多学习吧 2050

[NOIP] 音量调节

问题描述 一个吉他手准备参加一场演出。他不喜欢在演出时始终使用同一个音量,所以他决定每一首歌之前他都要改变一次音量。在演出开始之前,他已经做好了一个列表,里面写着在每首歌开始之前他想要改变的音量是多少。每一次改变音量,他可以选择调高也可以调低。 音量用一个整数描述。输入文件中给定整数beginLevel,代表吉他刚开始的音量,以及整数maxLevel,代表吉他的最大音量。音量不能小于0也不能大于maxLevel。输入文件中还给定了n个整数c1,c2,…,cn,表示在第i首歌开始之前吉他手想要改变的音量是

hys__handsome的博客 281

芒果YOLOv1改进35:主干Backbone篇之MobileViTv3:全网首发最新 MobileViTv3 系列最强改进版本(三)|轻量化Transformer视觉转换器,简单有效地融合了本地全局

芒果YOLOv1改进35:主干Backbone篇之MobileViTv3:全网首发最新 MobileViTv3 系列最强改进版本(三)|轻量化Transformer视觉转换器,简单有效地融合了本地全局

包括YOLOv5、YOLOv7、YOLOv8等模型改进 408

贪心与动规小结

动态规划 动态规划用于解决多阶段决策最优化问题 可以用局部最优解来推导全局最优解, 即动态规划 三要素 阶段 状态 决策 两个条件 最有子结构(最优化原理) 无后效性:当前状态是前面状态的完美总结,后一个状态的改变不会影响前一个状态, 是否可以用动态规划,否则用搜索 模型匹配:多做题,掌握经典的模型 一维: 上升序列模型, 背包模型 二维: 最长公共子序列问题 寻找规律: 规模由小...

Elltor 401

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

C语言二维数组与指针的小结

二维数组与指针 要用指针处理二维数组,首先要解决从存储的角度对二维数组的认识问题。我们知道,一个二维数组在计算机中存储时,是按照先行后列的顺序依次存储的,当把每一行看作一个整体,即视为一个大的数组元素时,这个存储的二维数组也就变成了一个一维数组了。而每个大数组元素对应二维数组的一行,我们就称之为行数组元素,显然每个行数组元素都是一个一维数组 a[3][4] = {1,2,3,4,5,6,7,8,9...

Bill_Hao的博客 3871

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

安卓二维码使用小结

现在二维码几乎在我们身边无处不在了,而在安卓 APP 上使用二维码就不能少了,网上二维码的教程一搜一大堆,我这就小结一下。 前言 提到二维码的使用,首先想到的就是谷歌开发的 Zxing 了,网上有很多基于Zxing 的二维码扫描方案,大致有两类,一个是封装成开源库,另一个就是将 Zxing 的 demo 作为 module 导入使用。前者使用简单,而且有人维护和优化,二维码的扫描精度和速度都有保证,后者就是可以自行修改源码,根据需要裁剪功能,虽然麻烦一些,但是自由度高点。 我这里还是推荐使用开源的库,毕竟稳

silencefly的博客 600

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

树状数组小结-二维

树状数组: 模板: 取数组下标二进制非0最低位所表示的值; 区间查询。 单点更新: 同一维树状数组比较,这样比较好理解; 如果一维不会可以看看我的一维树状数组博客 1.一维二维都是:取数组下标二进制非0最低位所表示的值; int lowbit(int x) { return x&(-x); } 2. 一维树状数组更新是这样的: void add(int x,int val) { ...

不想起标题 278

二维数组小结

树状数组可以扩充到二维。 问题:一个由数字构成的大矩阵,能进行两种操作 1) 对矩阵里的某个数加上一个整数(可正可负) 2) 查询某个子矩阵里所有数字的和,要求对每次查询,输出结果。 一维树状数组很容易扩展到二维,在二维情况下:数组A[][]的树状数组定义为:   C[x][y] = ∑ a[i][j], 其中,     x-lowbit(x) + 1     y-

Abner 1693

二维凸包小结

前言 博客内所有的图很多不是我画的,来自网络。 我并没有系统学习过计算几何,写的不规范勿喷。写错了欢迎留言。 图片来源: https://www.cnblogs.com/czaoth/p/6912073.html 前置芝士 你首先需要知道什么是向量什么是叉积。(详细内容可以到高中数学必修4中学习,我还没学过) 看过这个博客,没学过向量的应该也会向量了吧(我学的时候根本不知道有向量这...

weixin_30241919的博客 207

VBA 二维数组整体直接赋值的方法小结

一维数组可以通过这样一行代码来整体赋值:arr = Array("你", "我", "他", "1", "2", "3", "aa", "bb", "cc")那么,如果想给二维数组采用类似的方法来整体赋值,要怎么办呢? arr=array("你", "我", "他" ;"1", "2", "3" ; "aa", "bb", "cc"),好像不行。 一番搜索,网上给出的答案有如下: 第一种:使用[{}]将字符串括起来,字符串行间用分号(;)分割,列间用逗号(,)分割: arr = [{"你", "..

logo_28的博客 1万+

c语言中函数二维数组传递方法小结

c语言中经常需要通过函数传递二维数组,有三种方法可以实现,如下:方法一, 形参给出第二维的长度。例如:#include void func(int n, char  str[ ][5] ){ int i; for(i = 0; i   printf("/nstr[%d] = %s/n", i, str[i]);}void main(){ char* p[3]; char str[]

sarsjapanese的专栏 2万+

Delphi二维码中文支持、分组、批量打印经验小结

一直也没接触到什么复杂的报表,都是一些简单的报表,在DelphI下使用QuickReport一般也就能满足需要了,由于公司现在需求的变化,对条码扫描提出了新的要求,主要是扫码要包含更多地内容,以前的一维码显然不能完全满足,再说二维码也是一种趋势,故而需要解决二维码的问题,网上搜了一下,方式有多种多样,我花了3天时间找了很多,也尝试了很多。也经历了很多失败!总结一下在Delphi下实现二维码主要有三种方法: 1、使用PtImageRW.dll和PtQREncode.dll动态连接库,使用uQRCode生成二维

daifubing的博客 3703

二维码生成库phpqrcode使用小结

只需要里边的phpqrcode.php这一个文件就可以生成二维码了 我们需要用到里边的QRcode类(第2963行)的png()方法 public static function png($text, $outfile = false, $level = QR_ECLEVEL_L, $size = 3, $margin = 4, $saveandprint=false)

欢迎关注我 https://x.com/Awesome_AI_News 1800

C语言二维数组元素的多种表示方法小结

C语言二维数组的多种表示方法小结 昨天,一个小可爱问我,为何函数中,数组可以改变主函数中的值,比如b[i],就可以改原来数组中的值。其实b[i] 等价于 *(b + i)也是通过地址间接更改的,小可爱醍醐灌顶。 随便聊到了二维数组的多种等价, 以a[M][N]数组为例子,该数组a[i][j] (0 <= i < M; 0 <= j < N)可以等价为: ``` ``` ...

Y_peak的博客 1853

二维数组new小结

发信人:   nichloas   (nil),   信区:   CPlusPlus     标     题:   [FAQ]二维数组new小结     发信站:   BBS   水木清华站   (Sat   Jun     7   15:27:42   2003),   转信     1.             A   (*ga)[n]   =   new   A[m][n];        

fzy112001的专栏 416
上一篇: 最小生成树-kruskal c++算法 总结
下一篇: c++ spfa
Wyt_code
博客等级 码龄9年 10粉丝 21原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值