AcWing - 123 - 士兵 = 贪心

Posted inko

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AcWing - 123 - 士兵 = 贪心相关的知识,希望对你有一定的参考价值。

https://www.acwing.com/problem/content/125/

一开始觉得很复杂,但是其实和去中点一样,只不过对于x来说要排个序,然后贪心让最近的士兵去他应该去的位置,这样不会更差。
所以xy是无关的,总是存在一种办法使得他们不会走到禁止格。
直接排序。

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

int x[10005], y[10005];

int main() 
#ifdef Yinku
    freopen("Yinku.in", "r", stdin);
#endif // Yinku
    int n;
    scanf("%d", &n);
    for(int i = 1; i <= n; ++i)
        scanf("%d%d", &x[i], &y[i]);
    sort(x + 1, x + 1 + n);
    for(int i = 1; i <= n; ++i)
        x[i] -= i;

    sort(x + 1, x + 1 + n);
    sort(y + 1, y + 1 + n);
    int xmid = x[(n + 1) / 2];
    int ymid = y[(n + 1) / 2];
    ll sum = 0;
    for(int i = 1; i <= n; ++i) 
        sum += abs(xmid - x[i]);
        sum += abs(ymid - y[i]);
    

    printf("%lld\n", sum);

以上是关于AcWing - 123 - 士兵 = 贪心的主要内容,如果未能解决你的问题,请参考以下文章

Acwing第 45 场周赛完结

Acwing第 45 场周赛完结

「贪心」士兵

[牛客每日一题] (贪心+小顶堆)NC50439 tokitsukaze

AcWing 算法基础课 第六讲 贪心 总结

HDU 4415 Assassin&#39;s Creed(贪心)