自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【力扣刷题】

在一个二维数组中,每一行都按照从左至右非递减的顺序排序,每一列都按照从上到下非递减的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是由含有该整数。就是在一个有序的二维数组中,让你快速的找到一个数,如果有就输出true,没有就输出false。遍历每一行,每一行进行二分,找是否存在这样的数,没有就遍历到下一行。------->想到了二分。

2023-02-08 00:53:59 129

原创 剑指 Offer II 119. 最长连续序列

我们观察i = 1 2 3 4,当i>=2的时候,都有i-1的存在,意思就是,除了第一个数字,后面的数字都有i-1的存在,这样才能是连续的,那么,起始点 1 我们可以看作是祖宗节点,而后面的2 3 4 都是 1 的后代,那么当我们遍历到 4 的时候,可以找到最大的长度就是4 (4 - 1 + 1) 了,后面也不存在一个数-1等于4了。首先什么是并查集,叫好比你父亲是你爷爷的儿子,你是你父亲的儿子,那么你和你父亲的祖先就是你爷爷,这就是并查集,用来找或者判断节点的祖先节点的。

2023-02-01 17:36:47 143

原创 [合并k个升序链表](力扣)

那么在这里,我们将每个链表的首元素放进优先队列中,放进去之后,每个元素的大小我们让它从小到大进行排序,但是这里我们虽然有了从小到达排序的值,但是对于每个链表中的其他元素该如何去放位置呢?加入一共有5个链表,先将1-2、3-4两两合并,得到的结果是(12)、(34)、5三个链表,在将前两个进行合并,得到(1234)、5两个链表,在进行最后的合并。给你一个链表数组,每个链表都已经按升序排列,请你将所有链表合并到一个升序链表中,返回合并后的链表。输出:[1, 21, 2, 3, 4, 4, 5, 6]

2023-01-31 23:35:42 254

原创 B. Chess Cheater

首先我们肯定是保证连胜的场次越多越好,最好是全部都能够赢,但是收到了k的限制,所以我们应该优先让两个’W’之间的’L’变为’W’,这样我们就可以制造尽可能多的连胜。那么接下来我们要找输掉了的场次,对于输掉了的场次也要分情况:首先我们要记录输掉了的场次,还要判断连输的场次,因为我们后面在修改场次的时候都是优先修改不是连输的、连输少的,这样贪的结果才是最优的。给了你一个字符串,'W’表示赢,‘L’表示输,赢可以加1分,如果赢的前一场也是赢,那么此时可以加两份,现在你可以修改k个地方,问你最高的分数。...

2022-08-18 10:23:35 139

原创 [线段树总结题单]

接下来思考移动了第一个数后逆序对的变化:假设在x这个位置,x-n中比它大的数为m个,那么比它小的数有n-m-1个,那么当它移动到末尾的时候,之前比它大的数会和它构成逆序对,那么逆序对的数目会增加,但是之前比它小的,在移动之前跟它构成逆序对,移动了之后逆序对会减少,所以移动之后的逆序对数目是(cnt表示初始的逆序对数目):cnt - (n-m-1) + m;(如果a[i]的范围不是1-n的话,我们可以进行离散化在求)。......

2022-08-17 16:24:19 137

原创 P3431 [POI2005]AUT-The Bus

DP:公交车在走的时候肯定是从近走到远,那么对于我们要走到的位置,我们肯定要进行排序,我们不妨将x作为第一关键字进行排序,而y作为第二关键字进行排序,假设我们现在走到了k个点中的第i个点,那么。给你一个n×m的网格,告诉你了k个网格中的信息,(x,y)这个位置有p个人,现在有一辆公交这在(1, 1),它只能向右或者向上走,最终会走到终点,问你最后可能载多少人。可以采用树状数组来进行维护,那么我们树状数组记录的就是最大值了,而不是前缀和了。,m的范围也是这样,所以我们想到了离散化,将坐标离散。......

2022-08-16 10:20:16 133

原创 B. Find the Spruce

的位置开始找,那么我们可以直接遍历一遍图,我们观察上面的图可以发现满足条件的规律,我们假设最上面的哪一个单独的位置的坐标为(i, j),那么如果有第二层,那么第二层最左边的坐标为(i+1, j-1),如果有第三层,那么第三层最左边的哪一个的坐标为(i + 2, j -2),那么我们发现下一层的最左边的那也个的坐标就是(i+层,j-层数),那么我们可以直接从这个下一层的最左边这个位置开始找,看以这个位置开始的’‘的个数是否满足条件,对于第一层,它的’*'的个数是1,第二层是3,第三层是5,那么就是满足。...

2022-08-15 16:22:29 127

原创 J. Robot Factory

现在给你一个n×m的矩阵,每个位置都有一个数,一个数的二进制从高位到底为一次表示北东南西,如果该二进制为是1,说明这个面有墙,反之则没有墙,现在让你求这个矩阵中所有连通的面积,并且从大到小输出。...

2022-08-12 10:51:47 83

原创 D. Blue-Red Permutation

n-3、n-2、n-1、n的,对于能够减的数字,我们是希望它最后是能够组成1、2、3。,那么我们将红色的数字和蓝色的数字分别放进两个容器,单独对他们进行改变,我们对红色的数字进行从小到大进行排序,对于蓝色的数字我们从大到小进行排序,然后单独的对他们进行判断。给了你 一个大小为n的数组,没个位置都有一个数字和一个颜色,如果这个地方的颜色为红色, 那么这个位置的数字可以+1,如果为蓝色,那么这个地方的颜色可以-1,现在问你是否可以让这个数组中的数字都是1~n,并且只出现过一次。...

2022-08-12 10:24:13 143

原创 [USACO17DEC]Milk Measurement S

有n头牛,每头牛的初始产奶量是m,接下来n行,每一行有三个数,分别表示日期,牛奶的编号,产奶量的变化之,表示在这天,这个编号的奶牛的产奶量会变化,现在问你最终,产奶量最高的奶牛的变化次数。(数量或者产奶量最高的奶牛编号的变化)离散化+线段树首先奶牛的编号为1-1e9,那么肯定对于编号我们要使用离散化。...

2022-08-09 14:32:06 223

原创 Codeforces Round #778 (Div. 1 + Div. 2, based on Technocup 2022 Final Round) C. Alice and the Cake

首先,我们可以根据给你的蛋糕得到初始的蛋糕大小,然后我们现在可以模拟切蛋糕的方式,假设蛋糕的初始大小为sum,并且出现的大小为mp[x],那么我们可以从最初的大小开始切,没切一刀,判断且完后的两块蛋糕是否出现过,如果出现过,我们就不动这一块,转战另一块,否则就切这一块蛋糕,一分为二。你现在有一块蛋糕,你可以切n-1刀,且完后的两块,一块是x/2,一块是(x+1)/2,现在告诉你切完之后的有n块,并告诉你每一块的大小,现在问你能否得到蛋糕的初始大小,并且执行了n-1次操作后变为给你的蛋糕大小。...

2022-08-07 16:24:34 96

原创 P1462 通往奥格瑞玛的道路

现在有n个城市,编号为1-n,起点为1,终点为n,有m条双向的公路,你现在有b单位的血量,每一条路会损失c[i]单位的血量,然后没经过一个城市会花费f[i]元,现在让你求:从1-n这条路径上的最大花费的最小值。:二分花费,假如我们现在的花费为x,当x的值越大,那么我们可以走到的地方越远,那么我们可以知道,花费对于我们所走的路程是存在单调递增的,所以可以用二分来寻找我们所要找的最大花费的最小值。,那么就是找最短路。...

2022-08-07 10:48:47 140

原创 [USACO18FEB]Snow Boots G

[USACO18FEB]Snow Boots G题意现在有n块地砖,除了第一块地砖和最后一块地砖,其余每一块地砖都堆积了高度为a[i]的雪,你现在有b双鞋子,没双鞋子最多可以在高度为d的雪地上走s步,现在问你那些鞋子可以走完这段路。思路线段树(单点修改)+离线(因为询问具有单调性,所以我们可以使用离线来做)我们假设一个位置为1表示可以走,为0表示不可以走。我们在计算某双鞋子能否走过这段路,只需要判断当前情况下,这双鞋子能够走的步数是否大于连续的0的个数。最开始,我们将所有的位置都设置为0,表示

2022-08-05 23:19:48 129

原创 Codeforces Round #811 (Div. 3) E. Add Modulo 10

现在来看第二幅图,我们可以发现,对于个位是6的这些数字,无论怎么累计,只要个位出现了6,它的除去各位以外的位置,它的奇偶性是不改变的,就比如第二行,2 4 8 16……这一行,我们观察个位为6嗦出现的位置,36 56 76 96这些数字,它的是为都是奇数,而出现2 4 8 6的这些位置它们的十位都是偶数,那么我们会发现,个位为6是个特例,它累加后的结果与其他数字累加的结果的奇偶会不相同,那么个位为6的我们要单独考虑:。...

2022-08-04 23:31:13 140

原创 P1607 [USACO09FEB]Fair Shuttle G

假设当前的车上的牛已经满了,如果我们将之前的牛提出,那么就不能将它们送到终点,这样得到的结果肯定会小,那么,如果当前的要上车的奶牛要上车,但是它的目的地非常远,那么对后面的目的地比当前牛的目的地更近的牛是非常不利的,所以我们要按照这样的规则排序。现在又n头牛,分成了k组,每一组有三个值,s、e、m,分别表示,这一组牛从s到e,并且这一组里面有m头牛,现在有一辆车,一次只能装c头牛,并且是从1号位置开到n号位置,单向开,现在问你最多有多少头牛能够乘坐车从它的起始位置到它的终点位置。...

2022-08-04 18:50:58 109

原创 P1875 佳佳的魔法药水

我们现在知道没个点的代价,我们可以选择任意的两个点开始进入,或者直接选择1号点(但是代价可能会很大),其实它的本质还是最短路,只不过这里是要选择两个点罢了,这里的代价相当于就是边权,我们假设一个不存在的点(在路径外面),我们现在要从这个点到达1号点,要求是路径最短,那么就是一个最短路,我们最开始知道这个点到每个点的路径花费,那么我们直接存入优先队列中,后面直接是dijstra了,我们每次从花费最小的入手,现在想一下我们能够到达下一个点的条件是啥?...

2022-07-29 23:11:28 123

原创 P1608 路径统计

给你n个点,现在要从1走到n,现在告诉你了m对关系,表示x-y之间的花费,让你输出最少的花费和最少的路径总数。两个不同的最短路方案要求路径长度相同(均为最短路长度)且至少又一条边步重合。,我们就要单独判断是否有重边,当有重边的时候我们要将原来的边权更新对吧,所以要做一下操作。首先,一个点的最短路数就是这个点的前几的最短路数之和,因为从上一个点过来都是同一条路。但是当我们要更新某一段路径的最短路的时候,我们还要更新这段路的最短路数,...

2022-07-28 10:22:57 187

原创 P5837 [USACO19DEC]Milk Pumping G

就好了,还有一点就是,我们在跑最短路的时候,是通过松弛来实现的对吧,我上面说错了,我说的是直接找最短路径即可.但是这个题不单单是求最短路,它是要让你找比值最大的,可能有些是最短路径虽然很短,但是它的最小流量与它的比值可能没有那么最短路不一定是最短的,但是比值反而更大,所以这个时候我们要不断的枚举每条路的流量,在松弛之前,判断一下此时这条边的流量是否大于我们枚举的这个流量,满足就添加到堆里面,反之就不添加....

2022-07-27 21:09:48 175

原创 P3906 Geodetic集合

给了你一个无向连通图,每两个点至多有一天边连接。让你求给定x-y路径中的所有点。

2022-07-26 21:08:24 124

原创 HDU 4848 Wow! Such Conquering!

首先题中给了你每个星球之间互相到达的时间,然后让你访问所有的点。首先,我们可以根据弗洛伊德求出每两个点之间的最短时间,然后进行深搜,从起点搜到终点,在这个过程正,每个点都要保证到达的时间是不大于它的截止时间的。现在有n个星球,你现在处于第一个星球,然后下面给了你一个星球到达另外一个星球的时间,然后给你了到达2-n号星球的截止时间,现在让你求是否能够在规定的时间内,把每个星球都访问一次。这两个剪枝我最开始都没有想到,而且判断的位置错了,我把第二个剪枝放在了循环里面,那么这样的话,每一次都会计算一次。...

2022-07-26 12:44:55 82

原创 Codeforces Round #810 (Div. 2) B-C

假如不存在朋友关系为奇数的,那么我们直接选择不邀请一对人,他们的朋友关系为奇数。给你一个n×m的网格,然后又k中颜料,每一种颜料有a[i]个,现在让你涂颜色,定义漂亮是每一个被涂色的网格,它的四周都有至少三个跟它颜色一样的格子(ps如果处于最后一行,那么第一后也算它的旁边,最后一列也是,第一行同理)。现在有n个人,每个人有一个不高兴值a[i],然后这n个人中存在m对关系,表示某两个人是朋友,如果这对朋友被邀请了,那么他们会吃一块蛋糕,要求吃的蛋糕的数量必须是偶数,在这样的条件下,找出最小的不高兴值。...

2022-07-25 22:34:13 73

原创 Codeforces Round #808 (Div. 2) C - Doremy‘s IQ

贪心当q不为0的时候,你可以解决这道题,那么如果在前面你将q耗完了,后面可能还会有更多的机会使你的q不变,那么我们尽可能的让q消耗在后面,那么得到的结果更优。ps我们在二分的时候是先判断t,然后在进行判断的,最开始的时候我是先判断a[i]和t的大小的,这样的话,当你的t为0的时候也是满足条件的,这样的话,你得到的结果就会偏后,所以我们应该先判断t是否为0。现在你的智商是q,一共有n个题,当q不为0的时候,可以解决这个题,但是,如果q小于这个题的难度,q会减一,反之就不变,问你最多可以做多少道题?...

2022-07-24 22:04:27 80

原创 B. Preparing for Merge Sort

所以换了一个思路,我们每一次输出,都是输出顺序的,那么对于这一组数中,每一个数都是大于它前面那个数的第一个位置,所以想到了用二分的方法,我们每一次寻找大于这个数的第一个位置,然后将这个数加入到一个vector中,并且将这个位置的数替换成当前这个数。如图(我们用测试样例13254)最开始我想的是用树状数组,因为想到了树状数组求逆序对,那么树状数组肯定是可以求顺序对的,但是有一个问题是,用树状数组只能找到顺序对的个数,并不能将它输出出来(应该可以吧,反正我不会)。......

2022-07-23 22:48:14 103

原创 P1119 灾后重建

回到这个题,这个题可以用Dijkstra或者SPFA。这个时候我们一次遍历每个节点,以这个节点为中转站,来进行更新,这个时候中转站的重建时间要比给定的时间要小,然后在来求两个点之间的最短距离即可。首先要知道Floyd算法的本质,它实质是一个dp,可以这么说,一个点到另外一个点,它们之间有n个中转站,你现在要找一个使这两个点的距离最近的中转站,就是这么个意思。n个村庄的编号从0-n-1,现在又m条马路连接,但是每条马路有一个连通的时间,你需要回答q个问题,问你a到b在第t天的时候的最短路径是多少?...

2022-07-23 20:57:01 81

原创 P3905 道路重建

首先,我们毁坏了一些道路,然后修复指定的道路,这个就相当于是,我们现在只连接了毁坏的这些道路,让你求A-B之间的最短距离。那么我们可以在开始建树的时候将所有告诉你的路线的距离全部设置为0,后面在毁坏的时候在添加距离,在跑一边dijkstra,输出dis[B]即可。现在毁坏了其中的d条条路,现在让你重新连接A到B之间的道路,问求修复的道路长度最小。SPFA的思路是一样的,最开始的时候只记录不赋值,在毁边的时候才赋值。...

2022-07-22 23:38:27 235

原创 Educational Codeforces Round 132 (Rated for Div. 2) D

假设我们设这两个点之间障碍最大的的纵坐标为x,那么是不是我们必须从这个纵坐标上面走过去即可,所以我们这里要找到这两个点之间阻碍最大的高度即可,所以我们可以用线段树来维护。然后每一列,从下到上有连续的阻碍,现在给你机器人的文起始位置和终点位置,你不能去有阻碍的地方,也不能超出网格,然后给你一个k,你一次性只能上下左右连续走k步,现在又q次询问,问你是否能够到达目的地。现在我们想一下,满足了第一种情况后,该怎么走,如下图(绿色代表是阻碍,蓝色是起点,粉色时终点,其实只要晓得两个点就行。...

2022-07-22 22:31:59 134

原创 Educational Codeforces Round 131 (Rated for Div. 2) C. Schedule Management

链接n个人,完成m个任务,一个长度为n的数组,告诉了你每个任务的最合适人选,如果是最合适人选,完成这个任务只需要1小时,反之则需要两小时,现在问你完成者m个任务的最短时间。让你求最短的时间,假设我们设最短的时间为t,那么如果时间大于t,肯定是能完成任务的,小于t则完成不了,所以完成时间存在单调性,我们可以用二分。既然我们是二分的最短时间,对于某一个工人来说,如果他能完成的最合适的任务有mp[i]个,当mp[i]...

2022-07-13 16:55:52 88

原创 P3970 [TJOI2014]上升子序列

链接给你一个大小为n的序列,让你求上升子序列的个数,其中不能算上重复的元素,长度至少为2。这个跟之前做的那个P2344 [USACO11FEB]Generic Cow Protests G有点类似,这两个题的实质都是一个dp。回到这个题,假设我们设dp[i]表示以第i个点为止,所求得的方案数,那么如果我们直接暴力,可以在O(N2N^2N2)的时间复杂度内计算得到答案,但是这个题的标签是个数据结构,那么就可以往线段树或者树状数组上面靠(我目前只会这两个)。题目中说了,意思是会存在重复的元素,那么就想到了离

2022-07-12 22:22:00 263

原创 P3660 [USACO17FEB]Why Did the Cow Cross the Road III G

链接简单的树状数组现在告诉了你一个线段上有2*n个点,告诉了你每个点从这条线段上的那个点进入,那个点出去,让你求交叉的点的对数如图所示,按照题目中给出的案例,我们发现了一共有三对交叉的点,那么怎么求呢?我们先观察与3这个点交叉的点,分别是2和1,假设最开始我们线连接3这个点的进入点和出入点,然后顺次连2,会发现这个时候会有一个交叉对,我们发现,3和2相交满足的条件是:3的左端点位于2的左端点的左侧,3的右端点位于2的右端点的右边,(4不和任何点相交,我们就不考虑了),再来添加1这个点,当我们添加1这个点

2022-07-12 17:41:23 110

原创 P2344 [USACO11FEB]Generic Cow Protests G

链接一共n头奶牛,每头奶牛有一个值aia_iai​,(−104

2022-07-11 22:45:53 180

原创 【无标题】Codeforces Round #782 (Div. 2) A-C

链接给了你n,r,b,r+b=n,r>b,n表示字符串长度,r表示’R’的个数,b表示’B’的个数,现在让你求一个字符串,其中连续的R最小。首先b个B最多可以将r个R分成b+1段,那么每一段中,包含的R的数量为:,那么现在均分完后,剩余r的数量为:,剩余的r依次假如每一段中,这个时候得到的就是连续的R的数量最小:B链接给了你一个长度为n的01字符串,你最多可以做n次操作,每次选择一个位置,这个位置不变,其他位置0->1,1->0,问你怎样变化能使这个字符串的字典序最大,输出变化之后的字符串,在输出每个位

2022-07-09 17:19:17 85

原创 Codeforces Round #751 (Div. 2) B. Divine Array

链接最开始给了你一个长度为n的数组,现在会执行这种操作无限次,更新这个数组,每个数的值更新为这个数出现的次数,现在会问你q次,每次给你一个x和k,问你第k次操作后,数组的第x位置的值。虽然这个题只有1100,但是我感觉真的好难,先手动模拟了一下这个过程,然后发现他在询问你的时候,每次询问的操作次数都是不固定的,可能会有先问你第5次,再问你第2次,那么如果是暴力的话,每次都会从头开始操作,那么这样就太麻烦了,然后想到了,我只需要记录他执行了那些操作,(操作到第几次),那么我后面直接从第0次开始操作,如果有它问

2022-07-08 00:08:45 98

原创 CodeCraft-22 and Codeforces Round #795 (Div. 2) B - C

链接给你n个数,它们的顺序是非递减的,问你现在是否有一种排列顺序让排列后的顺序与原顺序相同,如果有输出排列后的坐标,没有输出-1既然要是非递减的顺序,那么每个数出现的次数必须是大于等于2的,这样交换了两个位置才不会出现比原来值小的情况。因此我们只需要判断是否出现过的每个数的次数都是大于等于2的,如果是,将这几个相同的位置,内部进行顺序交换即可。代码:C链接给你一个01字符串s,d[i] = s[i][i + 1],01 = 1,10 = 10,11= 11,让你求它们的和。最先没有读到只能交换相邻的两

2022-07-07 15:34:03 121

原创 [线段树]P2894 [USACO08FEB]Hotel G

链接给你n个房间,编号从1-b,然后是m中操作,1 x,表示查询所有房间中有没有连续x个房间是开着的,如果有,输出最左边的编号,编号要尽量小,然后将这x房间全不入住,如果不存在就输出0。2 x y,表示将房间号为x–x + y - 1的房间退房。一个区间操作的线段树,首先看一下需要维护的值,因为是要找连续的空房,那么我们肯定要有一个sum来记录某段区间内的连续的空房数量,然是仅仅维护这一个值是肯定不够的,他不能是,因为题目中说的是连续的,如果是这种情况,一共有七个房间,左边的连续三个房间是1 2 3,右边的

2022-07-06 14:03:47 76

原创 洛谷 P2184 贪婪大陆

链接长度为n的防线,你可以在一个区间[l, r]中放一种地雷,m次操作和询问,1表示在[l, r]中添加一种地雷,2表示查询[l, r]中的地雷种数最开始想了一下,就觉得是个简单的区间修改,然后把线段树模板敲了上去,发现不对,但是题意就是这个呀,后面发现题读错了,最开始以为是区间内的每个点都会添加一个地雷,后面仔细读才发现是这个区间类只添加一种地雷,是叫你求这个区间内的地雷种数。其实不用线段数了,用先段数敲太多东西了,直接用树状数组,两个树状数组,这里来说一下,两个树状数组具体维护的是什么:这里我们按照

2022-07-05 20:24:19 114

原创 Educational Codeforces Round 130 (Rated for Div. 2) C. awoo‘s Favorite Problem

链接给了你两个长度为n的字符串s和t,每个字符串只包含’a’,‘b’或’c’,你现在可以对s执行两种操作,1.‘ab’=>‘ba’。2.'bc=>‘cb’,问你是否能够将s通过上面的操作转换t。首先来看两个字符串,abbc,它可以转换为三种字符串,babc,abcb,bacb,这三种情况都有一个共性,在排列顺序上来看,'a’始终是在’c’的前面的,我们我们可以得出一个结论,在给定的字符串中,'a’和’c’的相对位置是不改变的,在前面的转换后还是在前面, 在后面的转换后还是在后面,这是第一个性质,第二个性质就

2022-07-05 11:48:55 63

原创 Codeforces Round #800 (Div. 2) C. Directional Increase

链接你有一个数组大小为n,最开始为全0,你有一个指针,最初只想第一个元素。现在可以执行两个操作:1.指针指的位置的值加一,只要指针的当前位置不是最后一个。2.指针指的位置的值减一,只要指针的当前位置不是第一个。现在给你一个目标数组,问你能否通过上面的操作,让最初的数组变为目标数组,并且指针的指的位置是第一个。首先在第一个位置的时候,只能是往后移动,并且还有一点就是,数组的和一定是等于0的,以向右移动了多少,相应的向左就要移动多少,那么我们就知道,满足条件之一就是前缀和一定是=0的(因为最后还是要回到第

2022-06-28 12:54:49 152

原创 Codeforces Global Round 21 C. Fishingprince Plays With Array

(链接)[https://codeforces.com/contest/1696/problem/C]给了你两个数组a,b,a的长度是n,b的长度是n,然后告诉了你一个m。你先在可以执行以下操作:1.你可以将数组中的a[i]分解成m个(如果能够整数)。如果m = 2,[2, 3] => [1, 1, 3]。2.如果一段的连续的区间内,你可以将它变成x,如果a[i]*m = x。[3, 2, 2, 3] => [3, 4,3]。为你是否能够通过以上的操作,让a数组和数组对应的位置的值是一样的。现在可以执

2022-06-26 20:53:13 191

原创 Codeforces Round #802 (Div. 2)D. River Locks

(链接)[https://codeforces.com/contest/1700/problem/D]有n个河匣,告诉了你每个河匣的高度,然后每个河匣都有一根水管,每个水管一秒钟可以放一毫升的水。如果河匣中的水超过的自己的高度,会向下游溜。对你询问q次,每次给你一个时间,问你,在这个时间内,需要打开多少个水管才能让所有的河匣里面都装满水。我们直接将所有都河匣看成一个整体,因为多出来的水它会流向下一个,那么我们可以直接将它们看成一个整体,然后通过给定的时间再来×需要的水管数量,这样我们找到了这个时间段内所流出

2022-06-24 20:53:49 94

原创 Codeforces Round #802 (Div. 2) C. Helping the Nature

链接给了你个大小为a的数列,你现在可以执行三种操作:1. 选择一个i,1~i的所有数都-1。2. 选择一个i,i~n的所有数都-1。3. 所有的数都+1。问你让所有的数都变为0所需要的步骤。看到了这样的操作就因该想到差分了。让所有的数都为0,其实就是让差分数组全为0即可。那么上面的操作就是这样的(假设原数组为a,差分数组为s):1.s[1] - 1, s[i + 1] + 1。2.s[i] - 1。3.s[1] + 1。那么当s[i] < 0的时候,我们采取的操作是操作1,但是s[1]我们需

2022-06-23 21:57:46 221

空空如也

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

TA关注的人

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