自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 蓝桥杯 排序题目【算法赛】

【代码】蓝桥杯 排序题目【算法赛】

2025-03-12 10:39:17 210

原创 蓝桥杯 1. 缺失的环节【算法赛】

显然有pow(2,len) > n - len + 1时必然有解.那么右边看成n放缩下,差不多就是logn时。只需要对x去掉最高位(如果为1),然后左移一位,再加上右面新增位就可以获得下一位值。先考虑朴素想法,枚举len从1到n,然后内部循环枚举.设枚举开始时值为x。时间复杂度O(n * logn)显然可以过.

2025-03-11 21:22:52 240

原创 离散数学 第五章 5-1 5-2

单元素的性质.若对任意a,b有 x * a = x * b => a = b 或者 a * x = b * x => a = b。若集合中存在元素x,满足对任意 y属于集合,有y * x = y 且 x * y = y,则x为幺元。对任意x,有 x * (x + y) = x且 x + (x * y) = x,则满足吸收律。若有a,b,使得 a * b = e,e为幺元.则a为b的左逆元,b为a的右逆元。若集合中存在元素x,满足对任意 y属于集合,有x * y = y,则x为左幺元。

2025-03-11 19:58:40 846

原创 HDU钉耙编程春季联赛一 补题 1009

考虑动态规划.设f[i]为前i个数的最大权值,那么dp[i+1]就从dp[1]到dp[i]转移而来,f[j,i+1]可以设置动态更新,即在每次更新f[i+1]状态时将f[j,i]更新为f[j,i+1]给定一个长度为n的数组,每个元素在0-2的m次方-1内,还有一个对应关系g,0-2的m次。dp[i + 1] = dp[j] + g[f[j,i+1]],其中j从1到i。这时我们设定i不动,从i往左走,会发现向左能找到f不同的类为O(m)因此f为或 - 与的结果,f是O(m)的一个集合.

2025-03-11 18:52:12 379

原创 自动机 + 原子语义方法识别科学计数

对于各种可能的数字字符串,如1.23,-45.7,12e5+7,2,100.5e-12设计一个程序判断是否是合法的字符串并计算字符串的结果。

2025-03-11 16:35:44 230

原创 微型计算机的结构

OF -> 溢出标志(倒数第二位和倒数第一位是否进位的异或值).或者说是结果超过范围(>32767 或 < -32768)为1,否则为0。而OF是有符号状态下的进位.即超出了-pow(2,n)-pow(2,n)-1的范围.求法是最高位运算的进位 ⊕ 次高位运算的进位。AF -> 半进位标志 -> 低半字节(低4位)向高半字节有进位或者借位,AF=1,否则0.取指1 -> 译码1 -> 执行1 ->取指2 -> 译码2 ->执行2 ->…注意区别AF,CF和OF:AF是半字节的进位或者借位,要看4位处;

2025-03-10 21:37:00 643

原创 钉耙编程春季联赛 补题 1002

然而按照通常方法进行存树是存不下的.考虑使用数组来模拟存储的过程.每当一轮过去时,每个成员和他临近的成员进行比赛,最终该位置上的成员期望为(fi + fi+1)/2。给定n个人,编号1-n,1-2匹配,3-4匹配,以此类推,每对获胜概率相同.其中有k个人编号给出,还有一个特殊人染染.也就是染染遇到k个人获胜概率为0情况下染染获胜概率.最终获得一个胜利者,求染染不遇到k个人的概率.很容易想到这是一个二叉树结构.

2025-03-10 16:50:23 146

原创 HDU钉耙编程春季联赛一 补题 1005

在比赛时,看到迷宫->动态规划或者BFS/双向BFS,后面想到可以走上和走右,于是考虑BFS.实际上很容易意识到这是一个最短路问题,常用的迷宫BFS一般都是边权固定的.朴素的分点.由于n*m <=1e5,因此考虑将每个点分成4个,分别代表4个方向,每个方向和其他方向相连,同时与该方向指向的下个格子相连.然后跑最短路即可.给定一个二维地图,需要找到从左上角到右下角的最短路径,图上每个点具有权值,且具有方向.每次转向也需要一定权值.求最短路.

2025-03-10 11:02:12 110

原创 2025-3-9 一周总结

应当及时复习每天的内容.第一是看书,然后听课,在一天结束后保证自己的知识梳理完整,没有遗漏.尽可能尝试用代码去实现算法,尝试用电路图去实现抽象结构.此外,现在的时间相对充裕,这两天基本学会了java的基础,过些日子应该开始着手做大模型的学习.尽可能早日参与到项目建设.在汇编语言和编译原理这块,个人感觉黑书内知识点更多,细节更到位,体系更完整,可以在老师讲解之前进行预习。算法竞赛方面,不用等比赛开始了现场直播着打,很多充裕的时间都可以用来写以前的比赛或者是补题.又如优化的加法器等等。

2025-03-09 23:00:38 258

原创 汇编语言 第二章 数据存储1

小数:0 * 1/2 + 1 -> 1 * 1/2 + 0 -> 1/2 * 1/2 + 1 -> 5/4 * 1/2 + 1 -> 13/8 * 1/2 + 0 = 13/16。如721转换为二进制 余数为1(360),0(180),0(90),0(45),1(22),0(11),1(5),1(2),0(1),1(0)原码,反码,补码不再赘述,需要注意补码的范围是-128 - 127,比原码的范围多1.此外负数时,补码绝对值+原码绝对值=pow(2,n)

2025-03-09 22:29:57 546

原创 Java基础区别于其他语言的一些内容

Java的println实际上会对输入项进行判断,如果是int[],boolean[],double[]等类,以object传入,会输出类名+@+地址(16进制)String创建的字符串在串池里,而StringBuilder拼接完成后,最终调用toString()方法,因此地址在堆内存里.而对象中的方法其实是一个地址,被调用时,对象指针找到对象,对象找到方法指针,方法指针找到存储在方法区的方法(class文件)new String指向堆内存,堆内存的值是一个地址,指向方法区的串池;

2025-03-09 15:46:17 306

原创 Java 开发工具

如果需要开发java程序,那么不单单需要运行,还需要调试,查看内存情况等工具,那么就需要JDK(Java Development Kit).需要注意的是,JVM是在运行java程序(java helloworld)的时候启动,本身作为一个进程级虚拟机(区别于系统级虚拟机)存在.如果只需要运行java程序,那么只需要JRE(Java Runtime Environment),它由JVM,核心类库,运行工具等组成。开发工具:编译,运行等工具。核心类库: Java库。

2025-03-08 14:20:38 159

原创 非确定有限自动机(NDA)的cpp实现

vector存图,bfs构造新自动机中的节点,状态压缩存储新节点信息.最近复习了计算理论的相关知识,考虑用cpp实现一个NDA.

2025-03-07 15:23:33 106

原创 P3379 【模板】最近公共祖先(LCA)

那么可以考虑记录每个点到根节点经过的所有分叉点的编号数组,然后对这个数组按照深度排序,此时A,B两个数组中第一个相交点就是LCA.进而想到,只需要记录该点向上2的k次方的祖先节点,那么假设公共节点的二进制为x,必然可以用多个二进制进行拆分,从而获得结果.进而容易想到,只需要记录该点向上的第一个分叉点,而这个分叉点又会记录它的上一个分叉点.通过递归就可以获得LCA.另外还可以考虑使用树链剖分.第一个深搜记录下每个节点父节点,深度,重儿子.然后对所在链的起始点深度较深的点持续进行上升操作.

2025-03-05 13:35:11 159

原创 DA代码实现

运行过程:读入字符串后,由初始状态 + 当前字符通过状态转移的矩阵获得下一个状态,直至遍历完整个字符串.最后判断当前状态是不是终止状态即可.2.状态转移.状态转移是一个二元输入一元输出的函数,考虑用二维矩阵来实现.其中行为状态编号,列为当前读取的字符.输入:n个状态,状态矩阵(状态,当前值) => 下个状态。5.终止状态.设定bool类型数组,记录终止状态即可.考虑利用cpp实现一个简单的面向过程的自动机.3.状态集合.可以被包含在状态转移的矩阵中.4.开始状态.设定特殊输入判断开始即可。

2025-03-05 12:32:37 313

原创 补码运算学习

考虑4 + 5, 5 - 4,4 - 5,-5 - 4,4 - (-5)

2025-03-05 11:28:50 190

原创 汇编语言 第一章 绪论

本内容大概由两部分组成,第一部分为观看老师PPT的内容,主要记录了章节的知识点.第二部分为一些知识点中我不太了解的内容,经过查阅资料后以Q/A的形式补充在引用框里,第二部分也可能是一些我联想到的知识点.

2025-03-04 23:53:30 421

原创 logisim实现简单加法器

那我们考虑实现一个求4位补码的,首先判断最高位是否为0,如果是0那么不动;否则将每一位取反然后加1。此时可能在第一步加时有进位,也可能在第二步时有进位,所以再或一下就好了(显然不能进两次位)今天还讲了计算机内减法的原理,对于负数,要取补码再加起来,然后通过溢出的方式获得结果.今天上课学汇编课的时候简单了解了一下加法器.感觉很有意思,尝试用logisim做一个。全加器就是在半加器的基础上考虑进位,那么让两位数相加之后,再把该位结果加上进位就好了。接下来做一个4位数的加法器,比较简单,把全加器加起来就好了。

2025-03-04 19:20:48 288

原创 蓝桥杯10. 整数对F1【算法赛】

前n/2中,i项的贡献为 i * ai * (n - i + 1);后n/2中,i项的贡献为(n-i+1) * ai * (i);

2024-11-12 20:15:27 169

原创 蓝桥杯9. 贾母祝寿【算法赛】

区间修改想到树状数组或者线段树或者差分,但是看到数据1e9,发现都不行,那么考虑是诈骗题,然后发现x,y都是正的,那么没有比第一个更优的策略.看题目注意求绝对值,要把最后一个也考虑到。然后就wa了.......

2024-11-12 19:55:10 176

原创 蓝桥杯7. 单调队列

单调队列的板子题.int v[N];int main()int n,k;cin>>n>>k;i<= n;i++)cin>>v[i];i<= n;i++)if(i >= k)i<= n;i++)if(i >= k)cout<<endl;cout<<endl;return 0;

2024-11-12 19:40:07 235

原创 蓝桥杯5. 面试官的刁难【算法赛】

打表,找规律,发现是45 * n的位数和.

2024-11-12 17:41:31 244

原创 蓝桥杯4. 水杯考验【算法赛】

然后考虑下边界条件,n=1和n=1e3,以及操作次数为0的情况,显然1e3是不会爆的,而n=1,操作次数为0的情况需要特判下.小诈骗题.当有一个不同与其他个水时,通过不断稀释显然可以让几乎所有水不一样,而最后一次操作必然有两杯水一样.

2024-11-12 15:37:34 219

原创 3. 智算士气【算法赛】

观察到公因数,就可以想到质数相关的算法,对m进行质因数分解,对于分解得到的n种质数,每个队伍都可以选择0到n次方个该质数,此时即使某个队伍全选了所有质数的n次方,那么也是正好等于m,不可能超过m.而当所有队伍都选择的数字小于等于n-1次方时,无法构成此时它们的最小公因数相比于m相差了若个个质数,所以需要减去所有队伍都选择0-n-1的情况.所以思路就算首先分解m得到各个质因数的数量,每个质数可能的选择是 队伍数量的n+1次方 - 队伍数量的 n次方,然后相乘即可.

2024-11-11 13:19:05 866

原创 2. 牛郎的微信群【算法赛】

本题一个简单的建树.对每个树的节点存相连接的节点树,然后遍历每个节点,对其进行的相连节点进行节点数的累加就好了,记得减去和自身相连的那个节点qwq。

2024-11-11 09:23:52 285

原创 1.拯救美猴王【算法赛】

本题刚看到没有思路,看下数据范围在2000,那么考虑暴力.暴力时如果从左到右枚举,那么需要n5复杂度QAQ,想一下应该从中间开始枚举,由于中间值确定,所以只需要判断两端值是否与中间值相同即可,ans+=left * right,left 是中间值左侧等于中间值的对数,right为右侧.更进一步可以将left = 0 的情况进行减枝.这样是n3的复杂度,可以过.

2024-11-11 08:58:37 330

原创 洛谷P1098 [NOIP2007 提高组] 字符串的展开

p1=2p1​=2 时,对于字母子串,填充大写字母。(4) 参数 p3p3​:是否改为逆序:p3=1p3​=1 表示维持原来顺序,p3=2p3​=2 表示采用逆序输出,注意这时候仍然不包括减号两端的字符。例如当 p1=1p1​=1、p2=2p2​=2、p3=2p3​=2 时,子串。100%100% 的数据满足:1≤p1≤3,1≤p2≤8,1≤p3≤21≤p1​≤3,1≤p2​≤8,1≤p3​≤2。的字串,我们就把它当作一种简写,输出时,用连续递增的字母或数字串替代其中的减号,即,将上面两个子串分别输出为。

2024-10-06 11:28:00 697

原创 洛谷P5461 赦免战俘

现有 2n×2n(n≤10)2n×2n(n≤10) 名作弊者站成一个正方形方阵等候 kkksc03 的发落。他将正方形矩阵均分为 4 个更小的正方形矩阵,每个更小的矩阵的边长是原矩阵的一半。其中左上角那一个矩阵的所有作弊者都将得到赦免,剩下 3 个小矩阵中,每一个矩阵继续分为 4 个更小的矩阵,然后通过同样的方式赦免作弊者……很显然这个是一个递归求解的题目,题目中的方阵每次分成小方阵的时候边长都会变为2的n-1次方形式.。2n×2n2n×2n 的 01 矩阵,代表每个人是否被赦免。

2024-10-06 01:11:12 218

原创 洛谷P5736 【深基7.例2】质数筛

输入 nn 个不大于 105105 的正整数。要求全部储存在数组中,去除掉不是质数的数字,依次输出剩余的质数。注意判断时可以用6n + 1或 6n + 5简化,非6n+1或6n+5的数字都是2或者3的倍数.数据保证,1≤n≤1001≤n≤100,1≤ai≤1051≤ai​≤105。输出一行,依次输出 aiai​ 中剩余的质数,以空格隔开。第二行输入 nn 个正整数 aiai​,以空格隔开。很简单的一道题,只要单独判断即可,不需要打表。第一行输入一个正整数 nn,表示整数个数。

2024-10-05 19:31:09 333 1

原创 洛谷P1598 垂直柱状图

写一个程序从输入文件中去读取四行大写字母(全都是大写的,每行不超过 100100 个字符),然后用柱状图输出每个字符在输入文件中出现的次数。非常好玩的一道题目,如果是水平统计字母那么非常简单,只需要设置一个哈希表扫一遍就够了,但是由于是垂直的,在表示输出数据方面加大了难度.由若干行组成,前几行由空格和星号组成,最后一行则是由空格和字母组成的。在任何一行末尾不要打印不需要的多余空格。考虑到程序输出是一行一行的,那么就必须在遍历每一行的时候判断行数和哈希表中数字的关系.每行输出后面不允许出现多余的空格。

2024-10-05 16:52:08 429

原创 luogu P1553数字反转(升级版)

有一个substr的技巧,就是 0到s.find("xxx")+1(因为find的是下标,而下标是从0开始的,所以加1就是到那个的距离)就是xxx的前面(不包含xxx),而s.find("xxx")到s.size()-s.find("xxx")就是之后的(包括了xxx)对于整数翻转而言,整数原数和整数新数满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数和原来的数字的最高位数字不应为零。小数反转是把整数部分的数反转,再将小数部分的数反转,不交换整数部分与小数部分。一个实数,即 ss 的反转数。

2024-10-05 16:01:50 1791

原创 洛谷P1321单词覆盖还原

思路就是扫一遍,如果遇到非boy或者girl的字母(比如gib),那么那个肯定是先前被覆盖的单词,再次从新位置开始扫.数据保证,3≤l≤2553≤l≤255,字符串仅仅包含如下字符:.bgilory.bgilory。注意到girl和boy是没有共同的字母的(如果有的话也出不了题),所有可以放心扫girl和boy.后贴上单词,会覆盖之前贴上的单词,或者覆盖句号。最终,每个单词至少有一个字符没有被覆盖。我有一个长度为 ll 的字符串,最开始时,这个字符串由 ll 个句号(两单词,依次贴到这个字符串中。

2024-10-05 15:34:00 311 1

原创 洛谷P1308统计单词数

现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在给定的文章中出现的次数和第一次出现的位置。注意:匹配单词时,不区分大小写,但要求完全匹配,即给定单词必须与文章中的某一独立单词在不区分大小写的情况下完全相同(参见样例 1),如果给定单词仅是文章中某一单词的一部分则不算匹配(参见样例 2)。一行,如果在文章中找到给定单词则输出两个整数,两个整数之间用一个空格隔开,分别是单词在文章中出现的次数和第一次出现的位置(即在文章中第一次出现时,单词首字母在文章中的位置,位置从 00 开始);

2024-10-05 15:19:19 1066

空空如也

空空如也

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

TA关注的人

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