当前位置:   article > 正文

CodeForces - 985A Chess Placing(水)_chess placing题解

chess placing题解

题意:给你一个1*n的格子(n是偶数),对他们进行染色,染色的规则是一个黑一个白一个黑一个白,之后给你一个n/2个棋子问你让这些棋子都移动到颜色相等的地方的最小值是多少?移动的规则是不能越过前面的格子,且一个格子只能放一个

思路:首先明确一点,对于一个长度为n的格子他的黑白格其实都是已经确定了的值,那么他们要么都移动到偶数要不就都移动到奇数上我们判断一下就好了 比较水

代码:

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int a[111];
  4. int main()
  5. {
  6. int n;
  7. scanf("%d",&n);
  8. for(int i = 1 ; i <= n/2 ; i++)
  9. {
  10. scanf("%d",&a[i]);
  11. }
  12. sort(a+1,a+n/2+1);
  13. //for(int i = 1 ; i <= n/2 ; i++) printf("%d ",a[i]);
  14. int ans1 = 0,ans2 = 0;
  15. //cout<<n<<endl;
  16. int pos = n/2;
  17. for(int i = n ; i > 1 ; i = i - 2)
  18. {
  19. // printf("i = %d %d a[pos] = %d\n",i,i-1,a[pos]);
  20. ans1 += abs(i - a[pos]);
  21. if(i-1 == 0) continue;
  22. ans2 += abs((i-1) - a[pos]);
  23. pos--;
  24. }
  25. printf("%d\n",min(ans1,ans2));
  26. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/912643
推荐阅读
相关标签
  

闽ICP备14008679号