藍橋杯 閱兵方陣(預處理 暴力)

2021-10-24 19:52:36 字數 1004 閱讀 7404

預處理一下平方數(還是第一次開2e8的陣列),然後暴力判斷一下就好,注意只需要列舉一半即可,例如13=4+9,如果列舉到9+4那麼顯然就重複了。

// #pragma gcc optimize(2)

#include #include #include #include #include #include #include #include #include #include #include #include #include #include #define io \

ios::sync_with_stdio(false); \

// cout.tie(0);

using namespace std;

// int dis[8][2] = ;

typedef unsigned long long ull;

typedef long long ll;

typedef pairp;

const int maxn = 1e8 + 10;

const int maxm = 2e5 + 10;

const ll inf = 0x3f3f3f3f3f3f3f3f;

const int inf = 0x3f3f3f3f;

const ll mod = 1e9 + 7;

const double eps = 1e-8;

const double pi = acos(-1);

int dis[4][2] = ;

//int m[13] = ;

bool sq[maxn];

ll num[maxn];

bool check(ll val)

}return cnt == 12;

}int main()

for(ll i=1106;;i++)

{ if(check(i))

{ cout<答案是:160225

藍橋杯 邊界為1的最大子方陣(預處理)

其中,邊框全是1的最大正方形的大小是4 4,故返回4。這道題我之前還寫過一篇採用暴力搜尋法來解決的,但是時間複雜度比較大o n 4 可能會超時,沒看過的小夥伴可以看下 暴力搜尋版 此處我們先對這個矩陣進行預處理,有點類似於動態規劃,思路就是新建乙個n n 2的三維陣列,其中規定,每乙個元素如果是1,...

藍橋杯 轉方陣

對乙個方陣轉置,就是把原來的行號變列號,原來的列號變行號 例如,如下的方陣 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 轉置後變為 1 5 9 13 2 6 10 14 3 7 11 15 4 8 12 16 但,如果是對該方陣順時針旋轉 不是轉置 卻是如下結果 1...

藍橋杯 轉方陣

對乙個方陣轉置,就是把原來的行號變列號,原來的列號變行號 例如,如下的方陣 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 轉置後變為 1 5 9 13 2 6 10 14 3 7 11 15 4 8 12 16 但,如果是對該方陣順時針旋轉 不是轉置 卻是如下結果 1...