poj 1723
来源:互联网 发布:交易平台数据库设计 编辑:程序博客网 时间:2024/06/07 03:56
//士兵排队,最终站成一排,移动步数最少,这道题做的时候,//我也是首先考虑了士兵最终到底站到哪一排才能使移动步数最少,//也想到了,最终选定的那一排肯定是所有士兵的纵坐标的最大值和//最小值之间的某个纵坐标处,但是到底怎样来确定这个位置呢,//就再也没想到了~~~~,还是和做poj 3262的情况一样,数学问题,后来//看看别人的理解,说是将纵坐标从小到大排序,然后求中位数,//可是为什么要求中位数呢,再来看看中位数有什么代表性的意义吧,//说是常用它来描述该组数据的集中趋势,也就是说士兵最终站的那一排//应该是最初士兵比较集中的一排喽!可是每个士兵到达该排的步数又//该怎么算呢,看了别人写的,还是不理解为什么那样求得的就是最优解 #include<stdio.h>#include<stdlib.h>#include<string.h>#include<math.h>int N,x[10005],y[10005],x1[10005],X,Y,sum; int cmp(const void *a,const void *b){return *(int*)a-*(int*)b;}int main(){ int i; while(scanf("%d",&N)!=EOF) { sum=0; for(i=0;i<N;i++) scanf("%d %d",&x[i],&y[i]); qsort(x,N,sizeof(x[0]),cmp); for(i=0;i<N;i++) x1[i]=x[i]-i; //for(i=0;i<N;i++) //printf("%d %d\n",x[i],x1[i]); //printf("\n"); qsort(x1,N,sizeof(x1[0]),cmp); X=x1[N/2]; for(i=0;i<N;i++) sum+=abs(x1[i]-X); //printf("%d\n",sum); qsort(y,N,sizeof(y[0]),cmp); Y=y[N/2]; for(i=0;i<N;i++) sum+=abs(y[i]-Y); printf("%d\n",sum); } system("pause"); return 0;}
0 0
- poj 1723
- poj 1723!!!
- POJ-1723
- POJ 1723 SOLDIERS
- POJ--1723--SOLDIERS
- Poj 1723 SOLDIERS
- POJ 1723 SOLDIERS
- poj 1723 SOLDIERS 中位数
- poj 1723(SOLDIERS)
- POJ 1723 SOLDIERS
- POJ 1723 SOLDIERS 笔记
- poj 1723 中位数
- POJ 1723 SOLDIERS (水)
- POJ-1723 中位数
- POJ
- poj
- POJ
- POJ
- 如何分析关键词排名?
- jQuery EasyUI 学习搜集系列
- C函数之移动增删文件
- 【PIC32学习笔记】关于PIC32中的系统控制协处理器(CP0)
- 好吧 在来一次
- poj 1723
- Fragment的知识点
- linux 平台下 编译opencv
- Android软件开发之PreferenceActivity中的组件
- div居中
- projecteuler---->problem=13----Large sum
- ASP.NET Web Pages - 发布网站
- 【剑指offer】和为定值的连续正数序列
- u-boot学习(三):u-boot源码分析