CodeForces 1213A 【思维】 题解

快来打我* 2021-07-24 18:53 491阅读 0赞

目录

      • 1.0题目
      • 2.0代码

1.0题目

zls有n个薯条,第i个薯条的位置在xi,一些薯条可能放在相同的位置上。
你可以进行任意次(包括0次)如下操作:
1.不花费任何钱,把薯条i的位置左移2或右移2,即xi加2或减2;
2.花费一元,把薯条i的位置左移1或右移1,把xi加1或减1;

请找出让所有薯条移动到同一位置花费的最少价格(即所有的xi最后都要相同)。
Input
第一行输入一个n(1<=n<=100),代表薯条的数量。
第二行输入n个整数x1,x2,…,xn(1<=xi<10^9),xi代表薯条的坐标位置。
Output
输出把n个薯条都移动到同一位置所花费的最小价格。
Examples
Input
3
6 5 4
Output
1
Input
5
7 7 6 6 6
Output
2
Note
在第一个例子中,你需要将第一个薯条向右移动2,将第二个薯条向右移动1,或者将第三个薯条向左移动2,将第二个薯条向左移动1,这样答案就是1。
在第二个例子中,你需要移动两个坐标为7的筹码,所以答案是2。

2.0代码

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstring>
  4. #include<algorithm>
  5. using namespace std;
  6. const int maxn = 100 + 10;
  7. int a[maxn],b[maxn];
  8. int main()
  9. {
  10. int n,sum=0;
  11. cin >> n;
  12. for (int i = 1; i <= n; i++)
  13. {
  14. cin >> a[i];
  15. a[i] = a[i] % 2;
  16. b[a[i]]++;
  17. }
  18. if (b[1] ==n|| b[0] == n)
  19. {
  20. cout << 0 << endl;
  21. return 0;
  22. }
  23. else
  24. {
  25. int ans = min(b[1], b[0]);
  26. cout << ans << endl;
  27. }
  28. return 0;
  29. }

发表评论

表情:
评论列表 (有 0 条评论,491人围观)

还没有评论,来说两句吧...

相关阅读