NC244323. 放羊的贝贝
描述
输入描述
第一行,包含三个整数。
第二行,包含四个整数。
接下来的行,每行两个整数。
数据保证羊圈和羊儿的位置均位于大草原之中。
输出描述
仅一行,输出一个整数,表示需要花费的最小的能量。
示例1
输入:
100 100 4 2 2 4 4 1 1 2 1 0 2 1 3
输出:
14
说明:
使用圆圈所占领的的格子表示羊儿的位置,虚线表示羊圈的位置,橙色实线表示最后围起来的封闭多边形(围栏),蓝色顶点表示表示该多边形的顶点。C 解法, 执行用时: 26ms, 内存消耗: 356K, 提交时间: 2022-10-21 23:55:47
#include<stdio.h> int main() { long long int n,m,k,a,b,c,d,x,y; scanf("%lld %lld %lld",&n,&m,&k); scanf("%lld %lld %lld %lld",&a,&b,&c,&d); for(int i=0;i<k;i++) { scanf("%lld %lld",&x,&y); a=x<a?x:a; b=y<b?y:b; c=x+1>c?x+1:c; d=y+1>d?y+1:d; } printf("%lld",(c-a+d-b)*2); }
pypy3 解法, 执行用时: 374ms, 内存消耗: 60424K, 提交时间: 2022-10-22 08:59:32
n,m,k=map(int,input().split()) a,b,c,d=map(int,input().split()) lx=[] ly=[] for i in range(k): x,y=map(int,input().split()) lx.append(x) ly.append(y) lx.append(a) lx.append(c-1) ly.append(b) ly.append(d-1) e=max(lx) f=max(ly) g=min(lx) h=min(ly) print((e-g+1)*2+(f-h+1)*2)
C++(g++ 7.5.0) 解法, 执行用时: 74ms, 内存消耗: 1416K, 提交时间: 2022-10-22 19:38:33
#include <bits/stdc++.h> using namespace std; int main() { int n,m,k;cin>>n>>m>>k; int a,b,c,d;cin>>a>>b>>c>>d; for(int i=1,x=0,y=0;i<=k;i++) { cin>>x>>y; a=min(a,x);c=max(c,x+1); b=min(b,y);d=max(d,y+1); } printf("%lld",2ll*(c-a+d-b)); }
C++(clang++ 11.0.1) 解法, 执行用时: 67ms, 内存消耗: 428K, 提交时间: 2022-10-21 19:03:22
#include <bits/stdc++.h> using namespace std; int main() { int n,m,k;cin>>n>>m>>k; int a,b,c,d;cin>>a>>b>>c>>d; for(int i=1,x,y;i<=k;i++){ cin>>x>>y; a=min(a,x);c=max(c,x+1); b=min(b,y);d=max(d,y+1); } printf("%lld",2ll*(c-a+d-b)); }
Python3 解法, 执行用时: 531ms, 内存消耗: 7168K, 提交时间: 2022-10-25 22:01:41
k=int(input().split()[2]) a,b,c,d=map(int,input().split()) for _ in range(k): x,y=map(int,input().split()) a=min(a,x) b=min(b,y) c=max(c,x+1) d=max(d,y+1) print(d+c-a-b<<1)