Codeforces Round 997 (Div. 2) 题解(A~D 题)

Codeforces Round 997 (Div. 2) 题解(A~D 题)

A

因为 x,y<m,所以每次必有重叠的长方形。

且重叠部分长为 mx,宽为 my ,用总周长减去算重了的部分就行。

注意处理第一个长方形的边界条件。

B. Find the Permutation

按照 gi,j 的大小关系直接写 cmp 然后 sort 就行。

考场还写了拓扑(

C. Palindromic Subsequences

构造:1,1,2,3,,n3,1,2

g(a)=n3+n4+n4=3n11>n

n>5.5 都可满足。

D

场切 *2200 ?!

感觉好数组不是很好统计啊,正难则反,我们统计坏数组的数量。

看到值域很小,考虑从值域下手。

坏数组形如:

,x,y,

其中 y>x, x 为第 len2 个数。

我们枚举这个 x,统计所有第 len2 个数为 x 的坏数组数量。

我们将 aix 的数打成 1ai<x 的数打成 0,然后做个前缀和。

问题似乎转化为:

统计多少 1lrn

sumrsuml1=rl+12

通过一个常用的 trick 可以化成:

2sumrsuml1=rl+1

(2sumrr)(suml1l+1)=0

Si=2×sumii,就可以化成:

SrSl1=0

这个就可以轻松地用 map 计数了。

但是还没完。

我们发现这个算法有点问题。

比如:

1 10

x=1 的时候会统计一遍,而在 x=2 时,会再次统计一遍。

我们加入一条限制:[l,r] 中必须包含 x,加上 SrSl1=0 的条件,便能实现不重不漏。

我们从头到尾枚举 r,当遇到一个 x ,就把 x 前面的 Sl 加进 map 内,保证 map 内取到的 Si 都能保证 [l,r] 内有 x

本题就做完了。

posted @   codwarm  阅读(111)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示