JSOI2017 Day1T3 code解題報告

2021-07-30 21:48:18 字數 1238 閱讀 8030

jsoi2017 day1t3 code解題報告

via. hbfs-

觀察語法規則可以發現

1、每個迴圈結束後暫存器的值是0

2、若當前暫存器值為0,則在後面新增乙個迴圈,在迴圈內部新增任意能通過編譯的程式,新程式都不會死迴圈

我們可以用動態規劃求解這個問題hi

表示長度為

i 能通過編譯的程式數量fi

,j表示長度為

i ,暫存器初始值為0,執行結束暫存器值為

x的程式數量 若j

≠0 f

i,j=

fi−1

,j−1

+fi−

1,j+

1+∑i

k=2d

k−1f

i−k+

∑ik=

2(gk

−2,j

+fk−

2,j)

fi−k

,0否則: fi

,j=f

i−1,

j−1+

fi−1

,j+1

+∑ik

=2dk

−1fi

−k+∑

ik=2

hk−2

fi−k

,0其中gi

,j表示長度為

i ,執行結果為

j的約數的無迴圈程式數量fi

,j表示

長度為i

,暫存器

初始值為

0,執行

結果為j

的程式數

量 若j

=0 f

i,j=

fi−1

,j−1

+fi−

1,j+

1+∑i

k=2d

k−1f

i−k,

j+∑i

k=2∑

l≠0(

gk−2

,j+f

k−2,

j)fi

−k,j

+∑ik

=2hk

−2fi

−k,0

否則 fi

,j=f

i−1,

j−1+

fi−1

,j+1

+∑ik

=2dk

−1fi

−k,j

ans=∑i

fn,i

濟南學習 Day 3 T1 pm

巧克力棒 chocolate time limit 1000ms memory limit 64mb 題目描述 lyk 找到了一根巧克力棒,但是這根巧克力棒太長了,lyk 無法一口吞進去。具體地,這根巧克力棒長為 n,它想將這根巧克力棒折成 n 段長為 1 的巧克力棒,然後 慢慢享用。它打算每次將一...

濟南學習 Day 3 T1 pm

巧克力棒 chocolate time limit 1000ms memory limit 64mb 題目描述 lyk 找到了一根巧克力棒,但是這根巧克力棒太長了,lyk 無法一口吞進去。具體地,這根巧克力棒長為 n,它想將這根巧克力棒折成 n 段長為 1 的巧克力棒,然後 慢慢享用。它打算每次將一...

濟南學習 Day 3 T1 am

np np time limit 1000ms memory limit 64mb 題目描述 lyk 喜歡研究一些比較困難的問題,比如 np 問題。這次它又遇到乙個棘手的 np 問題。問題是這個樣子的 有兩個數 n 和 p,求 n 的階乘 對 p 取模後的結果。lyk 覺得所有 np 問題都是沒有多...