自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Problem - 1637F - Towers(树形DP+思维)

题目大意:给定一棵树,每个点有自己的权值wiw_iwi​,你需要在其中若干个节点上造塔,塔的高度hih_ihi​就是造塔的花费,对于每个节点iii,必须保证存在两座塔,u,vu,vu,v,使得wi≤min(hu,hv)w_i\le min(h_u,h_v)wi​≤min(hu​,hv​),且iii位于u,vu,vu,v的简单路径上.求造塔的最小费用和.解题思路这个题有一个贪心的思想,首先需要考虑权值最大点的情况,为了满足最大点一定符合,那么最小的花费costmin≥2∗wmaxcost_{min}\.

2022-03-14 22:05:35 785

原创 Problem - 1430E - E. String Reversal(模拟+树状数组)

题目大意:给你一个长度为nnn的字符串,你每次可以选择相邻的两个字符进行交换,求最小的交换次数,使得进行若干次交换后字符串变为原字符串的倒序.解题思路:对于原串中的一个字符如果它不等于目标串位置的字符,那么它就需要跟原串中其他位置的目标字符进行交换,最优策略就是选择离当前位置最近的字符来进行交换,然后不断地模拟这个过程.用树状数组模拟,每个元素回到自己的位置取决于它前面有多少个元素,然后动态的去更新.#include<bits/stdc++.h>using namespace st.

2022-03-03 22:11:34 188

原创 Problem - 1444B - B. Divide and Sum(组合数学+思维)

题目大意:给你一个长度为2n2n2n的序列aaa,你将它们平均分成两组,对第一组做不递减排序,得到序列xxx,第二组做不递增排序,得到序列yyy,求对于所有的序列x,yx,yx,y∑1n∣xi−yi∣\sum_1^n|x_i-y_i|∑1n​∣xi​−yi​∣.解题思路:这个题可以打表,也可以分析,打表的话会发现,将序列aaa进行排序后,前nnn项只会与后nnn项进行运算,用一个整体的思想,这样的贡献值就是后nnn项的和减去前nnn项的和,然后乘以排列的个数就是答案.分析一下这个题,我们这样思考,.

2022-03-03 22:10:56 168

原创 Problem - 1470B - B. Strange Definition(质因数分解+思维)

题目大意:如果ai,aja_i,a_jai​,aj​满足lcm(ai,aj)gcd(ai,aj)\frac {lcm(a_i,a_j)} {gcd(a_i,a_j)}gcd(ai​,aj​)lcm(ai​,aj​)​为一个完全平方数,那么就称这两个数相邻,在一秒过后,一个数aia_iai​会变成所有和它相邻的数的积,求在某个时刻ttt时,相邻数字的最大个数.解题思路:首先思考相邻的数满足的定义,我们分别将ai,aja_i,a_jai​,aj​拆分可得ai=2x1∗3y1∗5z1∗..., .

2022-03-03 22:09:45 117

原创 Problem - 1475G - G. Strange Beauty(调和级数+dp)

题目大意:对于一个序列,如果对于任意的i,j(i≠j)i,j(i\neq j)i,j(i​=j)都满足gcd(ai,ai)=min(ai,aj)gcd(a_i, a_i)=min(a_i,a_j)gcd(ai​,ai​)=min(ai​,aj​),那么就称该序列为有效序列.你现在可以删除给定序列中的一些元素,求最少删除多少元素,可以使得整个序列变为有效序列.解题思路:我们首先考虑一下如何得到一个有效序列,枚举aia_iai​进行因式分解,然后再对其分解后的因子再因式分解,这样复杂度很显然是不可行的.

2022-03-02 13:16:19 99

原创 Problem - 1477B - B. Nezzar and Binary String(线段树+思维)

题目大意:·给定一个长度为nnn的仅由0,10,10,1组成的字符串,你需要进行qqq次操作,每次操作你需要保证区间[l,r][l,r][l,r]中的字符都相同,然后你可以修改小于⌈r−l2⌉\lceil \frac {r-l} 2\rceil⌈2r−l​⌉的任意个字符,求经过qqq此操作之后,能否保证每次操作时区间内字符都相同,且字符串sss可以变成目标字符串tartartar.解题思路:正向操作因为每次要先保证当前区间上字符都相同然后再进行操作,具体怎么操作不好确定,我们逆向思考一下.将目标串.

2022-03-02 13:15:40 95

原创 Problem - 1593D2 - D2. Half of Same(因数分解,暴力)

D2. Half of Same题目大意:给你nnn个数,你可以选择一个数kkk,然后将这个nnn个数中的任意个减去任意kkk的倍数,使得当前数组中有一个数出现次数大于等于n2\frac n 22n​,求最大的kkk,如果k→maxk\to maxk→max,输出−1-1−1.解题思路:首先考虑kkk无穷大的情况,当前情况下表示数组中已经存在一个数出现次数大于等于2n\frac 2 nn2​.然后我们考虑怎么去找最大的kkk,比较直接的做法是我们枚举ai,aja_i,a_jai​,aj​,然后枚举

2022-02-28 18:42:07 219

原创 Problem - 991E - E. Bus Number(排列+暴力)

E. Bus Number题目大意:给定一串数字A,A,A,你需要构造出一串数字BBB,满足AAA中的数字BBB中都要出现,BBB中出现的数字必须都在AAA中出现,BBB中出现数字的个数不能大于AAA中对应数字出现的个数,求数字串BBB的个数.解题思路:因为给定的数字串比较小,所以可以直接dfsdfsdfs求各种数字的使用情况,然后就是如何求带重复元素的排列,这个是这个题的一个关键点,正确的求法是Cna1∗Cn−a1a2∗Cn−a1−a2a3∗....Cn−a1−...−an−1anC_n^{a_

2022-02-26 15:10:37 155

原创 Problem - 986B - B. Petr and Permutations(排序的奇偶性)

B. Petr and Permutations题目大意:现给定一个nnn的排列,每次可以选择一组i,ji,ji,j交换pi,pjp_i,p_jpi​,pj​,AAA决定交换3n3n3n次,BBB决定交换7n+17n+17n+1次,现在给定打乱后的排列,判断该排列是由谁打乱的.解题思路:逆向思维一下,我们先把这个排列复原,看需要多少次交换,因为两个人的打乱次数一个是奇数次,一个是偶数次,且都大于我们复原排列的次数,那么我们只需要看交换的奇偶性来判断即可.#include<bits/std

2022-02-26 15:03:10 80

原创 Problem - 988D - D. Points and Powers of Two(思维)

D. Points and Powers of Two题目大意:给定若干个数xix_ixi​,找出其中一个子集,满足子集中任意两个数的差值的绝对值都是2x2^x2x,求最大数量的子集.解题思路:简单分析一下,一个符合条件的子集最多只能有333个元素,ai,ai+2j,ai+2j+1a_i,a_i+2^j,a_i+2^{j+1}ai​,ai​+2j,ai​+2j+1,这种情况下,才能保证任意两个元素差值都是2x2^x2x,然后直接枚举即可.#include<bits/stdc++.h&gt

2022-02-26 14:35:10 136

原创 Problem - 1038D - D. Slime(思维)

D. Slime题目大意:有长度为nnn的序列aaa,你每次可以选择一个aia_iai​,使得ai=ai−ai−1a_i=a_i-a_{i-1}ai​=ai​−ai−1​,然后删去ai−1a_{i-1}ai−1​,或ai=ai−ai+1a_i=a_i-a_{i+1}ai​=ai​−ai+1​,删去ai+1a_{i+1}ai+1​,求最后剩下的一个元素aia_iai​的最大值.解题思路:如果当前有正数和负数,那么一定可以将所有的数都作正收益,每次只需要先将负数向两边转移,直到把num正数−1num_

2022-02-24 16:58:40 450

原创 Problem - 1042D - D. Petya and Array(树状数组)

D. Petya and Array题目大意:给定长度为nnn的序列aaa,求出有多少组l,rl,rl,r使得al+al+1+al+2+....+ar<ta_l+a_{l+1}+a_{l+2}+....+a_r<tal​+al+1​+al+2​+....+ar​<t.解题思路:这题的关键点在于能否考虑到序列和用前缀和来表示,对于一对l,rl,rl,r只要满足prer−prel<tpre_r-pre_l<tprer​−prel​<t则符合,这个题可以转化为动态的插

2022-02-24 15:12:53 622

原创 Problem - 1129A2 - A2. Toy Train(暴力+贪心)

A2. Toy Train题目大意:一辆火车从111到nnn循环运动,有mmm个货物需要从uuu运输到vvv,求从111到nnn这些不同的站点出发,最少需要多久才能把所有的货物都送到.(火车在某个站一次只能装载一个货物,火车可以卸掉任意多的货物).解题思路:如何将总时间缩短,首先总时间一定受到每个站台货物数量的限制,如果某个站台的货物量numinum_inumi​是最大的,那么火车必须先跑完numi−1num_i-1numi​−1次循环,然后继续跑完当前的货物,还有一种需要考虑的情况是numi=n

2022-02-20 15:31:48 278

原创 Problem - 1077E - E. Thematic Contests(暴力+二分)

E. Thematic Contests题目大意:给定你若干个问题的主题,然后要求你构造一种讨论方案,使得每个讨论的问题主题都相同,且后一次的讨论问题数量是前一次的两倍,找出最多可以讨论的问题数量.解题思路:比较套路的暴力题,首相以222的倍数来递增,对于每次查找,它的复杂度是lognlog_nlogn​的,然后我们可以直接枚举第一个讨论的题目数量,这样总复杂度是nlognnlog_nnlogn​,数目经过离散化过,数据量会很小.对于每一次的处理,直接二分来看是否存在符合值,然后不断去更新.#

2022-02-19 23:38:17 169

原创 Problem - 1633D - D. Make Them Equal(dp变式)

D. Make Them Equal题目大意:你每次可以进行一次操作,选择i,xi,xi,x使得ai=ai+⌊aiy⌋a_i=a_i+\lfloor {a_i \over y} \rfloorai​=ai​+⌊yai​​⌋,当使得ai=bia_i=b_iai​=bi​时可以获得cic_ici​的奖励,求对于kkk次操作,可以获得的最大值.解题思路:很明显的背包问题,对于每次改变的量,我们用dpdpdp求一个最小花费,然后dpdpdp,这里唯一需要注意的点就是,ai≤1000a_i\le1000ai

2022-02-07 17:20:04 838

原创 Problem - 1632D - D. New Year Concert(二分+ST表)

D. New Year Concert题目大意:给定长度为nnn的序列aaa,对于长度为kkk的区间,1≤l≤r≤k1\le l\le r \le k1≤l≤r≤k,如果存在一组l,rl,rl,r使得gcd(al,al+1,al+2,...,ar)=r−l+1gcd(a_l,a_{l+1},a_{l+2},...,a_r)=r-l+1gcd(al​,al+1​,al+2​,...,ar​)=r−l+1,那么称这个区间不合格.你可以改变序列aaa中的任意一个数为任意正整数,现在求出f(a1),f(a1,a

2022-02-07 17:11:02 569 2

原创 Problem - 1148D - Codeforces(思维+排序)

Problem - D - Codeforces题目大意:现在给定nnn个pair<ai,bi>pair<a_i,b_i>pair<ai​,bi​>,满足ai,bia_i,b_iai​,bi​不重复且都小于等于2n2n2n,现在求将这些pairpairpair选出kkk个pairpairpair排列,使得形成的序列aibiajbj....anbna_ib_ia_jb_j....a_nb_nai​bi​aj​bj​....an​bn​满足x1<x2>x3&

2022-01-25 21:41:28 291

原创 Problem - 1152C - Codeforces(数学,gcd的性质)

Problem - C - Codeforces题目大意:给定a,ba,ba,b,求出最小的k使得lcm(a+k,b+k)lcm(a+k, b+k)lcm(a+k,b+k)最小.解题思路:根据gcd的性质可以得到gcd(a+k,b+k)=gcd(a−b,b+k)gcd(a+k, b+k)=gcd(a-b, b+k)gcd(a+k,b+k)=gcd(a−b,b+k),lcm(a+k,b+k)=(a+k)∗(b+k)gcd(a−b,b+k)lcm(a+k,b+k)={(a+k)*(b+k)\over

2022-01-25 21:32:49 373

原创 Problem - 1154E - Codeforces(双向链表+模拟)

Problem - E - Codeforces题目大意:有nnn个队员,他们的能力值符合nnn的排列,现在有两位教练要挑选队员,他们先选择当前队员里能力值最大的,然后选走该名队员左右各kkk个队员,两个教练依次选取,求每个队员最终属于哪个教练.解题思路:因为队员的能力值是不重复的,所以找当前能力值最大的,可以直接从nnn遍历到111,维护一下每个被选走的队员.这个题的关键在于,每次把队员选走之后如何去维护剩余的还存在的队员,直观的方法肯定是把已经选择的队员都删除,但是vector的删除复杂度很高

2022-01-25 21:16:31 805

原创 Problem - 1156B - Codeforces(模拟+贪心)

Problem - B - Codeforces题目大意:给定你一个字符串sss,你可以将其重新排列,判断是否通过重新排列之后,可以满足相邻的两个字符之间,它们在字母表中不相邻.(a,ba,ba,b在字母表中即是相邻的).解题思路:直接贪心来求解,我们把当前出现的字符排个序,然后从中间分成两份,让这两份错开匹配.如果字符的个数是奇数,那么我们把中间的那个字符划分到前一段试一次,再把那个字符划分到后一段试一次,然后check一下,就可以得到答案.#include<bits/stdc++.h

2022-01-25 21:11:17 363

原创 Problem - 1172A - Codeforces(思维+模拟)

Problem - A - Codeforces题目大意:有2n2n2n张牌,其中有nnn张牌是nnn的排列,剩余nnn张牌是000,现在将牌打乱平分成两份,你可以将自己手上的牌放在另一堆牌的牌顶,然后拿走牌底的牌,求最少需要多少次这样的操作,能让牌堆形成一个递增序列.解题思路:先考虑最坏的情况,最坏的情况就是先把手上的000全部打出去,然后把对应的数字牌全部收回,再依次的放,这样次数是2n2n2n.然后我们考虑把一张牌放到对应位置所需要的花费.如果一张牌在牌堆bbb中满足,bi<ib_i

2022-01-25 21:04:23 248

原创 Problem - 1176D - Codeforces(贪心+模拟)

Problem - 1176D - Codeforces题目大意:假设给定一序列aaa,对于序列中的aia_iai​,如果aia_iai​是素数,那么找到第aia_iai​个素数加入序列aaa的尾部,如果aia_iai​是合数,那么将其最大的非aia_iai​的因子加入序列aaa的尾部.现在给定一个长度为2n2n2n由长度为nnn的序列aaa生成的序列bbb(无序).求出原序列aaa.解题思路:首先对于当前最大的素数,它一定由它次大的素数生成,对于当前最大的合数,它一定是原本存在于序列之中的,当前

2022-01-24 22:08:12 293

原创 Problem - 1177B - Codeforces(模拟)

Problem - 1177B - Codeforces题目大意:现在定义字符串s=123456789101112....s=123456789101112....s=123456789101112....,即将自然数不断拼接起来,求出字符串sss的第kkk项.解题思路:对于前9个数,它们所占据的长度是9∗19*19∗1,对于10−9910-9910−99这些数,它们所占据的长度是9∗10∗2数字长度9*10*2_{数字长度}9∗10∗2数字长度​.依次类推,可以得到长度为iii的数字,其总和占据

2022-01-24 22:07:31 246

原创 Problem - 1186C - Codeforces(猜结论)

Problem - 1186C - Codeforces题目大意:给定两个仅由000和111组成的字符串a,ba,ba,b.定义ccc为bbb的子串,定义函数f(b,c)f(b, c)f(b,c)的值为b,cb,cb,c两串的不相同的位数.求aaa有多少个子串ccc满足f(b,c)f(b, c)f(b,c)为偶数.解题思路:观察一下还是很好猜的,当两个串中的0,10,10,1的个数之差为偶数时,那么每有一个bbb中的000和ccc中的111不匹配时,与之对应的一定有一个bbb中的1和ccc中的00

2022-01-24 22:06:49 150

原创 Problem - 1190B - Codeforces(分类讨论博弈)

Problem - 1190B - Codeforces题目大意:有nnn堆石子,每堆的数目为aia_iai​,现在Alice和Bob两个人可以移走任意一堆不为空的石子中的一颗石子,如果某人移动完石子后,有两堆的石子数相同,那么另一个人获胜;如果某人当前没有可移动的石子,另一个人同样获胜。题目大意:我们思考两种情况。一种情况是当前局面已经存在只要移动就一定会失败的情况。那么此时至少有两对组合满足石子个数ai=aja_i=a_jai​=aj​,或者是形如2,3,32,3,32,3,3这种情况,无论

2022-01-22 21:43:06 222

原创 Problem - 1195D2 - Codeforces(枚举+按位讨论)

Problem - 1195D2 - Codeforces题目大意;现在定义函数f(a1a2...ap,b1b2...bq)f(a_1a_2...a_p, b_1b_2...b_q)f(a1​a2​...ap​,b1​b2​...bq​)满足这样一个规则如果p≥q   f(a1...ap,b1...bq)=a1a2..b1ap−q+2b2..apbqp\ge q \space\space\space f(a_1...a_p, b_1...b_q)=a_1a_2..b_1a

2022-01-22 21:42:23 161

原创 Problem - 1227D2 - Codeforces(树状数组+二分)

Problem - 1227D2 - Codeforces题目大意:给定长度为nnn的序列,对于每次询问,找出长度为kik_iki​的和最大且字典序最小的子序列,然后输出该子序列posipos_iposi​位置的值。解题思路:思考一下,这个题也需要离线处理,对于询问,我们按长度从小到大来进行排序;为了让子序列的和尽可能的大,那么原序列按照从大到小来进行排序,为了使字典序最小,那么同样大小的值,应让下标小的放在前面。排完序后用树状数组来维护下标,对于某个插入的数,我们将其原本对应的下标及其下标以后

2022-01-22 21:41:30 402

原创 Problem - 1213G - Codeforces(并查集维护建树)

Problem - 1213G - Codeforces跟树有关的题目如果涉及到多次询问,考虑并查集来进行动态维护。题目大意:给定一棵带有边权的树,对于每次询问,会询问一个权值限定qiq_iqi​,你需要找出当前树上满足路径中最大值小于等于qiq_iqi​的路径个数。解题思路:有多组输入,优先考虑离线做法,因为这是一颗树,我们可以考虑用并查集来进行建树,将每个询问依照权值大小来进行排序,优先处理权值小的询问,边也按照权值大小来进行排序,这样每连接一条边,那么产生的路径数就是这条边的两端点所连接的

2022-01-22 21:40:32 410

原创 Problem - 1267J - Codeforces(优雅暴力)

Problem - 1267J - Codeforces题目大意:给你nnn个应用,每个应用有自己的类型,你需要用mmm块屏幕放下这些应用,每块屏幕上只能放s或者s−1s-1s−1个相同类型的应用,求出最小的mmm。解题思路:一开始我想的是二分思路,但这个题不符合单调性,所以正解是枚举,关键在于去理解枚举的复杂度。首先确定枚举的上下界,我们枚举sss,则sss的最大值应该是数目最少的相同类型数+1.对于给定的sss我们计算一下复杂度,应用类型的最大值是n/smaxn/s_{max}n/smax​

2022-01-22 21:39:23 358

原创 Problem - 1324F - Codeforces(树形dp)

Problem - 1324F - Codeforces题目大意:给定一棵树,树上的每个节点被染成白色或者黑色,定义res=cntw−cntbres=cnt_w-cnt_bres=cntw​−cntb​,求包含每个节点的连通块的最大resires_iresi​。解题思路:树形DP,先通过一次自顶向下的dfs,来求得从叶到根的最优解,然后再将根的值传递到叶做第二次dfs,将根的值传递到叶来进行二次判断。#include<bits/stdc++.h>using namespace s

2022-01-19 23:28:39 512

转载 Problem - 1326D2 - Codeforces(字符串hash)

Problem - 1326D2 - Codeforces看的这篇博客的思路题目大意:给定你一个长度为nnn的字符串,找出一个该字符串的一个前缀和一个后缀,使得这两个子串拼接成的字符串是一个回文串,求满足以上条件的最长回文串。解题思路:首先是双指针匹配字符串的左右两端,如果值相等直接加入答案,如果不相等的话,那就从这个地方要找一个回文子串来重新构成回文串了。当前情况下要不是从左边去匹配找到一个回文串,要不就是从右边去匹配找到一个回文串,具体的难点在于,如何优化查找回文串的复杂度。这里用的方式

2022-01-19 23:17:22 210

原创 Problem - 1327E - Codeforces(打表打出来的规律?)

Problem - 1327E - Codeforces题目大意:对于给定的n,现在有大小为[1,10n−1][1, 10^n-1][1,10n−1],对于长度不为nnn,自动补全前置零,求最大连续长度分别为1,2,3,..,n1, 2, 3,..,n1,2,3,..,n的有多少种。暴力打表然后发现从倒数第三项开始,每一项都是前面的一项加了81, 810, 8100,不断地累加之后乘10.#include<bits/stdc++.h>using namespace std;

2022-01-19 23:04:11 395

原创 Problem - 1335E2 - Codeforces(暴力+优化)

Problem - 1335E2 - Codeforces题目大意: 给定你长度为nnn的序列,让你将其分成三个子序列,满足如下关系[a,...,a⏟x,b,...,b⏟y,a,...,a⏟x][\underbrace{a,...,a }_{\text{x}}, \underbrace{b,...,b }_{\text{y}},\underbrace{a,...,a }_{\text{x}}][xa,...,a​​,yb,...,b​​,xa,...,a​​]。解题思路:对于aia_iai​的值

2022-01-19 22:55:51 375

原创 Problem - 1355C - Codeforces

Problem - 1355C - Codeforces题目大意:定义三条边x,y,zx, y,zx,y,z,满足A≤x≤B≤y≤C≤z≤DA\le x\le B\le y \le C \le z \le DA≤x≤B≤y≤C≤z≤D,求出有多少组x,y,zx,y,zx,y,z的值可以作为三角形的三边长.解题思路:根据题目的条件可以推断出,当满足x+y>zx+y>zx+y>z时,这样的一组值就是一组符合值.zzz的范围是[C,D][C, D][C,D],那么应该满足x+y&gt

2022-01-19 22:45:11 288

原创 Problem - 1442B - Codeforces(贪心+模拟)

Problem - 1442B - Codeforces题目大意:给定你一个大小为nnn的排列aaa,现在你可以选择当前aaa中的任意一个元素aia_iai​,然后移除aia_iai​,将ai−1a_{i-1}ai−1​或ai+1a_{i+1}ai+1​加入数组bbb,求有多少种方式,可以通过排列aaa生成数组bbb。解题思路:模拟,对于每个bib_ibi​,至多只有两种办法来得到,那就是在排列aaa中找到对应bib_ibi​的aja_jaj​,如果此时aj−1,aj+1a_{j-1}, a_{j

2022-01-17 17:48:28 223

原创 Problem - 1462F - Codeforces(排序+二分)

Problem - 1462F - Codeforces题目大意:给定你nnn条线段,请你求出最少需要删除多少条线段,可以满足剩余的线段中,有一条线段和其它线段都有交点。解题思路:这个题首先要从枚举入手,我们考虑枚举和其他线段相交的那一条线段来进行考虑,然后我们思考,哪些情况下线段之间没有交点。1.当前线段的右端点小于我们选择的这条线段的左端点。2.当前线段的左端点大于我们选择的这条线段的右端点。那么我们给线段的左右端点分别排个序,就可以用二分得出没有交点的线段个数,然后枚举取最小值。#

2022-01-17 14:31:48 317

原创 Problem - 1468J - Codeforces(最小生成树)

Problem - 1468J - Codeforces题目大意:给定你一张连通图,你需要将它删边成一棵树,并且这棵树的所有边权都要小于等于kkk,且至少有一条边的边权为k.解题思路:首先可以我们分析怎么去生成树是较优解.当边权ei>ke_i>kei​>k时,此时如果需要这条边,那么这条边就一定要花费ci=ei−kc_i=e_i-kci​=ei​−k.当边权ei≤ke_i\le kei​≤k时,此时如果需要这条边,那么这条边的花费有两种情况: 000或者ci=k−eic_i=

2022-01-17 11:40:46 389

原创 Problem - 301A - Codeforces

Problem - 301A - Codeforces题目大意:给定长度为(2∗n−1)(2*n-1)(2∗n−1)的数组,你每次可以将其中的nnn个数变成它的相反数,你可以进行任意次这样的操作,数组和得最大值.解题思路:这个题需要分奇偶来进行讨论,如果是nnn是偶数,那么无论怎么样去改变,每次都只能改变偶数个值.但如果是nnn是奇数,那么可以按照这样的策略来进行改变,先选nnn个值,再从已选的nnn个值中选(n−1)/2(n-1)/2(n−1)/2个,然后再任意选(n+1)/2(n+1)/2(n

2022-01-13 23:07:55 101

原创 Problem - 238B - Codeforces

Problem - 238B - Codeforces题目大意:给定一个长度为n的序列,你可以将其分成两个子序列(子序列可以为空),给定一个h,定义函数f(ai,aj)f(a_i, a_j)f(ai​,aj​), 如果ai,aja_i,a_jai​,aj​在同一子序列,f(ai,aj)=ai+ajf(a_i, a_j)=a_i+a_jf(ai​,aj​)=ai​+aj​,否则f(ai,aj)=ai+aj+hf(a_i, a_j)=a_i+a_j+hf(ai​,aj​)=ai​+aj​+h.现在让你给出构

2022-01-13 23:07:40 62

原创 Problem - 220B - Codeforces(莫队)

Problem - 220B - Codeforces题目大意:给定长度为n的数组,m次查询,求每次查询的区间中,aia_iai​=num[ai]num[a_i]num[ai​]的个数.解题思路:n的范围是1e5,基本就确定了这是一个莫队的题.莫队用来处理离线问题,通过把长度为nnn的数组分块成n\sqrt{n}n​块来进行处理,处理之前进行一个排序,对于起点,用所在块来决定先后顺序,对于处在相同块的,用n来决定先后顺序.复杂度的证明:对于右指针的每一块而言,它一定是单调递增的去移动,那么复杂

2022-01-13 11:51:21 233

空空如也

空空如也

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

TA关注的人

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