自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 牛客 - 减成一(差分数组)

题目链接:点击查看题目大意:存在n个数,每次操作可以任选一个区间使得区间内的所有数字减一。问最少多少次操作,可以让所有数都变成1。题目分析:之前做过一道类似的原题:https://blog.csdn.net/qq_45458915/article/details/103228424然后这个题目是需要将所有数字减少为 1 ,只需要将 a[ 0 ] 改为 1 就行了代码:#include<iostream>#include<cstdio>#include.

2020-05-31 21:14:24 752

原创 牛客 - 字典序(思维)

题目链接:点击查看题目大意:给出一个长度为 n 的数列 a ,构造s[ i ] 是数列 a 去掉 a[ i ] 后的数列,现在需要对 s 排序,输出排序后的结果题目分析:一提到排序,可以试着写一下 sort 的 cmp ,然后剩下的就不用我们操心了对于 cmp 函数,我们的目标是给出两个位置 x 和 y ,从而确定其相应的大小首先假设 x < y ,这个时候,数列 s[ x ] 和 数列 s[ y ] 的长度肯定是相等的如上图所示,我们可以将整个数列分为三段,其中对于第一段和.

2020-05-31 20:55:30 387

原创 牛客 - 养花(最大流)

题目链接:点击查看题目大意:给出 n 个数字,现在有四种药水:选择一棵高度为a0的植物变为b0高度的植物 选择一棵高度在[a1,a2]区间内的植物变为b1高度的植物 选择一棵高度为a1的植物变为[b1, b2]区间内某一高度的植物 选择一棵高度在[a1,a2]区间内的植物变为[b1,b2]区间内某一高度的植物接下来给出 m 次说明,用来描述上面四种药水,问最多能让多少棵植物达到高度 k题目分析:根据数据范围和题目描述,不难想到用最大流来做,这个题的考察点就是需要设置限流点对流量进行限流,

2020-05-31 20:00:59 317

原创 牛客 - 点对最大值(树的直径)

题目链接:点击查看题目大意:给出 n 个点组成的一棵树,每个点和每条边都有权值,现在需要求出一对点 ( x , y ) ,使得点 x 到点 y 的唯一路径权值和最大,权值和包括点 x 和点 y 的权值以及路径上所有边的权值之和题目分析:比赛时没注意到这是树的直径,在那里写了一个小时的换根dp也没写出来,导致也没时间去看其实很简单的 G 题,感觉亏死了树的直径模板题,只不过加了个限制是路径上还需要加上两个端点的权值,只需要稍微修改一下就好了代码:#include<iostream&

2020-05-31 19:25:21 303

原创 联想杯 - Disaster Recovery(最小生成树)

Problem D. Disaster Recovery Input file: Standard Input Time limit: 1 second Output file: Standard Output Memory limit: 256 megabytes On the magical land Byteland, there is an ancient kingdom called Fibonacci Kingdom. There are n cities in th

2020-05-31 12:49:40 590 1

原创 CodeForces - 1359E Modular Stability(组合数学)

题目链接:点击查看题目大意:给出一个 n 和 k ,要求构造一个长度为 k 的严格递增数组 a[ i ] ,且 1 <= a[ i ] <= n ,满足任意整数 x ,对下列的等式恒成立,其中 p 是数组 a 的一种排列:现在给出 n 和 k ,问可行的数组 a 有多少种题目分析:首先需要知道如何构造出数组 a ,因为需要满足任意排列后的顺序取模的结果都要相同, 不难看出任意两个元素的 gcd 都为 a[ 1 ] 时满足条件,换句话说,所有的数必须都是 a[ 1 ] 的倍数,可以

2020-05-29 17:07:21 340

原创 CodeForces - 1359D Yet Another Yet Another Task(最大连续子段和)

题目链接:点击查看题目大意:选出一个连续子段和后,会减去相应区间内的最大值,问在此情况下的最大连续子段和是多少题目分析:因为每个元素的取值很小,所以可以枚举每个元素作为最大值,然后依次求最大连续子段和就好了,当遇到 a[ i ] 大于当前枚举的值时,直接断开,其余情况和模板题没什么区别代码:#include<iostream>#include<cstdio>#include<string>#include<ctime>#inclu.

2020-05-29 13:34:38 372

原创 CodeForces - 1359C Mixing Water(三分)

题目链接:点击查看题目大意:一杯热水的温度为 h ,一杯凉水的温度为 c ,现在有一个空桶,要求轮流执行以下操作:倒一杯热水 倒一杯凉水 倒一杯热水 .....每次总是以一杯热水开始,问需要倒多少倍水,才能使得桶内的平均温度与 t 之差最小题目分析:数学不好,推不出来答案的表达式,所以当三分来做了,首先热水和凉水的相对状态只有两种情况:热水和凉水一样多 热水比凉水多一杯然后再设平均值 ave = ( h +c ) / 2 ,然后需要再分两种情况:t = ave:答案为 2.

2020-05-29 13:24:40 368 1

原创 2020.5.27 线性规划测试(Lingo实现)

青岛某旅游公司五一长假准备推出旅游两日游套餐。旅游项目选择以下 7 种组合(见表 1):旅游公司计划在上述 7 种景点组合中选择 3 种组成二日游套餐。 由于疫情期间,为了预防人的聚集,各景点对旅游团人数有一定限制, 每两天该旅行社到各景点组合的人数配额限制,且不同的景点组合每 个游客给旅游公司带来的收益不同(见表 1)。根据公司的条件,公司 计划每两天最多安排 2100 人的旅游计划。 如果景点 1 是必选项,且以收益最大为目标,应该推出哪几种 二日游套餐,每种套餐各有多少人?

2020-05-27 20:55:24 977

原创 CodeForces - 1358D The Best Vacation(前缀和+尺取)

题目链接:点击查看题目大意:给出 n 个数组成的数列,每个元素都可以展开为 1 , 2 , 3 .... a[ n ] ,现在将数列首尾相接,要求选取一段长度为 x 的连续数列,使得元素和最大题目分析:因为 n 是 2e5 , a[ i ] 是 1e6 ,暴力展开肯定不行,但是仔细样例观察不难发现,最终选择的这段数列,结尾一定是 a[ i ] ,那么我们可以 O( n ) 枚举作为结尾的 a[ i ] ,然后尺取定位到起点,每次维护最大值就是答案了代码:#include<iost.

2020-05-27 16:02:02 298

原创 CodeForces - 1358C Celex Update(思维)

题目链接:点击查看题目大意:给出一个二维平面的构造方法如下:这个平面无限大,现在给出两个点 A( x1 , y1 ) 和 B( x2 , y2 ) ,问从点A 到点 B 只允许向右和向下走的路径上,路径上不同的元素和有多少种题目分析:又是比赛时很懵逼,看完题解后感觉很巧妙的一道题目,借用题解的图片解释一下:我们需要从点 ( 1 , 1 ) 到点 ( 3 , 3 ) ,首先第一个子图表示的是元素和最小的路径,之后每次操作是将任意一个点替换成左下角的点,这样操作可以使得元素和加一,一共.

2020-05-27 15:55:08 361

原创 Lingo软件基础

1.软件介绍:Lingo(linear interactive and general optimiuzer)的基本含义是交互式的线性和离散化求解器,是主要用来求解优化问题的软件最大特色:允许优化问题中的决策变量为整数,可求解整数规划,而且执行速度快2.求解线性规划问题:例1:解:min=2*x1+3*x2;x1+x2>=350;x1>=100;2*x1+x2<=600;x2>=0;例2:解:切割模式共七种如下:xi 代...

2020-05-26 16:45:57 1562

原创 牛客 - 第k小数(线性寻找第 k 小数)

题目链接:点击查看题目大意:给出长度为 n 的数列 a ,要求找到第 k 小的数题目分析:因为数据给的足够大,所以约束就是必须线性完成操作,STL 中的 nth_element() 函数可以完美实现操作,算是学到了一波,格式:nth_element( a.begin() , a.begin() + k , a.end() ) ,那么 a[ k ] 就是第 k 小,完成操作后,整个序列满足 [ 0 , k - 1 ] 的数都不大于 k ,[ k + 1 , end ] 的数都不小于 k代码:.

2020-05-26 13:53:31 458

原创 牛客 - 二分(差分)

题目链接:点击查看题目大意:现在玩猜数字游戏,如果猜的数字比答案要大,就输出 ' + ' ,比答案小,就输出 ' - ' ,猜中了答案,输出 ' . ',给出这样的 n 条指令,问最多有多少条指令可以同时保证正确性题目分析:感觉蛮不错的一道差分题目,分类讨论一下:' . ' :当前指令只对 pos 位置的数做出了贡献 ' + ' :当前指令对 [ -inf , pos - 1 ] 内的数做出了贡献 ' - ' :当前指令对 [ pos + 1 , inf ] 内的数做出了贡献因为数据是离.

2020-05-26 13:47:56 450

原创 牛客 - 交换(思维+找循环节)

题目链接:点击查看题目大意:给出一个数列 n ,要求通过交换使其从小到大排序的最小次数题目分析:第一反应是求逆序对,把之前做过的题目贴过来结果只过了 10% ,静下心来又读了一下题,发现这个题目要求交换的两个数字并不要求相邻,这就变成了一个思维题了,可以从循环节的角度出发,首先达到最终目标的循环节一定有 n 个,因为每个数字都是单独的一个循环节,思考一下每次交换会发生什么结果,因为交换的话肯定会使得至少一个数到达属于自己的位置,那么这个数字就单独形成了一个循环节,换句话说,这个数字从原来的循环节中分

2020-05-26 13:26:45 316

原创 CodeForces - 1360H Binary Median(二分)

题目链接:点击查看题目大意:给出一个 n 和 m ,初始时集合中含有 0 ~ 2^m - 1 共 2^m 个数,随后从中删去 n 个数,现在需要此时集合中的中位数题目分析:一开始被字典序迷惑了,仔细想了一下发现,其实二进制下的字典序,和普通的排序没有区别,且 m 最大才为 60 ,所以可以将字符串转换为整数从而进行二分,因为多了删除这个条件,我们需要设计一下 check 函数然后寻找一下单调性设中位数为 k ,换句话说我们需要找到集合中第 k 大的那个数,可以二分 mid ,每次遍历一遍这 n

2020-05-25 15:47:36 323

原创 CodeForces - 1360G A/B Matrix(最大流)

题目链接:点击查看题目大意:给出一个 n * m 大小的空矩阵,要求在某些位置放置 1 ,其余位置放置 0 ,使得每行都有恰好 a 个 1 ,且每列恰好有 b 个 1 ,给出一种构造方案或者判断是否可行题目分析:棋盘问题,加上数据比较小,考虑直接用网络流直接判断是否可行,行列约束可以转换为流量约束,具体建图方式如下:源点 -> 每一行,流量为 a 每一行 -> 每一列,流量为 1 每一列 -> 汇点,流量为 b建完图后不难看出,当且仅当 a * n == b * m 才存

2020-05-25 15:34:08 444 1

原创 牛客 - 降维打击(dp)

题目链接:点击查看题目大意:给出一个 n * m 的迷宫,0 表示道路,1表示障碍物,初始时在点 ( x , y ) 到达边界即逃离迷宫,问在时间 k 内逃离迷宫的概率有多大题目分析:因为涉及到概率问题,不难看出可以用分层图 bfs 求出 ans1 代表可行方案数,ans2 代表不可行方案数,那么答案就是 ans1 / ans2 了,但如果直接实现的话,会 MLE ,这个题专门卡了分层 bfs ,一共有 128 * 128 * 256 个状态,因为分层 bfs 每次只能转移一个状态,所以同时会存在

2020-05-24 23:48:31 321

原创 牛客 - 数位操作2(数位dp)

题目链接:点击查看题目大意:给了你一个极端大的数据集合的信息N, SUM, X 如下 这个数据集合里面的N位, 每一数位求和之后刚好等于SUM (比如四位数 1234 数位求和之后是 10); 它们都有N位, 十进制的(每一位都在0~9), 我们这里降低点难度, 特别容许前导0的存在. 1234, 0123 都是合理的数; 这N位长度的数字字符串, 任意连续的三位数字构成的数据都能被X整除. PS: 有可能 有空数据集为了减低难度你只要求出原来数据集合内有多少数据

2020-05-24 17:57:06 348

原创 洛谷 - P4168 [Violet]蒲公英(分块+离散化)

题目链接:点击查看题目大意:给出一个长度为 n 的数列,再给出 m 次查询,每次查询区间 [ l , r ] 内的众数,要求强制在线题目分析:对于这个题意来说,如果允许离线的话,完全可以用莫队当模板题水过去,但强制在线的话就需要考虑如何分块了这里只讲一下如何实现大蓝书上的第二个方法吧首先设将数列 n 分成 T 块,每块的长度为 n / T ,接下来可以预处理出 mode[ l ][ r ] ,代表包含第 l 块到第 r 块在内的这段区间上的众数是多少,时间复杂度为 O( nT) ,空间复杂.

2020-05-24 02:14:21 418

原创 POJ - 3468 A Simple Problem with Integers(分块)

题目链接:点击查看题目大意:给出一个长度为 n 的数列,再给出 m 次操作,每次操作分为两种情况:C l r d:区间 [ l , r ] 内的数字都加上 d Q l r :查询 [ l , r ] 内的区间和题目分析:分块的做法比较直观,将长度为 n 的数列分为 sqrt( n ) 个长度为 sqrt( n ) 的独立部分,对于查询和修改:如果 l 和 r 位于同一个部分内,则直接遍历即可 如果 l 和 r 位于不同的部分内:记 ll 和 rr 分别为第几个部分 遍历 [ ll + .

2020-05-23 18:00:52 268

原创 扩展欧几里得求逆元(模数可以不为质数)

void extgcd(LL a,LL b,LL& d,LL& x,LL& y){ if(!b) { d=a; x=1; y=0; } else { extgcd(b,a%b,d,y,x); y-=x*(a/b); }}LL inverse(LL a,LL n){ LL d,x,y; extgcd(a,n,d,x,y); return d==1?(x+n)%n:-1;//返回值为 -1 时说明不存在逆元.

2020-05-20 15:22:01 1118 1

原创 CodeForces - 1354F Summoning Minions(最大费用最大流)

题目链接:点击查看题目大意:给出 n 个仆人可以召唤,场上最多可以同时存在 k 个仆人,每个仆人带有一个属性 a 和属性 b ,仆人本身的价值为 a[ i ] ,当召唤出仆人 i 后,场上的所有仆人价值都加 b[ i ] ,每个仆人只能被召唤(销毁)一次,问如何确定召唤顺序,可以使最后场上的仆人价值总和最大,给出一种召唤方案题目分析:因为所有的 a[ i ] 都是非负的,所以显然最后场上的仆人个数为 k 个是最优的其次,如果场上只能有 k 个仆人的话,那么其余 n - k 个仆人的属性 a 就失

2020-05-20 04:19:58 401

原创 CodeForces - 1354E Graph Coloring(dfs判断二分图+dp)

题目链接:点击查看题目大意:给出一个由 n 个点和 m 条边组成的无向图,要求给 n 个点赋值为 1 、 2 或 3 ,需要满足以下条件:每个点都需要被赋值 权值为 1 的点共 n1 个 权值为 2 的点共 n2 个 权值为 3 的点共 n3 个 对于每个点 u 以及其子节点 v 需要满足 abs( val[ u ] - val[ v ] ) == 1先判断是否存在可行方案,如果存在,给出任意一种构造方案题目分析:首先需要转换题意,题目中的条件 1 是废话,关键是先要判断能否满足条件

2020-05-20 04:01:08 406 2

原创 CodeForces - 1354D Multiset(线段树/二分)

题目链接:点击查看题目大意:规定在一个 multiset 中初始时有 n 个元素,随后有 m 次操作,每次操作给出一个 num:num > 0 时:向 multiset 中添加 num num < 0 时:删除 multiset 中第 (-num) 大的数最后要求输出 multiset 中的任意一个元素,如果最后集合为空,则输出 0题目分析:两种做法,一种简单无脑,另一种很巧妙先说简单无脑的,就是直接模拟,一开始想用 multiset 直接模拟,但是想了一下发现 multis

2020-05-20 02:08:40 441

原创 HDU - 5176 The Experience of Love(并查集)

题目链接:点击查看题目大意:给出一棵边权树,现在要求任意两点之间:最大权值的边减去最小权值的边之和题目分析:第一步可以先将公式转换一下:,这样问题就转换为了如何求任意两点之间的最大(最小)权值之和,正难则反,如果我们从“任意两点”切入,会比较难入手,但如果从“最大边权”入手,可能会好一点,有点类似于线段树离线的思想,将所有边权排序后逐次加入到树中,根据树上任意两点之间至多有一条边的性质,每次加入一条边后都会将两个本不相交的连通块连通起来,同时,因为排序的原因,当前边就作为了两个连通块的点互相到达时的

2020-05-19 00:50:32 263

原创 HDU - 4622 Reincarnation(后缀自动机-查询区间本质不同子串个数)

题目链接:点击查看题目大意:给出一个长度为 n 的字符串,再给出 q 个询问,每次询问需要回答区间 [ l , r ] 内有多少个本质不同的子串题目分析:和回文自动机那个题目一样,n * n 预处理出一个答案数组,然后 O( 1 ) 查询就好了代码:#include<iostream>#include<cstdio>#include<string>#include<ctime>#include<cmath>#incl.

2020-05-18 20:57:24 675

原创 美团杯2020 - 半前缀计数(后缀自动机)

题目链接:点击查看题目大意:蒜斜刚来PKU的时候还不知道有“北大算协”这个社团,因此他总是觉得周围的人在偷偷议论着他,比如说:“算协(注:非蒜斜)举办的活动好有趣啊!”“算协(注:非蒜斜)好帅啊!”蒜斜每次听到这些话就会想入非非,但仔细想想,自己好像也没有那么帅吧?最离谱的一次还是:“算协(注:非蒜斜)有好多小哥哥”(雾)自从蒜斜学习了半前缀之后,他把这些话都看开了 —— 对他来说,只要这些话里有 “蒜斜好” 的半前缀就足够了。题目描述设小写字母字符串s, 长度为n,..

2020-05-18 13:48:34 340

原创 美团杯2020 - 平行四边形(原根)

题目链接:点击查看题目大意:蒜斜非常喜欢下围棋。自从AlphaOg面世以来,他就立志一定要研究出AlphaOg的破绽。 终于,他发现当AlphaOg遇到一种特殊局面后,它的神经网络会自动输出“投降”!随着进一步的研究,蒜斜发现这种局面有着更一般的特性,不仅仅局限于固定大小棋盘。 具体来说,当棋盘大小是nn(n+1n+1是一个质数)且棋盘上恰好有nn个棋子的时候,如果这些棋子的位置满足下列条件,那么 AlphaOg 就会直接投降。假设第ii个棋子的位置是点PiPi,处在第xixi...

2020-05-18 01:12:47 337

原创 CodeForces - 1355C Count Triangles(数学)

题目链接:点击查看题目大意:给出 A B C D ,规定 A <= x <= B <= y <= C <= z <= D ,问 ( x , y , z ) 三元组为三角形的情况有多少种题目分析:首先需要知道,当 x + y > z 时,三元组 ( x , y , z ) 满足条件,但是三个数的范围都是 1e5 级别的,不能直接暴力枚举但是不难想到可以 O( n ) 枚举 x ,然后尝试 O( 1 ) 去计算 ( y , z ) 有多少对适应当前的 x

2020-05-17 01:07:49 655 3

原创 CodeForces - 1355E Restorer Distance(三分)

题目链接:点击查看题目大意:给出一个长度为 n 的数组 a ,现在可以对数列 a 进行数次操作:将任意一个位置增加 1 ,代价为 A 将任意一个位置减少 1 ,代价为 R 将任意一个位置增加 1 同时其他另一个位置减少 1 ,代价为 M问如何在代价最少的情况下,使得整个数列的权值相同题目分析:首先在输入之后,令 M = min( M , A + R ) ,这里通过贪心不难看出,其次假如给出最终的高度 H ,应该不难算出所需要的代价 val ,可以分类讨论贪心去计算:设缺少的砖块为 less

2020-05-17 00:53:45 398

原创 牛客 - 小V的序列(思维+位运算)

题目链接:点击查看题目大意:给出一个均匀分布,长度为 n 的数列,再给出 m 次询问,每次询问给出一个 y ,询问数列中是否存在 x 与 y 相似,相似的定义如下:x,y相似当且仅当x xor y的二进制表示中1的个数小于等于3个。题目分析:这个题目确实很巧啊,首先 n 和 m 都是 1e6 级别的,所以每个查询需要在常数级别的时间复杂度内完成,而 n 是 1e6 , 且每个数的范围是 2^64 ,且所有数字类似于随机数一样均匀分布,这里先提一下,下面要用然后是需要根据题意转换一个结论,若

2020-05-16 14:06:33 1924 2

原创 CodeForces - 1353F Decreasing Heights(dp)

题目链接:点击查看题目大意:给出一个 n * m 的矩阵,每个矩阵的权值代表初始高度,现在需要从点 ( 0 , 0 ) 走到点 ( n - 1 , m - 1 ) ,需要满足以下条件:每次只能向右或向下移动 假设当前格子的高度为 x ,只能移动到高度为 x + 1 的格子上去初始时可以进行操作,使得某个格子的高度减少一个单位,问最少需要进行多少次操作,可以存在至少一条从点 ( 0 , 0 ) 到点 ( n , m ) 的路线题目分析:因为每次只能向下或向右移动,不难联想到最基础的一个 dp.

2020-05-16 00:55:34 307

原创 CodeForces - 1353E K-periodic Garland(思维+dp)

题目链接:点击查看题目大意:给出 n 个灯泡以及其初始状态(开或关),每次操作可以将任意一个灯泡的状态置反,问最少需要操作多少次,可以使得所有开着的灯泡之间相距 k 个单位题目分析:因为需要满足所有开着的灯泡之间需要相距 k 个单位,这也就形成了一个划分,那就是根据位置对 k 取模后的结果,将 n 个灯泡划分成了 k 组,每一组都相互独立,显然如果需要满足条件的话,只能存在某一组的灯泡有连续的状态为开启的灯泡,其余 k - 1 组的灯泡的状态必须都为关闭才行,这样一来我们可以通过枚举这 k 组来计算

2020-05-15 14:22:09 359

原创 CodeForces - 1353D Constructing the Array(bfs)

题目链接:点击查看题目大意:给出一个长度为 n ,初始时全部为 0 的数组 a ,后续进行 n 次操作,每次操作找到最长的连续 0 ,如果有多个则选择位置最靠左边的,将这组连续0 的,最中间位置的数赋值为 i ,i 为第 i 次操作,输出最后的数列题目分析:一开始没什么思路,用线段树区间合并暴力模拟的,果不其然 TLE 了,其实自己手算模拟几次就会发现,每个位置至多会被遍历到一次,且是按照深度扩展的,所以我们可以用 bfs + 优先队列 不断扩展就好了,具体实现可以看代码代码:#in..

2020-05-15 13:48:38 277

原创 HDU - 1907 John(尼姆博弈变形)

题目链接:点击查看题目大意:给出 n 堆石子,两个人轮流取,至少取一个,取到最后一个的人输题目分析:尼姆博弈是取到最后一个的人获胜,这个题正好反着一个很显然的奇异局势就是,每一堆的石子的个数都为 1 且有偶数堆石子,此时对应着异或和为 0然后分两种情况讨论:只有一堆石子的个数大于 1 :此时先手总是可以通过操作使得石子堆数为奇数且每堆只有一个石子 有超过一堆石子数大于 1 时:可以先手将异或和变为 0代码:#include<iostream>#include&lt

2020-05-14 00:04:38 331

原创 POJ - 1284 Primitive Roots(原根+欧拉函数)

题目链接:点击查看题目大意:给出一个模数 p ,求 p 有多少个原根题目分析:算是补充了一个知识点吧,模数 p 的原根个数为 p[ p[ n ] ] ,p 为欧拉函数证明博客:https://blog.csdn.net/wust_cyl/article/details/77498757代码:#include<iostream>#include<cstdio>#include<string>#include<ctime>#inclu

2020-05-13 23:05:15 314

原创 CodeForces - 1350E Orac and Game of Life(bfs)

题目链接:点击查看题目大意:给出一个 n * m 的 01 矩阵,矩阵每一秒都会迭代,迭代规则如下:如果对于 ( x, y) 格子而言,四周相邻的格子 ( xx , yy ) 均满足 maze[ x ][ y ] != maze[ xx ][ yy ] ,则 maze[ x ][ y ] 不变 否则 maze[ x ][ y ] ^ = 1给出 q 个询问,每个询问问格子 ( x , y ) 在第 t 秒迭代后的数字为多少题目分析:直接用题解的话来说吧,满足规则 1 的点我们称为 goo..

2020-05-13 17:19:41 403

原创 CodeForces - 1350B Orac and Models(dp)

题目链接:点击查看题目大意:给出一个长度为 n 的数列,求出最长上升子序列的长度,满足前一个的下标是后一个下标的因子题目分析:读懂题后不难发现这是 n * n 最长不下降子序列模板题目的变形题,只是将 n * n 变成了 n log n 而已,转移方程都没有变,唯一一个需要证明的就是 1/1 + 1/2 + 1/3 + ... + 1/n = nlogn而已,这个用微积分就能证明,这里就不多说了代码:#include<iostream>#include<cstdio&g

2020-05-13 16:20:53 365

原创 CodeForces - 1350C Orac and LCM(数论)

题目链接:点击查看题目大意:给出 n 个数,先求出两两 lcm 后的集合 t ,再求这个集合 t 的 gcd题目分析:做这个题得知道一个前置知识:对于 lcm 和 gcd 运算来说,每个质因子都相互独立知道这个知识点后,对于每个数先质因子分解,对于某个质因子 p 而言,分三种情况讨论:如果 p 在 n 个数中均出现过,那么找到指数的次小值 k,其贡献就是 p^k 如果 p 在 n - 1 个数中均出现过,那么找到指数的最小值 k,其贡献就是 p^k 如果 p 在 n 个数中的出现次数小于

2020-05-13 15:30:39 482

空空如也

空空如也

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

TA关注的人

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