题意:
很简单的题意,给定一些坐标在数轴上,问给所有的点距离数轴的哪个点的距离之和最小。
2016年8月23日11:36:53:
求的是距离给定的点的最小和!
思路:
在我的Wrong中找亮点!!
不玩了,睡觉。注册账号半年了,第一次玩CF,刚开始不会提交,语言选错了。
好不容易测过了第二个测试数据,卡在了第三个。还有分吗?????
总结:
2016年8月23日11:36:28
数学专场吗?挺有意思的,下午就是数学场积分赛了,无论27号我还在不在ACM协会,我认为自己都有了对算法的兴趣!潜心默行,慢慢努力。
说说比赛,昨天晚上22点场(不用熬夜的),兴致勃勃的一看是数学,就在那里敲啊敲的!
一直卡壳,刚才2016年8月23日11:35:05突然发觉,数组的起始是 0,但是自己的结论是数字标号是 1 开始的,
慢慢来吧,慢慢的积累经验。
AC Code:
2016年8月23日11:32:17
#include<stdio.h>
#include<cstring>
#include<algorithm>
using namespace std;
typedef __int64 LL;
const int MYDD=1103+3e5;
int a[MYDD];
int main() {
int n;
scanf("%d",&n);
for(int j=1; j<=n; j++)
scanf("%d",&a[j]);
sort(a+1,a+n+1);
int ans=a[(n+1)/2];
printf("%d\n",ans);
return 0;
}
Wrong Code1:
在坐标轴上找点
#include<stdio.h>
#include<cstring>
#include<algorithm>
using namespace std;
typedef __int64 LL;
const int MYDD=1103+3e5;
int a[MYDD];
int main() {
int n;
scanf("%d",&n);
for(int j=1; j<=n; j++)
scanf("%d",&a[j]);
sort(a+1,a+n+1);
int ans,v1,v2;
LL ans1=0,ans2=0;
if(n%2) ans=a[(n+1)/2];/*奇数*/
else {/*偶数*/
ans=(a[n/2]+a[n/2+1])/2;
}
printf("%d\n",ans);
return 0;
}
/*
6
0 4 13 25 37 46
25 91
13 91
*/
Wrong Code2:
在给定的坐标找点
#include<stdio.h>
#include<cstring>
#include<algorithm>
using namespace std;
typedef __int64 LL;
const int MYDD=1103+3e5;
int a[MYDD];
int main() {
int n;
// while(1) {
scanf("%d",&n);
for(int j=0; j<n; j++)
scanf("%d",&a[j]);
sort(a,a+n);
int ans,v1,v2;
LL ans1=0,ans2=0;
if(n%2) ans=a[(n+1)/2];/*����*/
else {/*ż��*/
if(n>1) {
v1=a[n/2-1];
v2=a[n/2];
for(int j=0; j<n; j++) {
ans1=ans1+abs(a[j]-v1);
ans2=ans2+abs(a[j]-v2);
}
if(ans1<=ans2) ans=v1;
else ans=v2;
} else
ans=a[n/2];
}
printf("%d\n",ans);
// }
return 0;
}
/*
6
0 4 13 25 37 46
25 91
13 91
*/