zoukankan      html  css  js  c++  java
  • CodeForces463C Gargari and Bishops(贪心)

    CodeForces463C Gargari and Bishops(贪心)

    CodeForces463C

    题目大意: 
    在国际象棋的棋盘上放两个主教,这个两个主教不能攻击到同一个格子,最后的得分是这两个主教的攻击的格子上的分数之和。

    求最大的分数。

    解题思路: 
    由于攻击的范围是对角线,所以两个主教一个在黑格,一个在白格。画个图就能够发现一旦一个主教放在了黑格。那么剩下的黑格是都不能在放主教的,否则就是攻击到同样的格子。

    所以求出每条对角线的和,通过这个得出每一个格子作为主教的得分,最后黑白格分开讨论。

    代码:

    #include <cstdio>
    #include <algorithm>
    #include <cstring>
    
    using namespace std;
    
    typedef long long ll;
    const int maxn = 2e3 + 5;
    
    int N;
    ll G[maxn][maxn];
    ll d1[maxn*2], d2[maxn*2];
    
    int main () {
    
        while (scanf ("%d", &N) != EOF) {
    
            memset(d1, 0, sizeof (d1));
            memset(d2, 0, sizeof (d2));
    
            for (int i = 1; i <= N; i++)
                for (int j = 1; j <= N; j++) {
                    scanf ("%lld", &G[i][j]);
                    d1[i + j] += G[i][j];
                    d2[(i - j) + N] += G[i][j];
                }
    
            ll odd = -1, even = -1;
            int oddx, oddy, evenx, eveny;
            for (int i = 1; i <= N; i++) {
                for (int j = 1; j <= N; j++) {
    
                    if ((i + j)&1) {
                        if (odd < d1[i + j] + d2[i - j + N] - G[i][j]) {
                            odd = d1[i + j] + d2[i - j + N] - G[i][j];
                            oddx = i;
                            oddy = j;
                        }
                    } else {
                        if (even < d1[i + j] + d2[i - j + N] - G[i][j]) {
                            even = d1[i + j] + d2[i - j + N] - G[i][j];
                            evenx = i;
                            eveny = j;
                        }
                    }
                }
            }
    
            printf ("%lld
    %d %d %d %d
    ", odd + even, oddx, oddy, evenx, eveny);
        }
        return 0;
    }
  • 相关阅读:
    POJ3709 K-Anonymous Sequence 斜率优化DP
    POJ3233 Matrix Power Series
    第六周 Leetcode 446. Arithmetic Slices II
    POJ1743 Musical Theme 最长重复子串 利用后缀数组
    Ural 1517. Freedom of Choice 后缀数组
    iOS跳转到另一个程序
    上传源码到github
    NSTimer用法,暂停,继续,初始化
    iOS中多线程原理与runloop介绍
    NSRunLoop 概述和原理
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/5271467.html
Copyright © 2011-2022 走看看