洛谷 P7774 KUTEVI 題解

2022-09-10 05:42:10 字數 2747 閱讀 9513

寫這篇題解花了我很多不少時間,希望能過 awa

題意:

有 mm

m 個數,這 m

mm 個數能否由另外 n

nn 個數通過加減運算獲得。

對於每一次加減的操作,結果不能小於 0

00(角度不能小於 0

00);

對於大於等於 360

36036

0 的結果,對 360

36036

0 取模。(大於 360∘

360^

360∘

的角會轉一圈後繼續轉)

能則輸出 yes ,不能則輸出 no 。

思路:dp

\texttt

dp(揹包)、搜尋都可以。dp 太難想 這裡我只講搜尋。

對於每乙個狀態,只有加和減兩種狀態。所以只需要對每乙個狀態列舉每乙個數的加或減。

記錄已經過狀態,列舉中遇到了要獲得的數,就表明可以實現。列舉結束後還沒有遇到,則不能實現。

實現:

對於狀態 x

xx ,

拓展 (x±

a[i]

)mod

360(x\pm a[i]) \bmod 360

(x±a[i

])mo

d360

且 x±a[

i]≥0

x\pm a[i]\ge0

x±a[i]

≥0且未被拓展過。

上**!

#

include

using

namespace std;

int n,m;

int a[11]

,b;bool vis[

361]

;bool

bfs(

int end)

for(

int i=

1;i<=n;i++

)//可以不列舉減法,文後給出證明過程

/*cg=(t-a[i])%360;

if(cg>=0&&(!vis[cg]))

*/}}

return

false;}

intmain()

return0;

}

完結。

對於可以不列舉 x−a

x-ax−

a 的證明:

對於任意正整數 x

xx,a

aa,k

kk,p

pp,證明:

( x+

ak)m

od

360=x−

ap

(x+ak) \bmod 360 = x-ap

(x+ak)

mod3

60=x

−ap。

x

xx 指某一狀態。意思就是,只用加 k

kk 次 a

aa 就可以列舉到 x−a

px-ap

x−ap

。原式可轉化為: 360t+

x−ap

=x+a

k360t+x-ap=x+ak

360t+x

−ap=

x+ak

,t

tt 為任意正整數。

化簡,得:360t=

a(p+

k)

360t=a(p+k)

360t=a

(p+k

)。所以,只需證明 a(p

+k

)a(p+k)

a(p+k)

恒為 360

36036

0 倍數。

若 a

aa 為 360

36036

0 倍數,得證;

若 a

aa 不為 360

36036

0 倍數,

則若使 (p+

k)

(p+k)

(p+k

) 為 360

36036

0 倍數,k

=360−p

k=360-p

k=360−

p 即可。

又有 x−a

p≥

0x-ap\ge0

x−ap≥0

,則 p≤x

a<

360p\le \frac<360

p≤ax

​<36

0。則 k

kk 在滿足 k

=360−p

k=360-p

k=360−

p 的條件下滿足 k

>

0k>0

k>

0,所以無論 p

pp 取多少都能滿足 (p+

k)

(p+k)

(p+k

) 為 360

36036

0 倍數。得證。

綜上,(x+

ak)m

od

360=x−

ap

(x+ak) \bmod 360 = x-ap

(x+ak)

mod3

60=x

−ap。

第一次自己寫 oi 證明題,有不對或不完善的地方請指出,謝謝qaq;

被打回x4 – 求過!

洛谷 P1101 題解

這道題可以用深搜 回溯 來寫,相信大部分人都是這麼想的,但是有些人可能在一些地方饒了半天,所以這裡就貼一下我的思路,個人覺得自己的很好懂,除了tx和ty那裡,但是tx和ty的那種用法對於輸出路徑的題目一般很實用 這個算是比較簡單的吧,題目裡給出了具體要找的字串,我們要做的就是對它進行8個方向的搜尋,...

洛谷 P1169 題解

請你在乙個黑白矩陣中選出乙個長方形 含正方形 和正方形的子矩陣,使得所有相鄰的點顏色不一樣。矩陣大小 兩條邊都 2000 2000 2 000輸入 3 31 0 1 0 1 0 1 0 0輸出4 6解釋給定矩陣 正方形 長方形 我的控制台是萌萌噠 ffc0cb粉色 乙個小技巧 如果您的控制台是像我的...

題解 洛谷 P3332

題目描述 權值線段樹套線段樹板子題 首先觀察題目,判斷為二維偏序問題 操作1為區間修改,所以一定是外部線段樹維護權值,內部線段樹維護所在區間,否則時間複雜度 qwq 為方便查詢,雜湊時我採用雜湊每個數的相反數的方法將求第k大轉換為求第k小 詢問可以直接想到的做法就是二分答案,查詢1 ans在區間內的...