题意是在一个矩形中任给N个点,求这N个点到矩形某边的最短距离和。
一开始想到直接贪心,求出每个点到矩形一边的最短距离,但题中说到线段间不能交叉,这里好像是比较麻烦,但题目中同时说了点与点之间的横纵坐标均不相等,那么就不会发生线段交叉,直接求即可。
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
1 #include<bits/stdc++.h> 2 #define in(a) scanf("%d",&a) 3 using namespace std; 4 int main() 5 { 6 int n,mx,my,x,y,N,minn; 7 __int64 ans; 8 in(n); 9 while(n--) 10 { 11 ans = 0; 12 in(mx);in(my);in(N); 13 for(int i = 0; i < N; i++) 14 { 15 in(x);in(y); 16 minn = min(x,y); 17 minn = min(minn,mx-x); 18 minn = min(minn,my-y); 19 ans += minn; 20 } 21 printf("%I64d\n",ans); 22 } 23 return 0; 24 }