洛谷 P2363 馬農

2022-05-01 03:48:10 字數 880 閱讀 3185

題目描述

分別列舉兩個矩陣?那樣n^6太要命了。

可以列舉兩個矩形的交點

將交點看成原點,可以將整個區域分成四個象限,1與3對應,2與4對應

再列舉相對應的象限計算可以獲得的利益,用hash判重

可列舉不同的象限時還要把hash清零,n^2次的memset就超時了。。。

那怎麼繼續優化呢?

可以用乙個棧記錄hash裡增加的值,只把這些值清零就好了。

#include#include

using

namespace

std;

const

int n=51,m=1e6+7

;int

n,ans,top;

int st[n*n],sum[n][n],hash[m<<2

];int

main()

inttmp;

for(int i=1;i<=n-1;i++)

for(int j=1;j<=n-1;j++)

for(int k=i+1;k<=n;k++)

for(int l=j+1;l<=n;l++)

while(top)hash[st[top--]]=0

;

for(int k=i+1;k<=n;k++)

for(int l=1;l<=j;l++)

for(int k=1;k<=i;k++)

for(int l=j+1;l<=n;l++)

while(top)hash[st[top--]]=0

; }

printf(

"%d\n

",ans);

return0;

}

洛谷 P1443 馬的遍歷

題目概述 有乙個n m的棋盤 1 解題思路 使用廣搜,注意地圖邊界和馬跳的方向即可。可以採用for代替8個if來減少要碼的字。注意棧的讀寫。時間複雜度 o n m 空間複雜度 o n m 源程式 const d array 1.2,1.8 of longint 2,2,1,1,1,1,2,2 1,1...

洛谷 P1443馬的遍歷

有乙個n m的棋盤 1輸入格式 一行四個資料,棋盤的大小和馬的座標 輸出格式 乙個n m的矩陣,代表馬到達某個點最少要走幾步 左對齊,寬5格,不能到達則輸出 1 輸入樣例 1 複製3 3 1 1 輸出樣例 1 複製0 3 2 3 1 1 2 1 4 include include include i...

洛谷P1443 馬的遍歷

有乙個n m的棋盤 1輸入格式 一行四個資料,棋盤的大小和馬的座標 輸出格式 乙個n m的矩陣,代表馬到達某個點最少要走幾步 左對齊,寬5格,不能到達則輸出 1 輸入樣例 1 複製 3 3 1 1輸出樣例 1 複製 0 3 2 3 1 1 2 1 4bfs模板題 includeusing names...