description
給出下面乙個**用來判斷乙個n×
n n×n
的01 01
矩陣中是否存在乙個子矩形的四個角的值均為
1 1
0siterate through all 1s in
the matrix:
suppose this 1 lies in grid(x,y)
iterate every row r:
if grid(r,y)=1:
++count[min(r,x)][max(r,x)]
ifcount[min(r,x)][max(r,x)]>1:
claim there is a rectangle satisfying the condition
claim there isn't any rectangle satisfying the condition
要求構造乙個n×
n' role="presentation" style="position: relative;">n×n
n×n的
01 01
矩形使得1≤
n≤2000
1 ≤n
≤2000
且至少有
85000
85000
個位置是
1 1
,使得其不存在四個角均為
1' role="presentation" style="position: relative;">1
1的子矩形但是上述**的執行結果會判斷為存在
input無
output輸出
n n
以及這個n×
n' role="presentation" style="position: relative;">n×n
n×n的
01 01
矩陣sample input無
sample output無
solution
顯然只要一行有兩個
1 1
且不存在四個角都為
1' role="presentation" style="position: relative;">1
1的矩形即為反例,問題轉化為構造
n n
個序列使得任意兩個序列不存在兩個都為
1' role="presentation" style="position: relative;">1
1的位置給定0
≤a,b
,c,d
<
p 0≤a
,b,c
,d
<
p,其中
p p
為素數,假設對於兩個不同的
k' role="presentation" style="position: relative;">kk滿足
a+kb
=c+k
dmod
p a+k
b=c+
kdmo
dp
,則有a=
c,b=
d a=c
,b=d
,故取不同的二元組(a
,b) (a,
b)
,通過a+
kbmo
dpa +k
bmod
p可以構造出來p2
p
2個長度為
p p
的序列,且這些序列中任意兩個序列不存在兩個位置的值相同,那麼我們取素數
47' role="presentation" style="position: relative;">47
47滿足472
>
2000472
>
2000
,把2000
2000
分成若干長度為
47 47
的段,第
k k
段的第a+
kb m
od p
' role="presentation" style="position: relative;">a+k
bmod
pa+k
bmod
p個值為
1 1
,其餘值為
0' role="presentation" style="position: relative;">0
0,則可以構造出滿足條件的矩陣
code
#include
using namespace std;
int main()}}
}else
break;
} return
0;}
多校2 hdu 6313 Hack It (構造)
題意 構造乙個圖,滿足任意乙個子矩形中其四角不都為1,並且要使得圖中1的個數要超過85000個。參考題解 這題我們需要構造,舉個5 25的例子,構造方法如下 當我們取質數5時,1的位置 在 j 上 依次 0,1,2,3,4,5.mod 5 的 意義下 構造第一塊 0 10000 10000 1000...
hdu 3483 矩陣構造
這道題寒假的時候看過,還不小心看了題解,不過題解說神馬早就忘了,剛開始解題的時候完全想錯了,後來才想起來是用矩陣構造 這道題的確適合構造矩陣,因為所求的函式值滿足線性關係,令f n 為最終求解值 首先我們要明確如果用矩陣的作法,那麼矩陣乘法中,最終矩陣,必須包含f n 還可以包含其他函式g n h ...
hdu2276 矩陣構造
題意 給了n個燈泡的狀態,他們繞成乙個環,0是滅,1是亮,每一秒燈泡的狀態都會改變,規則是如果當前這個燈泡的左邊的燈泡當前是狀態1,那麼下一秒當前的這個燈泡狀態就改變0變1,1變0,最後問你m秒後的狀態。思路 我們先找當前狀態和下乙個狀態的關係 狀態也就是秒 我們可以抽象成這麼一種關係,如果第i個燈...