【CF1020A】New Building for SIS(签到)
2024-08-26 04:37:41
题意:
有n栋楼,从一栋楼某个地方,到大另一栋楼的某个地方,每栋楼给了连接楼的天桥,每走一层或者穿个一栋楼花费一分钟,求出起点到大目的点最少花费的时间
n,h<=1e8,q<=1e4
思路:分类讨论
#include<cstdio>
#include<cstring>
#include<string>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<map>
#include<set>
#include<queue>
#include<vector>
using namespace std;
typedef long long ll;
typedef unsigned int uint;
typedef unsigned long long ull;
typedef pair<int,int> PII;
typedef vector<int> VI;
#define fi first
#define se second
#define MP make_pair
#define N 1100000
#define MOD 1000000007
#define eps 1e-8
#define pi acos(-1) int read()
{
int v=,f=;
char c=getchar();
while(c<||<c) {if(c=='-') f=-; c=getchar();}
while(<=c&&c<=) v=(v<<)+v+v+c-,c=getchar();
return v*f;
} void swap(int &x,int &y)
{
int t=x;x=y;y=t;
} int main()
{
//freopen("1.in","r",stdin);
//freopen("1.out","w",stdout);
int n,h,a,b,k;
scanf("%d%d%d%d%d",&n,&h,&a,&b,&k);
for(int i=;i<=k;i++)
{
int x1,y1,x2,y2;
scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
int ans=<<;
ans=min(ans,abs(a-y1)+abs(x1-x2)+abs(a-y2));
ans=min(ans,abs(b-y1)+abs(x1-x2)+abs(b-y2));
if(a<=y1&&y1<=b) ans=min(ans,abs(x2-x1)+abs(y1-y2));
if(a<=y2&&y2<=b) ans=min(ans,abs(x2-x1)+abs(y1-y2));
if(x1==x2) ans=min(ans,abs(y1-y2));
printf("%d\n",ans);
}
最新文章
- SharePoint2013 显示网站菜单中设计管理器功能
- 尝试在你浏览器的Console(F12)中运行一下,你会发现页面被不同的颜色块高亮了(css调试中学到的js)
- mysql 有两种数据库引擎发音
- PHP 格中方法
- C++中的数组
- 判断是手机还是PC端访问
- 阅读《LEARNING HARD C#学习笔记》知识点总结与摘要二
- [deviceone开发]-百度地图do_BaiduMap的示例
- [BZOJ1116][Poi2008]LCO(并查集)
- ASP.NET Core -- 安装版
- c++英文单词频度统计程序
- 笔记本安装Win2012R2 心得(包含无线网卡+有线网卡驱动解决方法)
- java &#39;相等&#39;的比较.
- iOS 如何随意的穿插跳跃,push来pop去
- EntityFramework Core进行读写分离最佳实践方式,了解一下(二)?
- loadrunner中使用web_custom_request函数调用webservice接口
- 判断是否为AVL树
- [Android P] Android P版本 新功能介绍和兼容性处理(一)
- Java中遍历字符串toCharArray()和charAt()效率比较
- RIGHT-BICEP测试第二次程序