【题解】CF1982

A

  • 考虑两队的领先情况改变,那么一定有某一时刻两队的比分相等
  • 于是首先检查最开始的领先队伍,再检查现在的领先队伍,如果前后不同,则 YES,否则 NO

B

  • 注意到当 x=1,则会进入循环,手模一下发现 ans=k%(y1)+1)
  • 现在的问题是:什么时候 x=1?直接手动模拟即可,不难证明时间复杂度 O(n)

C

  • 首先简化题意:在一个数列中划分出若干个不相交的子区间,并保证区间和在 minmax 之间,求最多可划分出多少个这样的区间。
  • 注意到对于每个 i,可转移的点是一个区间 [l,r]
  • 注意到,转移区间的 lr 都是单调不减的,所以双指针维护即可

D

  • 首先注意到 c 其实并不重要,全当 1 看即可
  • 其次注意到这题里的正负也不重要
  • 然后注意到这题实际上每个大小为 k×k 的矩形都是一个数,我们要用这些数凑出 0 点上的和与 1 点上的和的差值
  • 然后注意到 k×k 矩形的贡献二位前缀和秒了
  • 然后注意到这玩应变成裸的裴蜀定理,所以一套 gcd 搂过去就做完了

E

  • 注意到 n1018,大胆猜测复杂度关于 nlog
  • 设答案为 fn,k
  • c 为最大的小于 n 的全 1 二进制数的位数,这个 log 的复杂度就能求出来
  • 要求 fi,j 只需求出 f2c,jfi2c,j1
  • 前半段没什么好说的,后半段是因为最高位肯定是 1
  • 然后我们要求跨中间的区间个数
  • 如果前半段 j>k,那没得玩了,直接 0
    否则前半段每个位置都合法,因数:2c
    • 显然后半段的长度严格不大于前半段,且只有最后一位可以取满所有的 1,也就是说后半段的因数是 min(n2c,2c1)
    • 乘起来即为中间段贡献

F

  • 首先考虑维护最长不降前缀和最长不降后缀,线段树即可
  • 但是可能出现前缀的最大值比后缀最小值还小的情况
  • 也就是说我们需要在这个基础上将排序区间扩展
  • 扩展到什么地方呢?二分即可
  • 所以线段树需要再维护一个区间最值
posted @   yeyou26  阅读(34)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示