Hdu 5248
hdu5248-序列变换
题意:
给你一个序列A,要求改变序列A中的某些元素的顺序,形成一个新的数列B,并保证数列B严格单调递增,求出最小代价。
代价计算公式 $ cost(a,b)=max(|A_i - B_i|) $ 。
解法:
和跳石头那道题类似,通过二分答案不断缩小范围,再每次贪心的取最小值即可。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
#define LL long long
#define N 100010
int ans,cnt = 1;
int a[N],n,T,tmp;
inline bool check(int x) {
int pre = a[1] - x;
for(int i = 2 ; i <= n ; i++) {
if(a[i] + x <= pre) return 0;
pre = max(pre + 1, a[i] - x);
}
return 1;
}
int main() {
scanf("%d",&T);
while(T--) {
scanf("%d",&n);
tmp = 0;
for(int i = 1 ; i <= n ; i++) {
scanf("%d",&a[i]);
if(tmp < a[i]) tmp = a[i];
}
int l = 0, r = 0x3f3f3f, ans;
while(l <= r) {
int mid = (l + r) >> 1;
if(check(mid)) {
r = mid - 1;
ans = mid;
} else l = mid + 1;
}
printf("Case #%d:\n%d\n",cnt++,ans);
}
//system("pause");
return 0;
}
有些路你和某人一起走,就长得离谱,你和另外一些人走,就短得让人舍不得迈开脚步。
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从二进制到误差:逐行拆解C语言浮点运算中的4008175468544之谜
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· C# 13 中的新增功能实操
· Ollama本地部署大模型总结
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(4)
· langchain0.3教程:从0到1打造一个智能聊天机器人
· 用一种新的分类方法梳理设计模式的脉络