CF1428A Box is Pull 题解
2024-10-17 03:46:17
Content
有一个兔子拖着一个盒子在走,每秒钟可以带着盒子走一个单位,也可以不带着盒子走一个单位。当且仅当兔子和盒子的距离不超过 \(1\) 时可以带着盒子走一个单位。现给出 \(t\) 次询问,每次询问给出四个整数 \(x_1,y_1,x_2,y_2\),试求出将盒子从 \((x_1,y_1)\) 拖到 \((x_2,y_2)\) 最少需要多少秒。
数据范围:\(1\leqslant t\leqslant 1000,1\leqslant x_1,y_1,x_2,y_2\leqslant 10^9\)。
Solution
谨以此纪念本人的第一场 CF。
我们根据三个情况来分类讨论:
- \(x_1=x_2\),此时直接向平行于 \(y\) 轴的方向移动即可,答案就是 \(|y_1-y_2|\)。
- \(y_1=y_2\),此时直接向平行于 \(x\) 轴的方向移动即可,答案就是 \(|x_1-x_2|\)。
- \(x_1\neq x_2\) 且 \(y_1\neq y_2\),此时先往一个方向走,再转到另一个方向去走,由题目可知,转向需要让兔子先移动 \(2\) 个单位,所以答案就是 \(|x_1-x_2|+|y_1-y_2|+2\)。
直接根据每个情况输出答案即可。
Code
int t, x1, y1, x2, y2;
int main() {
getint(t);
while(t--) {
int ans = 0;
getint(x1), getint(y1), getint(x2), getint(y2);
if(x1 == x2) ans = abs(y1 - y2);
else if(y1 == y2) ans = abs(x1 - x2);
else ans = abs(x1 - x2) + abs(y1 - y2) + 2;
writeint(ans), puts("");
}
return 0;
}
最新文章
- 鼠标 mouseover和mouseout事件
- ftp unable to fetch some archives,maybe run apt-get update or try with -- fix-missing?
- c.BIO连接器与NIO连接器的对比
- linux命令别名的使用
- UVa 1149 (贪心) Bin Packing
- leetcode:ZigZag Conversion 曲线转换
- shell编程的一些例子3
- (转) html块级元素和内联元素区别详解
- 把VS2010的智能代码提示和注解从英文变成中文
- struts2和struts1认识
- 3. leetcode 463 Island Perimeter
- SpringIOC和AOP简单概述
- canvas绘制环形进度条
- vs2017 代码格式化 文档排版 编辑 设置文档的格式
- Leetcode 999. 车的可用捕获量
- NOIP2012国王游戏(60分题解)
- 域控场景下windows安全日志的分析--审计认证行为和命令的历史记录
- 图学ES6-6.数值的扩展
- java的HashMap 原理
- CentOS 6.4安装配置LAMP服务器
热门文章
- idea内存配置
- 解决texlive化学式转换镜像经常偶发性进程堆积导致卡顿问题
- 妹子始终没搞懂OAuth2.0,今天整合Spring Cloud Security 一次说明白!
- 36-Same Tree
- Python time&;datetime模块
- 编程艺术第十六~第二十章:全排列/跳台阶/奇偶调序,及一致性Hash算法
- idea 启动debug的时候throw new ClassNotFoundException(name)
- A Child's History of England.45
- 零基础学习java------20---------反射
- 栈常考应用之括号匹(C++)