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

codeforcesB. Alice‘s Adventures in Permuting

目录

题目: 

思路分析:

总代码:

题目: 

https://codeforces.com/contest/2028/problem/B

B. 爱丽丝的排列冒险

每个测试时间限制:1秒
每个测试内存限制:256兆字节

爱丽丝把“嬗变”和“排列”搞混了!她有一个由三个整数 nn、bb、cc 定义的数组 aa:数组 aa 的长度为 nn,且 ai=b⋅(i−1)+cai​=b⋅(i−1)+c(1≤i≤n1≤i≤n)。例如,当 n=3n=3、b=2b=2、c=1c=1 时,a=[2⋅0+1,2⋅1+1,2⋅2+1]=[1,3,5]a=[2⋅0+1,2⋅1+1,2⋅2+1]=[1,3,5]。

现在,爱丽丝特别喜欢长度为 nn 的排列(即包含 00 到 n−1n−1 所有整数的数组),并希望通过操作将 aa 转化为排列。每次操作中,爱丽丝会将当前数组的最大元素替换为该数组的 MEX(即数组中缺失的最小非负整数)。如果有多个最大值,她选择最左边的那个进行替换。

请你帮助爱丽丝计算,最少需要多少次操作才能使 aa 首次成为排列。如果不可能实现,请输出 −1−1。

排列定义:长度为 nn 的排列是指包含 00 到 n−1n−1 所有整数且不重复的数组。例如,[1,2,0,4,3][1,2,0,4,3] 是排列,但 [0,1,1][0,1,1] 不是(重复出现 11),[0,2,3][0,2,3] 也不是(n=3n=3 但包含 33)。

MEX 定义:数组的 MEX 是指未出现在数组中的最小非负整数。例如,[0,3,1,3][0,3,1,3] 的 MEX 是 22,而 [5][5] 的 MEX 是 00。

输入格式

每个测试包含多个测试用例。第一行输入测试用例数量 tt(1≤t≤10.5,1≤t≤10.5)。随后每个测试用例占一行,包含三个整数 nn、bb、cc(1≤n≤10.18,1≤n≤10.18,0≤b,c≤10.18 0≤b,c≤10.18)。

输出格式

对于每个测试用例,如果无法使 aa 成为排列,输出 −1−1。否则,输出使其首次成为排列所需的最少操作次数。

思路分析:

关键点:这个数组是非递减数组,b等于零时是常数组,b不等于零时是递增数组;

因此我们根据b的正负来分类讨论

同时本数组的最小值一定是c,且数组中小于(n-1)的部分后序可以不用执行操作步骤,只需执行大于n-1的部分的次数即可

总代码:

#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N = 1000 + 10;
void solve(){int n,b,c;cin >> n >> b >> c;if(b==0){if(c>n-1)cout << n<<endl;else if(c>=n-2)cout << n-1<<endl;else cout << -1 << endl;}else{ if(c>n-1){cout << n << endl;}else if(c==n-1){cout << n-1 << endl;}else {int cnt = (n - 1 - c) / b + 1;cout << n - cnt << endl;}
}
}
signed main(){ios::sync_with_stdio(false);cin.tie(0); cout.tie(0);int q; cin >> q;while(q--){solve();}return 0;
}

 

相关文章:

  • VSCode 查看文件的本地修改历史
  • 推荐 1 款 9.3k stars 的全景式开源数据分析与可视化工具
  • STM32完整内存地址空间分配详解
  • 小目标检测的集成融合论文阅读
  • 智能制造典型场景参考指引(2025年版)
  • Server-Sent Events (SSE) 服务端单项实时给前端推送消息
  • 基于ffmpeg的音视频编码
  • 复合模式(Composite Pattern)
  • 【Java开发日记】OpenFeign 的 9 个坑
  • Meta 推出 WebSSL 模型:探索 AI 无语言视觉学习,纯图训练媲美 OpenAI CLIP
  • 深入浅出限流算法(三):追求极致精确的滑动日志
  • leetcode283-移动零
  • 【神经网络与深度学习】两种加载 pickle 文件方式(joblib、pickle)的差异
  • uniapp自定义头部(兼容微信小程序(胶囊和状态栏),兼容h5)
  • 深度解析算法之分治(归并)
  • el-table 自定义列、自定义数据
  • 【网络编程】TCP/IP四层模型、MAC和IP
  • npm init、换源问题踩坑
  • 杰理-安卓通过map获取时间的时候,部分手机切换sbc和aac时候单耳无声音
  • redis+lua+固定窗口实现分布式限流
  • 央视曝光假进口保健品:警惕!保税仓发货不等于真进口
  • 上海市政府常务会议研究抓好稳就业稳企业稳市场稳预期工作,让企业感受温度
  • 上海首个航空前置货站落户松江综合保税区,通关效率可提升30%
  • 葛兰西的三位一体:重提并复兴欧洲共产主义的平民圣人
  • 伊朗港口爆炸已造成281人受伤
  • 巴基斯坦最近“比较烦”:遣返阿富汗人或致地区局势更加动荡