nyoj 7 街区最短路径
2014-12-15 20:44
162 查看
#include <stdio.h> #include <algorithm> using namespace std; int cmp(int a, int b) { return a<b; } int main() { int n, m, i, midx, midy, x[105], y[105], sum1, sum2; scanf("%d", &n); while(n--) { sum1 = sum2 = 0; scanf("%d", &m); for(i = 0 ; i < m ; i++) scanf("%d %d", &x[i], &y[i]); sort(x, x+m, cmp); midx = x[m/2]; for(i = 0 ; i < m ; i++) //用到了一种化简 { if(i < m/2) sum1 = sum1 - x[i]; else if(i > m/2) sum1 = sum1 + x[i]; } if(m % 2 == 0) sum1 = sum1 + midx; sort(y, y+m, cmp); midy = y[m/2]; for(i = 0 ; i < m ; i++) { if(i < m/2) //求中位数的时候遇到的判断奇偶性的问题 sum2 = sum2 - y[i]; else if(i > m/2) sum2 = sum2 + y[i]; } if(m % 2 == 0) sum2 = sum2 + midy; printf("%d\n", sum1 + sum2); } return 0; }
可以看成走方格问题。这个和高中那些求到哪点哪点之间最短的点那种题不一样,这里只能横着走和竖着走,也就是只能走方格。所以横纵坐标都是中位数。
这里用到了一种化简,比如1,2,3,4,5.sum就是(3-1)+(3-2)+(4-3)+(5-3)= 4 + 5 - 1 - 2.所以中位数以前的就是被减,之后的就是被加。也要分奇偶性分析。
相关文章推荐
- nyoj7_街区最短路径问题
- nyoj 7 街区最短路径问题
- NYOJ 7 街区最短路径问题
- nyoj 7:街区最短路径问题
- 【NYOJ】题目7街区最短路径
- nyoj 7 街区最短路径问题
- NYOJ 街区最短路径问题
- NYOJ 7(街区最短路径问题)
- NYOJ——街区最短路径问题
- NYOJ7街区最短路径问题
- NYOJ-7-街区最短路径问题
- NYOJ - 街区最短路径问题
- NYoj-街区最短路径问题
- nyoj-7-街区最短路径问题
- NYOJ 7 街区最短路径问题(数学问题)
- NYOJ7——街区最短路径问题
- nyoj 7街区最短路径问题(暴力 || 哈曼顿距离)
- NYOJ7 街区最短路径问题 【数论】
- Nyoj 7 街区最短路径问题
- NYOJ 7 街区最短路径问题