自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 G.人生的起落(2024牛客寒假训练营6)

2、当2*k+1==n时,这种情况注意一下细节,注意一下y的取值可能各不相同,另外提供两种测试案例供大家测试:11 32 5 和 11 33 5。3、当2*k+1<n时,在三元组(2,1,2)的基础上构造即可,注意5 8 1 需要输出2 1 2 2 1(保证三元组恰好为一个)。1、当2*k+1>n时,很显然无法构造。可以分为三类情况分开讨论。

2024-03-01 22:56:01 343

原创 I.时空的交织(2024牛客寒假训练营6)

(b1+b2)*(a1+a2+a3)的最大值即可,注意全正,全负以及有正有负的情况。假设n=4,m=3;

2024-02-29 21:10:32 330

原创 F.命运的抉择(2024牛客寒假训练营6)

当数组中没有1的时候,需要将数组a中所有数字的质因数存下(可以存放在vector<int>v[N]中),然后将含有公共因子的数字分在一组。当a数组中有1的时候,直接将该1分配给数组b,剩下的其他元素分配给数组c;2、将公共因子的数字分在一组需要循环多次。

2024-02-29 19:26:59 365

原创 H.sakiko的排列构造(hard)(2024牛客寒假训练营5)

思路与easy版本如出一辙。

2024-02-28 15:48:42 382 1

原创 G.sakiko的排列构造(easy)(2024牛客寒假训练营5)

观察这三组数字的特征可以发现他们都是降序排列的,且在每一组数内部pi+i都相等且都是素数,而前面刚好是后面的子问题。说白了就是拿着n在【1,n】区间内部搜索找到第一个素数之后其他的递减填入p数组中即可。

2024-02-28 15:46:46 352 1

原创 F.soyorin的数组操作(hard)(2024牛客寒假训练营5)

求最少操作次数其实就是在有解的前提下求a[i-1]-a[i]的最大值即可。当然数组长度为偶数的时候肯定有解,但奇数的时候可以通过本题的easy版本来判断。

2024-02-28 08:43:49 372 1

原创 E.soyorin的数组操作(easy)(2024牛客寒假训练营5)

当数组的长度为奇数时,将每个数都加至它的极限值,最后判断一下是否为非降序即可。当数组的长度为偶数时,很显然k直接等于n总能将数组变成非降序。要变成非降序应使选择的区间尽可能大,操作的次数尽可能多。

2024-02-27 19:24:32 359

原创 B.tomorin的字符串迷茫值(2024牛客寒假训练营5)

每种情况的对答案的贡献就是其前面删除非连续字符的方案数和其后面删除非连续字符的方案数的乘积。对于方案数的获取我们可以预处理,其实就是递推一下,设f[i]为长度为i的字符串删除非连续字符的方案数,那么第一种情况:假设删掉第i个字符串那么第i-1个字符必留,总共的方案数为f[i-2],如果第i个字符串留下,那么总方案数为f[i-1],所以f[i]=f[i-1]+f[i-2]。其中f[1]=2(要么留,要么不留),f[2]=3。(存的时候别忘了取模哦,不然可能爆long long)

2024-02-26 21:55:57 325 1

原创 G.数三角形(easy)(2024牛客寒假训练营4)

需要预存一下连续的‘*’有多少,以备判等腰三角形的时候用(不然会超时哦)其中的非0数字就是其以及其左边连续的‘*’的个数。思路解析:可以枚举顶点然后判等腰三角形。

2024-02-24 11:36:18 311

原创 E.漂亮数组(2024牛客寒假训练营4)

由此可知俩0刚好相等就意味着从匹配到俩相等的数的第一个数后的一个数(这里是2已标红)起,到另外一个相等的数(另一个0)结束这一段刚好是原数组中的5跟1,这样就分好了组。如何在遍历到1的时候使得5跟1快速匹配而被分到一组当中呢?建议使用set容器(方法:count())来匹配相等的数。还是不好看,对题目描述的k(这里为3)取模再来观察。我们使用前缀和来观察一下。

2024-02-23 22:04:23 310

原创 G.智乃的比较函数(easy version)(2024牛客寒假训练营3)

题目大意:是否有逻辑问题。

2024-02-14 22:06:19 348 1

原创 K.Tokitsukaze and Password (easy)(2024牛客寒假训练营2)

思路解析:无脑暴力枚举。(计数可能会有重复,建议使用容器set或map来去重)题目大意:求符合要求的密码的个数。

2024-02-11 20:58:01 768 1

原创 Tokitsukaze and Short Path (minus)(2024牛客寒假训练营2)

,本题想要求最短路的话就得考虑绕路了,举个栗子:假如排完序后的权值为:1,2,4,5,8,9;索引为1,2,3,4,5,6,那么从索引1到其他点的最短路就是2,但如果从索引3到4的距离不是2*a[3]=8,而是经过索引1绕的路的距离:2*a[1]+2*a[1]=4,绕路只能通过索引1来绕,因为其值最小。(注意开long long 哦)二话不说,拆开绝对值来看,不难看出w(u,v)=2min(题目大意:求最短路的总合。

2024-02-08 22:56:35 381

原创 Tokitsukaze and Eliminate (hard)(2024牛客寒假训练营2)

要使得删除宝石需要的操作尽可能少,每次操作应删掉尽可能多的宝石。可以将n个索引归属到属于该索引下的数值的集合(数值集合)中,我这里是用deque<int>v[200010](要作为全局变量,因为作为局部变量空间受限)来储存索引。然后找到在数组中最后出现的元素中索引最小的元素,以此为界并在前面提到的数值集合中删掉其以及其后面所有元素的索引并记录答案(该过程可以与寻找前面提到的寻找索引最小元素同时进行,不然可能会超时哦~)。操作次数为1,因为一次操作选择5就会将5以及5后面的所有数字删除。

2024-02-08 21:46:09 445

原创 D.数组成鸡(2024牛客寒假训练营)

我们可以用一个set容器处理一下重复的元素,当该数组里互不相同的元素<=16的时候才在我们的考虑范围之内,因为最好的一种情况就是(8!)^2>1e9超过了M的范围。可以对数组里的元素从小到大排个序,然后枚举答案,重点关注开头两个元素和末尾两个元素,不管是开头还是末尾,其两个元素的都要小于。枚举有限次加一减一操作组成答案集,看所询问的M是否在答案集中。关键要对某些不必要的操作进行剪枝处理。题目大意:经过多次操作(数组全+1/-1)后,能否使数组所有数的乘积等于整数M。

2024-02-08 11:08:48 436

原创 H.01背包,但是bit(2024牛客寒假训练营)

思路解析:本题实际上是一道二进制相关的题目。因重量需要按位或运算,我们将m转化为二进制来看,要想背包放的物品尽可能多,那么m转化为二进制后1的个数应尽可能多。题目大意:使尽可能多的物品放入背包使得价值之和最大。

2024-02-07 11:11:11 383 1

原创 I. Tokitsukaze and Short Path (plus)(2024牛客寒假训练营2)

很显然,任意两点间的最短距离就是该两点的直接距离,假设我们绕路的话从u到v的权值就是2*max(观察表可得ans=2*(2*b+4*c+6*d+8*e)=4*(b+2*c+3*d+4*e)。我们先对顶点的值排个序,假设小到大排序的顶点值的为a,b,c,d,e,f。本题有点误导性,若使用dijkstra算法计算最短路的话会超时,那该咋办呢?将计算边权的绝对值拆开来看就是。题目大意:求所有最短路之和。

2024-02-06 13:11:43 382

原创 I.It‘s bertrand paradox. Again!(2024牛客寒假训练营)

题目本质是将两份作业区分开来,所以我们想办法找一个特征值即可,举一个简单的例子:假设我们拿生成的半径的期望作为特征值,假设我们选取的特征值为20,那么对于小于20的特征值就是一名同学的作业,大于20的另外一个特征值就是另外一名同学的作业,那么问题来了,特征值如何找呢?其实我们可以在本地编译器上跑代码,随机生成一些符合条件的数值然后求期望即可。

2024-02-05 21:30:32 432 1

原创 G.why买外卖(2024牛客寒假训练营)

因为有满减优惠,所以根据贪心策略即尽可能多的使用优惠券,但优惠券有使用门槛,我们要使的手里的钱加上减的。用pair<long long,long long>存下。(越大越好,因为可以买到更多的食物)。求一下前缀和存到b[N]数组里,然后枚举寻找答案。题目大意:拿最少的钱买尽可能多的东西。储存到vector容器中,然后将。

2024-02-05 11:58:50 362 1

原创 F.鸡数题!(2024牛客寒假训练营)

假设n=3,m=2,将3个1分到2个格子里,注意每个1都是不同的,假设三个1的代号分别为a,b,c,则可以有{a,{b,c}},{b,{a,c}},{c,{a,b}}三种分法,即a1,a2可以分别为{001,110},{010,101},{011,100}三种情况。转化为二进制后为111111...(n个),结合条件四及条件一二来考虑的话题目的要求就是将n个不同的1分配给m个格子里,问有多少种分法,形象一点来说就是把n个不同的球分配到m个相同的盒子里,不能有空盒子(即条件一),有多少种分发?

2024-02-04 17:43:20 415 1

原创 E.本题又主要考察了贪心(2024牛客寒假训练营)

虽然本题的标题是“本题又主要考察了贪心”,但不要被忽悠了哦,本题由于n和m的范围较小,适合用暴力的方法去解决。比较实用的方法是暴力搜索dfs。对于本题来说如果使用降序排列在某些情况下是不友好的,例如:假设一号选手在某次比赛的总积分为4,若使用降序则找到的元素为5。upper_bound()函数是在有序序列中寻找>=目标值x的元素位置,返回值为指向范围。中首个符合条件的元素的迭代器,或者在找不到这种元素时返回 last(迭代器)。题目大意:在目前积分的基础上寻找一次最佳的比赛使得一号选手排名尽可能的在前。

2024-02-03 20:41:16 346

原创 B.关鸡(2024牛客训练营)

建议使用set<pair<int,int>>v 容器来储存火的坐标,因为可以通过调用类方法count快速判断曼哈顿距离为1或2的火是否存在。题目最终被分为两类情况,一类情况就是在鸡的周围添加三个着火点,另一类情况是在鸡周围添加。注意添加四个着火点时应使得上下火的曼哈顿距离为1或2。题目大意:至少添加多少着火点才能困住鸡。

2024-02-03 18:49:47 441

空空如也

空空如也

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

TA关注的人

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