I 排序
A
Description:
- 一叠卡牌有
张,每张卡牌上面写有一个数字,从上往下数第 张卡牌上面写的数字为 ,每张卡牌上面写的数字互不相等,并且数字都在 的范围内。现在要把卡牌整理成顺序卡牌(卡牌堆从上到下第 张卡牌上面写着数字 )。 可是这叠卡牌被诅咒过,对卡牌的操作只能按以下规则执行: - 选择牌堆中任意一张卡牌,从卡牌堆中抽出,并将其放置于牌堆顶。
- 请问最少需要执行几次这样的操作可以将卡牌整理成顺序卡牌
Constraints:
-
-
-
,
Analysis:
- 最多要进行
次操作,只要某个数比前面小,就要调整顺序,故可以从后遍历,找到最长的接续序列,如 ,最小操作次数即为总长度减去该序列的长度。
Solution:
void solve() {
int n; cin >> n;
vector<int> v;
for(int i=0;i<n;i++) {
int x; cin >> x;
v.push_back(x);
}
int ans = n;
for(int i=n-1;i>=0;i--) {
if(v[i] == ans) ans --;
}
cout << ans << endl;
}
本文来自博客园,作者:Trilliverse,转载请注明原文链接:https://www.cnblogs.com/Trilliverse/p/17826455.html
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(四):结合BotSharp
· Vite CVE-2025-30208 安全漏洞
· 《HelloGitHub》第 108 期
· MQ 如何保证数据一致性?
· 一个基于 .NET 开源免费的异地组网和内网穿透工具