6 条题解
-
6
这题,不是和 选址问题 一样吗?
只不过加了个 T 而已,一道㵘题,建议先做 选址问题 。
代码:
#include <cstdio> #include <algorithm> using namespace std; int T , n , a[30005]; int pd(int x){ //计算距离总和 int rrr = 0; for(int i = 1;i <= n;i++) rrr += abs(x - a[i]); return rrr; } int main(void){ scanf("%d" , &T); while(T--){ scanf("%d" , &n); for(int i = 1;i <= n;i++) scanf("%d" , &a[i]); sort(a + 1 , a + n + 1); //排序 printf("%d\n" , pd(a[(n + 1) >> 1])); //把商店放在中间 } }
-
1
#include <bits/stdc++.h> using namespace std; int n, a[100000], t; int s (int x) { int num = 0; for (int i = 1; i <= n; i++) num += abs(x - a[i]); return num; } int main() { cin >> t; for (int j = 0; j < t; j++) { cin >> n; for (int i = 1;i <= n;i++) cin >> a[i]; sort(a + 1 , a + n + 1); cout << s(a[(n + 1) >> 1])<<endl; } return 0; }
-
0
int pd(int x){ int rrr = 0; for(int i = 1;i <= n;i++) rrr += abs(x - a[i]); return rrr; }
-
0
感谢森林?
</span>#include <bits/stdc++.h> using namespace std; int a[100001]; int main(){ int n,mid=0,ans=0,t; cin>>t; for(int k=1;k<=t;k++){//10~21行可用于上一题 cin>>n; for(int i=1;i<=n;i++) cin>>a[i]; sort(a+1,a+n+1); if(n%2==0){ mid=a[n/2]; }else{ mid=a[(n+1)/2]; } for(int i=1;i<=n;i++){ ans+=abs(mid-a[i]); }cout<<ans<<endl; ans=0; memset(a,0,sizeof(a)); } return 0; }
- 1
信息
- ID
- 1039
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 4
- 标签
- 递交数
- 450
- 已通过
- 221
- 上传者