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

AcWing 4579. 相遇问题

这道题做个今天的结尾

比较简单

正在备战csp吗,正好刷一下

难度:简单
时/空限制:1s / 256MB
总通过数:1738
总尝试数:2584
来源:

CSP-J 2022 模拟赛

原题链接

4579. 相遇问题 - AcWing题库

题目描述

一个无限长的楼梯上站着两个人,其中一个人在第 a 级台阶上,另一个人在第 b 级台阶上。

两个人都可以自由的上下移动,每人每次可以向上或向下移动一级台阶。

每个人的每次移动都要消耗体力,具体为:

对于同一个人来说,其第 11次移动消耗的体力为 1,第 2 次移动消耗的体力为 2,第 3 次移动消耗的体力为 3,以此类推。

例如,如果一个人先向上移动一级台阶,再向下移动一级台阶,最后再次向上移动一级台阶,那么他消耗的总体力值为 1+2+3=6。

两个人想要通过合理移动,使得他们能够在同一级台阶上相遇,并且相遇时,两人消耗的总体力值之和尽可能小。

请你计算,两人消耗的总体力值之和的最小可能值。

输入格式

第一行包含一个整数 a。

第二行包含一个整数 b。

输出格式

一个整数,表示两人消耗的总体力值之和的最小可能值。

数据范围

所有测试点满足,1≤a,b≤1000,a≠b。

输入样例1:
3
4
输出样例1:
1
样例1解释

在本样例中,让第一个人上一级台阶或第二个人下一级台阶均可,消耗总体力为 1。

输入样例2:
101
99
输出样例2:
2
样例2解释

在本样例中,让第一个人下一级台阶,同时让第二个人上一级台阶即可,消耗总体力为 1+1=2。

输入样例3:
5
10
输出样例3:
9
样例3解释

在本样例中,一种最佳方案为让第一个人上两级台阶,同时让第二个人下三级台阶,消耗总体力为 1+2+1+2+3=9。

要解决这个问题,我们需要让两个站在不同台阶上的人通过移动相遇,并且使他们消耗的总体力值之和最小。
首先分析问题的关键特点
两人初始位置分别在第 a 级和第 b 级台阶
每次移动消耗的体力值等于移动次数(第 1 次 1 点,第 2 次 2 点,依此类推)
目标是找到最佳相遇点,使总消耗体力最小
解题思路
首先计算两人初始位置的距离 d = |a - b|
当 d = 1 时,只需其中一人移动 1 步,总消耗为 1
当 d > 1 时,最优策略是让两人向中间位置移动:
距离较近的人移动 k 步
距离较远的人移动 d-k 步
为使总消耗最小,应让两人的移动次数尽可能均衡

首先,我代码的思路是:
1.确保 a < b
2.当两人相邻时直接返回 1
3.计算中间点 c = (a+b)/2
4.计算 a 到 c-1 的体力消耗
5.计算 c+1 到 b 的体力消耗
6.输出总消耗

下面是我的代码

#include <bits/stdc++.h>
using namespace std;int main(){int a,b;cin>>a>>b;if(a>b){swap(a,b);}if(b-a==1){cout<<"1"<<endl;return 0;//特判}int s=0,c=(a+b)/2,ans=0;for(int i=a; i<=c-1; i++) ans++, s+=ans;ans=0;//清空for(int i=c+1; i<=b; i++) ans++, s+=ans;cout<<s;return 0;
}

http://www.dtcms.com/a/322743.html

相关文章:

  • 生物多样性智慧化监测平台
  • 麒麟linux服务器搭建ftp服务【经典版】
  • 本地WSL部署接入 whisper + ollama qwen3:14b 总结字幕
  • 量化投资初探:搭建比特币智能交易机器人
  • 当AI成为语言桥梁:Seq2Seq的机器翻译革命
  • [CUDA] CUTLASS | `CuTe DSL` 创新
  • C# 使用iText获取PDF的trailer数据
  • 基于springboot+vue开发的校园食堂评价系统【源码+sql+可运行】【50809】
  • Baumer高防护相机如何通过YoloV8深度学习模型实现输电线路塔电缆检测分割(C#代码UI界面版)
  • 《Resolving tissue complexity by multimodal spatial omics modeling with MISO》
  • Python人工智能matplotlib中markers属性介绍
  • 【高等数学】第八章 向量代数与空间解析几何——第四节 空间直线及其方程
  • ABP VNext + Apache Kafka Exactly-Once 语义:金融级消息一致性实战
  • Linux用户和组管理及Apache服务安装
  • 浅谈 VM 桥接模式:让虚拟机像真实电脑一样接入网络
  • Go语言实战案例:表单提交数据解析
  • CMU-15445(8)——PROJECT#3-Query Execution-Task#1
  • 前端工程化:从构建工具到性能监控的全流程实践
  • DeepSeek智能考试系统智能体
  • 大语言模型提示工程与应用:大语言模型对抗性提示安全防御指南
  • electron多进程设计
  • Uipath Studio中邮件自动化
  • 使用GTX ip core + SDI IP core实现SDI设计
  • flex布局原理
  • Day 9: Transformer注意力机制原理 - 从直观理解到数学推导的完整解析
  • Vue接口测试平台十三 —— 测试报告
  • Java基础-红包雨游戏-多线程
  • 如何判断一个数是 2 的幂 / 3 的幂 / 4 的幂 / n 的幂 位运算 总结和思考 每日一题 C++的题解与思路
  • 後端開發技術教學(四) 數據交互延伸
  • Visual Studio Code (v1.103) 中 GitHub Copilot 最新更新!