B. Nauuoとチェス

リンク:https://codeforces.com/contest/1173/problem/B

質問の意味:

Nauuoはチェスを愛している女の子です。

ある日、彼女は必要が自分でゲームを発明した  n個で再生するn個のチェスの駒を  M × m個の mchessboard×メートル。行と列から番号付けされている  1 1に  m個の M。我々は、の交点のセルを表し  、Rは、R行と  CのようなC列目  R C (R、C)。

ゲームの目標は、配置することで  、Nから番号チェスの駒nは  1に1を  n個のnチェス盤の上に、  I i番目の部分は、上にあり  R I C I 以下のルールが満たされている間、(RI、CI):のために作品のすべてのペア  I iと  jは jを、  | R I - R J | + | C I - のC J | お知らせ≥ | I - J | | RI-RJ | + | CI-CJ |≥| I-J |。ここで  | X || X | 絶対値を意味し  、Xの Xを。

しかし、Nauuoはチェス盤が小さすぎたので、時々、彼女は解決策を見つけることができなかったことを発見しました。

彼女が見つけたい  彼女は置くことができた上で最小のチェス盤  のnルールに従ってn個のピースを。

彼女はまた、そのようなチェス盤に駒を配置する方法を疑問に思います。あなたは彼女を助けることはできますか?

アイデア:

左上隅のX * Xマトリックス構造は、nは1入れて、右下隅を配置します

(NX)=(NX)以来

したがって、行列の最初の行は1-Xを満たすために、最後の行は、(X + 1)N-右から左に充填されています。

コード:

#include <ビット/ STDC ++ H> 

名前空間STDを使用して、

typedefの長い長いLL。
const int型MAXN = 1E3 + 10。
const int型MOD = 1E9 + 7。
N INT、M、K、T。
INT X、Y。

INT A [MAXN] [MAXN]。

メインINT()
{ 
    CIN >> N。
    IF(N == 1)
    { 
        COUT << 1 << ENDL。
        coutの<< 1 << '' << 1 <<てendl; 
        0を返します。
    } 
    ため(; iは、i = 2は、int型<N =、iは++)
        IF((I-1)* 2> = N-1)
        { 
            X = Y = I。
            ブレーク; 
        } 
    ため(INT i = 1; iは= xを<; iは++)
        A [1]〜[I] = I。
    - (v-- I; I> = 1 && V> xはV = N、I = xをINT)用
        A [X] [I] = V。

    coutの<< X <<てendl; 
    以下のために(INT i = 1; iが= xを<; I ++)
        のための(INT J = 1; J <= Y; J ++)
            IF([I]、[J] <= N && A [I] [J]> = 1)
                COUT << I << '' << J <<てendl; 

    0を返します。
}

  

おすすめ

転載: www.cnblogs.com/YDDDD/p/10990876.html
おすすめ