- 博客(23)
- 收藏
- 关注
原创 牛客周赛63
red 长度只有3 用线段树维护 r,e,d,re,rd,ed,red,ew,de,dr,der。搜索 l r是只需要搜 0~l-1 l~r r+1,n。正常bfs走,当当前位置与(1,1)一样时才能走。暴力最多进行 (n-k+1)*k次。简单的判断两位数,且十位等于个位。反转l~r,然后将三个区间合并。小红的 red 计数。总体时间越nlogn。
2024-10-17 21:13:19 380
原创 最近的优质好厂
先给数据分号l,r进行差分,然后对每一个位置进行特判,当要移走的是这个位置这个位置的贡献变化,之后对贡献变化前缀和,然后遍历每一个木板,把这个木板移走后的总贡献最大化输出。我们快排一下找到数组中两个数的使之异或最小即可,当有两个数相同的话就,异或是0,就是数组的最小的,可以去重一下,代码如下。用线段树,维护当前串的左端最大,右端最大,总体最大,总体0,1总和(这里把0看成了负无穷)。直接统计01数组中0,1的个数,c0,c1;前几天的cf,div4的f题,一个组合数。这个用于找到x,y的为父亲的子树节点,
2024-08-08 10:30:47 444 4
原创 栈(基于动态顺序表实现的栈)
关于栈的性质咳咳栈:栈是一种特殊的线性表,其中只让在一端插入和删除元素。后进先出进行插入删除的那一端叫栈顶,另一端叫栈底我们实现的栈是基于一个动态顺序表的的栈,会实现栈的 入栈,出栈,获取栈顶元素,获取栈中元素个数,判断栈是否为空(纯c语言版本)操作的命名如下。
2024-05-23 18:41:22 467 5
原创 动态内存管理()
又是会王们发现过去申请的空间太小了,有时候我们又会认为申请的的空间过大了,那为了合理的使用内尺寸,我们一定会对内存的大希奥动作灵活的调整。返回值的类型是void* ,所以maclloc函数并不知道开辟空间的类型,具体在使用的时候使用者自己来决定。函数的功能是为num个大小为size 的元素开辟一块空间,并且把空间的每一个自觉初始化为0。这个函数调整原内存空间大小的基础上,还会将原来内存中的数据移动移动到性的空间。如果参数 ptr指向的空间不是动态开辟的,那free函数的行为是未定义的。
2024-04-26 18:46:10 363 1
原创 马拉车算法
那么针对以上问题,我们可以枚举每个位置,以这个位置为中心,向外扩展,扩展到最大,维护一个最长的回文串,但是如果是偶数串的话,那么在没有中心我们要怎么办,方法是在每两个字符之间插入一个与问题毫无相关的字符。你是不是这样想的,这个r的意义是回文串长度的一半,r*2得到的是新串中某个回文串的长度,在r*2/2的到的是原串的长度,即。在对以b为中心枚举回文串后,如果在往右边枚举下一个中心,在以b为中心向外扩展的里面 那么我们在以这个为中心扩展时,在b的左边是否以经进行了相同的操作。新串中r即使原串的回文串长度。
2024-04-20 14:54:37 403 6
原创 01背包,完全背包
现在有一个背包 背包容量为 m 还有n件物品,每件物品有自己的所占的容量 v 与价值 w ,每件物品只能取一次或者不取,求在背包容量为m时可取的最大价值。
2024-03-28 22:55:51 759 2
原创 STL中queue详解
写个仿函数 就按照这样int a, b;}node;//每次输入小的在队首 (注意这个比较规则)//在 sort 自定义排序函数中 这个是降序排列i < 5;return 0;
2024-03-26 20:08:31 263 3
原创 快速幂算法
我们求a的n次方,就是利用数学函数 pow(a,n);//这里介绍一下,另有种,快速幂算法我们通过指数变成2进制,二进制中0出现的话,就相当于消去.下面是实现。
2024-03-09 21:14:28 391 1
原创 前缀和(凑个字数)
前缀和就是,比如说,我们求一段区间数组中的和求下标为3~7(包括端点)这个区间的和。如果暴力的话就会这样这样难免有些复杂度。但如果这样 我们创建一个brr数组,数组的每一项是arr对应下标前所有的元素和,即那么如果我们求3~7这段下标区间的和是不是可以这样表示我们要得到arr[3]+arr[4]+arr[5]+arr[6]+arr[7];仅仅需要brr[7]-brr[2]即可这是没有用前缀和的操作。
2024-02-20 14:41:37 979 3
原创 浅谈下利用vector对map进行一种排序
pair可以将两个数据放在一起,跟结构体似的,位于第一个的数据是key,这相当与一个索引,位于第二个的相当于key对应的值。//这种方法,可以将a中的元素拷贝到b中。我们都知道在STL种map是对key进行一种升序。那么如果我们想对得到map中value进行排序呢。那访问索引就是 a.first,访问值就是a.second啦。比如:pair<string,int>a("abc",3);然后就可以用sort对arr进行排序啦。
2024-02-13 22:36:23 403 1
原创 关于c++中的引用
引用:引用是为队形起了另外的一个名字,引用类型引用另外i中类型,通过将声名符下而成&s2的。这样过后s2与s1相当于一个人的两个名字,s2 不是 s1的临时拷贝,引用跟指针很像。引用实际是声明一个变量的另一个名字,别如,string s1=“abcde";数组名在一些情况中可以认为是首元素的地址即是指针,因此可以引用,引用传参可以改变实参的值,他跟指针传参是可以理解成一样的。但然关于引用还要注意,引用在声明是就应该有引用对象。形式来定义引用类型,其中s2是声明的变量名。ref即是arr的另一种名字。
2024-02-11 20:24:58 378 1
原创 c++基础(1)string类型
c++提供了一个字符串类型string下面是string类型的声明与初始化string 拷贝在c语言中是利用strcpy()函数,在c++中直接画等号就行,比如:string s1;这样s2存储的字符串就与s1相同其实在c语言中,存一个字符串,就是用一个字符数组,,字符串的比较规则,学过c语言的应该知道,那么在c语言中字符串的比较用到一个函数,strcmp(),在c++中就简单多了,直接用(s1>s2)直接可以用大于号小于号进行比较就行。
2024-02-02 11:43:36 360
原创 关于二分查找的一些问题
讲的很模糊,具体可以看着模板,尝试下,调试下,注意下,如果所有元素的都小于目标值,返回的下标是,数组最后一个元素的下标。eg. a[11]={0,1,2,3,4,5,6,6,8,9,10)中找第一个大于等于7得下标;eg, 在a[11]={0,1,2,3,4,5,6,7,8,9,10)中找7;这里,我们在想,比如,在升序中,找第一个大于等于目标值得下标。1.在升序中找第一个大于等于key(目标)的模板。,这在c++中有两个函数原理,差不多相同。然后 ,mid=7,left=7,退出。
2024-01-31 12:27:00 365
原创 STL容器(c++)(入门)(其一)
1.set2.multiset这两个容器,不同点就是multiset允许元素重复,set不允许重复我们只谈论set有很多函数与上面vector大差不差上图就是自动排序了啊对把。
2024-01-19 09:35:05 897 1
原创 二分查找问题
明显如果要在0-100的递增数组找50的话 只需要进行一次上面的步骤但是如果要找的是7的话了就不是进行以一次了,下面是在0-100的递增数组找7。二分查找是在有序数组查找一个元素,比如在0-100递增数组中找7。二分查找每一次查找范围少一半复杂度O(log(角标2)N)\。针对这个这个问题我们先找50这个数,他的下标是49。如果说没找到那也就是没找到呗,总体上讲。
2024-01-10 13:42:32 454
原创 指向二维数组的指针
法1;123456789101112法2123456789101112法31004007001000法4随机数法5随机数法6//初始化二维数组元素为零0 0 00 0 00 0 00 0 0000000000000法7这样是对的但是这个二维数组一共有3行3列123456789。
2024-01-06 23:31:09 1072 1
原创 电文加密解密程序
做一个简单的短电文加密解密程序。短电文要求最长80个字符,电文允许出现键盘可以键入的任何英文字母。字符加密可以采用替代法,如:a->c,b->d,...,y->a,z->b,即字母变成其后的第2个字母。提示: 注意字母包括大写字母和小写字母。
2023-11-28 22:57:26 716
原创 用c语言,打印一个沙漏形状
int main()i > 0;i--)j > 0;j--)for (j = 1;j++)for ( i=2;i<=m+1;i++ )j > 0;j--)for (j = 1;j++)
2023-11-20 10:22:48 1314 1
空空如也
Vasya and Petya have invented a new game.
2024-01-25
TA创建的收藏夹 TA关注的收藏夹
TA关注的人