当前位置: 首页 > news >正文

题解:CF1852A Ntarsis Set

\(k\) 无关的 \(\Theta(n)\) 做法。

首先 \(10^{1000}\) 足够大,不妨把初始集合视为 \(\N_+\)

模拟赛出了这个的强化版,\(k\le 10^9\),我们考虑怎么解决这个问题。首先观察到如果 \(a_1\neq 1\) 答案一定为 \(1\)。不妨逆推,我们发现顺着推很简单,如果经过若干轮都没有被淘汰,每一轮每个数 \(x\)\(pos_x\) 就会经过如下转移:\(pos_x\leftarrow pos_x -i\),其中 \(a_i\) 为最后一个 \(<pos_x\) 的数。

相应地,逆推只需要 \(pos_x\leftarrow pos_x+i\),其中 \(a_i\) 为最后一个 \(<pos_x +i\) 的数,即 \(a_{i+1}\geq pos_x + i\)。显然递推过程中找到的 \(i\) 是单调不降的(理解:相当于每次抽出没被删掉的放在前面,只需找到每次被放在前面的推导出抽出时的位置,显然这是唯一且递增的),但是可能会有多个相同且冗余的 \(i\),每次都对 \(pos_x\) 执行 \(+i\) 的操作。

考虑加速这一过程。让 \(pos_x\) 直接加到边界 \(a_{i+1}-1\) 且不能做超过 \(k\) 步所需的步数为 \(p=\min(k,\lfloor\frac{a_{i+1}-1-pos_x}{i}\rfloor)\),那么 \(pos_x\leftarrow pos_x+p\times i\) 即可,这样对于每个 \(i\) 都只会做 \(\Theta(1)\) 次。最后如果 \(pos_x>a_n\)\(k\neq 0\)\(pos_x\leftarrow pos_x + k\times n\) 就可以逆推出初始的 \(pos_x\) 值。

时间复杂度 \(\Theta(n)\)

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N=2e5+5;
int n,k,a[N];
int main(){int Tn;scanf("%d",&Tn);while(Tn--){scanf("%d%d",&n,&k);for(int i=1;i<=n;i++)scanf("%d",&a[i]);if(a[1]!=1){printf("1\n");continue;}LL Pos=1;for(int i=1;i<n;i++)if(Pos<=a[i+1]-i){int p=min(k,(int)(a[i+1]-1-Pos)/i);Pos+=p*i;k-=p;}Pos+=1ll*k*n;printf("%lld\n",Pos);}return 0;
}
http://www.rkmt.cn/news/25987.html

相关文章:

  • 2025 年板材厂家最新推荐排行榜:聚焦 ENF 级环保、零醛添加等高品质板材,精选前 6 强深度解析品牌优势与产品亮点
  • 2025 年房屋鉴定公司最新推荐权威排行榜:涵盖安全评估 / 承载力 / 工程质量 / 危房等多领域,精准指引选靠谱机构
  • 第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词 - 指南
  • 2025 年球墨铸铁管件厂家最新推荐排行榜:市政 / 给排水 / 污水处理用优质厂家权威甄选
  • 中部地区-河南湖北湖南
  • MongoDB 聚合管道完全指南:数据分析的强大设备
  • 2025 年南昌装修设计公司推荐:宿然设计,非营销型技术工作室,专注落地还原,提供全国纯设计与江西全案服务
  • 2025 年板材源头厂家最新推荐排行榜:聚焦 ENF 级环保与高品质,精选 6 家实力企业助您轻松选
  • 2025年GEO品牌推荐排行榜TOP10:AI技术驱动的行业新格局
  • 习题-归纳定义原理
  • 2025年安恒信息公司:深度解析AI与数据安全双轮驱动的技术护城河
  • 穿透式页面的参数注意事项
  • 《51测试天地》电子杂志 第八十六期发布文章:打造基于 WebSocket + CDP 的 Selenium 替代方案
  • 实用指南:数字孪生背后的大数据技术:时序数据库为何是关键?
  • 时序攻击
  • Active Directory安全技巧:FSMO角色管理与PowerShell查询
  • 联合体与枚举
  • 【React系列】React.memo() vs useMemo()
  • 前端: 如何优化列表大批量的数据渲染
  • tomcat启动一次问题的处理。
  • 软件开发 --- trae如何和环境配合执行
  • 应用安全 --- 如何反编译一个超大的函数
  • 【模块化解读】commonjs vs commonjs2 exports vs module.exports
  • PHP 8.5 新特性 闭包可以作为常量表达式了
  • 【JavaScript-基础】map、forEach、for、for in、for of等的区别
  • dotnet 利用 Windows 注册表实现开机自动启动
  • Python 类属性的应用场景
  • 玄机——第五章 Windows 实战-evtx 文件分析
  • 软件工程第二次团队作业——构建一个智能体
  • CityNav:包含地理信息的语言目标空中导航数据集 - MKT