自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

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

可以发现操作会删去a[i],等于序列变得更加完美。当a[i-1]=a[i+1] and a[i-1]!=a[i]为保持序列不在更加完美,我们应删去前后最短的连续等于a[i-1]序列 双指针遍历即可,注意开头可能也会存在一段。显然我们让每种颜色平分n个位置就行了。那么最多的颜色就会有n/m个,如果鲍勃操作的次数 k 小于 n −n/m,最后的丝带就变不成相同颜色,反之就可以。某一位上相同时对乘积不会产生贡献。当位上不同时,根据均值不等式,不同位的差越小则乘积越大,所以只需满足所有位上数不同时差值尽可能小。

2025-02-20 10:07:33 189

原创 codeforce round 938 div3

考虑用两个map动态维护一个长度为m的区间,ma1代表当前区间出现的数,ma2代表b数组的数。当第i个数加入第i-m个数删除时,当ma1[a[i-m]]<=ma2[a[i-m]]此时贡献减一,当ma1[a[i]]<ma2[a[i]]贡献加一。由于k太大不能直接模拟 考虑对n个依次计算,从前向后攻击次数为k-k/2,从后先前为k/2次,前导后,后到前计算其可以攻击到得位置 两侧数量即为可摧毁数量 注意特判k>=sum时。对于一个数x,其贡献为min(ma1[x],ma2[x])。

2025-02-13 00:10:50 110

原创 codeforce round 999 div2

有|x-y|<=1.如果最后需要构成的数是 a,它一定是由两个相邻或相等的数相加得来的。令这两个数中最小的那个数为 b,那 a=b+b 或 a=b+b+1。暴力去拆解b中每个数。设腰长为x上底为a下底为b,我们显然能发现2x>abs(a-b) 排序后找到x 枚举a二分b即可。我们最理想情况是 偶奇奇奇奇 注意特判。

2025-02-02 00:55:11 178

原创 codeforce round 961 div2

我们要去更多的选择x和x+1 可以用map做标记统计最大金额。

2025-01-31 23:36:45 227

原创 codeforce977 div2

我们可以发现答案最大为n,考虑尽可能让mex大,尽可能从小到大依次填充 对于出现大于一次的数x我们应该找到比x大的且未出现 如果一次一次加则会超时,考虑递推方式。由于一开始的队列是固定的,所以编号 ai​ 的人第一次讲 PPT 如果比编号为 aj 的人第一次讲靠前,则 i 一定小于 j。发现当一个人讲完一张 PPT 之后可以安排到队列的任意位置,所以他下一次再讲哪一张 PPT 都可以做到。最终只需要判断讲每张 PPT 的人第一次在 b 中出现的下标相对顺序是否与 a 中每个人的相对顺序相同即可。

2025-01-30 22:17:54 120

原创 codeforce round 982div2

用map记录每个点都需要多少长度才可以变,dfs当前序列长度。我们需要子数组子数组能以非递增顺序 则需要每个数都满足。尽可能重叠 计算长宽最大值。

2025-01-30 01:58:35 123

原创 Ethflow codeforce round 1001 div1+2

逆转序列并不会使和发生变化,所以逆转序列需要配合差分使用 我们发现差分操作最多执行n-1次。对于每个位置 从左从右最长回来的时间为2(i-1),2(n-i),判断每个位置是否符合要求。ai-ai-1即和变为an-a1。枚举每次操作的最大值即可。

2025-01-30 00:00:27 227

原创 codeforce round 1000 div2

把所有度最多的点记一下,如果在与一个点相连的点中,度数最多的点的数量大于等于 2,那么就不行,因为这样第二次就有可能选到与它相邻的度数最多的点。在刚刚断开的 degi​ 个分量里面必有 1含 j(也包含其他的节点),断开 j 不会影响这一个连通分量,因此会少多出来 1 个连通分量。因为其所求的转换方法是翻转,所以若又转左区间又转右区间,右区间数会与左区间的数翻转,有效也只有中间的数,还不如直接翻中间的。与 (1) 同样的逻辑,断开 i 点,树还是会变成有 degidegi​ 个连通分量的图。

2025-01-29 01:32:30 151

原创 codeforce round 988 div3

博弈 a会先选较大的数b会用不配对的数匹配 然后a选用剩余可配对数的数b依次配对。只存在一种操作即减去相邻最小的 从前往后依次减小后判断是否不递减即可。根据题意 我们要对每一行排序 在跟列增大判断是否连续的。

2025-01-28 01:22:35 127

原创 Edu codeforce round 171

我们一部分已经与0一起买入 剩下的只有无法与0一起购买的物品 我们可以将剩下的最贵与最便宜的一起买入。可以使用二分 存在单调性 k越大越容易满足 |a[i]-a[j]|<=k 数据很小可以暴力。奇数时存在一个a[i]与非单元格上点配对 枚举i的位置每次取最大值。对于0我们一定会买入该产品且我们希望0与当前最贵的商品一起买。偶数时只需要两两满足条件即可。

2025-01-27 21:39:52 113

原创 codeforce r997div2

我们尽量让f(a)较小则可以构造出较大的g(a);可以按照 1 1 2 3 4 5 k 1的方式构造 n=6时需要特判。假设pi比k个元素大,则有P(k+1)=i;

2025-01-27 21:21:10 105

原创 codeforce962div3 A-E

思路:对于子区间我们可以考虑用前缀和处理为1时加一为0时减一,这样当一段前缀和为零时此时01相等,对于小区间被多少大区间覆盖考虑用组合相乘计算(大区间长ans小区间长度为n时此时有ans-n+1种组合)但此时区间个数还是n平方复杂度会超时。这里cnt维护的是左边区间的长度(假设前缀和相同的点x1,x2,x3,x4,x5,我们选择任意两个点都可以作为一个区间,我们发现当x1为左端点 x2x3x4可作为右端点,x2时x3x4x5可作为右端点,组合中x1提供的方案数不变,因此我们可以预处理出右端点,维护后缀和)

2024-08-14 01:45:44 595 1

原创 codeforce 964div4

按照贪心的原则,对于字符串中的?尽量满足与子字符串中字符匹配,其他字符也尽量满足匹配.每次匹配成功l向后移动一位当l越界后重新变为0,k记录长度当大于子字符串长度则满足题意。1. 若要将所有数字变为0,则只能操作[y/3] ,则要多进行操作[y/3 ] ,另一个数字要进行x * 3,则x = 0。2. 什么数字最容易变为0 , 最小的数字,先让最小的数字变为0,然后让其他的数字变为0。3. 每个数字变为0的操作次数是不变的,则可以用前缀和。只需间隔区间长度大于s,注意要插入首端与末尾的区间。

2024-08-14 01:12:17 256

原创 洛谷4011 孤岛营救 图的拆点,键边与状态dp

通读本题发现 每次移动的代价都是 1或0,所以我们可以考虑 01BFS;又因为 P 的范围很小,可以对 P 进行状压,记 𝑐𝑜𝑠𝑡(𝑖,𝑗,𝑘)表示到 (𝑖,𝑗)拥有的钥匙集合为 𝑘k 的最小花费,维护 i,j,k 进行 01BFS,一旦有解直接返回,需要判断无解情况。一共有两种操作 当前是否存在钥匙 以及向周围扩展。

2024-04-25 17:50:59 508

原创 第十一届蓝桥杯省赛第二场C++ C组 作物杂交 特殊建图

假定有关系(a,b,c),即a和b杂交可以生成c,我们就根据此关系构建两条边,第一条:a -> c,边权维护时间w以及节点b,第二条:b -> c,边权维护时间w以及节点a,当我们遍历到a的时候可以找到c,同样当我们遍历到b的时候也可以找到c,并且我们可以通过边权读取到与这个节点a关联的另一节点b,这样我们便完整描述了所有节点之间的关系,问题转化为了一个图的问题。由于已知作物不止一个,所以这并不是一个单源最短路径问题,多源最短路显然超时,我们需要对问题再作更近一步的转换。(记录与a相关联的点)

2024-04-17 00:39:39 720 1

空空如也

空空如也

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

TA关注的人

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