2019暑假正睿集訓8 10day7題解及總結

2021-09-26 02:06:42 字數 2800 閱讀 1894

50pts~80pts

這道題直接暴力搜尋,每次在三個符號中任選乙個,按題意合併數。當合併了還剩兩個數的時候,就判斷它們選哪種符號最終能為1,找到一種ans+1

100pts

優化1:位運算。把輸⼊串按照fft初始化⽅法⼀樣bitrev⼀ 下就可以⽤位運算優化。

優化2:四⽑⼦。當串⻓之後16的時候預處理。 ~~~~ 可能要稍微松⼀下,也可能不⽤。~~

為此我今天學了三個多小時的fft(理解思路+**實現)

其實學會後還挺簡單的(看了無數篇題解後emmm)

就是把兩個多項式相乘(即求卷積),直接乘的話複雜度是o(n

2)o(n^2)

o(n2

) 所以把多項式的係數表示轉化成點值表示。

舉個例子 f[x

]=a0

x0+a

1x1+

a2x2

+...

...a

nxnf[x]=a_0x^0+a_1x^1+a_2x^2+......a_nx^n

f[x]=a

0​x0

+a1​

x1+a

2​x2

+...

...a

n​xn

a

ia_i

ai​ 是每一項的係數,所以這是多項式f[x]的係數表示法

​ ( x0

,f[x

0])(x_0,f[x_0])

(x0​,f

[x0​

])$ (x_1,f[x_1])$ …(xn

,f[x

n])(x_n,f[x_n])

(xn​,f

[xn​

])則為多項式的點值表示法 相當於代入一些x的值,求出對應的y的值,而要代入的x的值的個數顯然至少為n個才能確定乙個多項式(可模擬二元一次方程) 。

而對於多項式f[x

]∗g[

x]f[x]*g[x]

f[x]∗g

[x]若它們x代入的是相同的數,那麼就把算出對於的y值相乘就可以了

這是個總體的思路,還有非常多的細節部分實現,例如引入複數和單位跟,dft和idft,二進位制轉換,遞迴和迭代兩種方法等等,一時半會真的說不清楚,之後再詳細寫一篇有關於fft的題解qwq。

我寫的是更為高效的迭代演算法:

附上**如下

#include

.h>

using namespace std;

typedef complex<

double

>

cp;#define n 2097153

const

double pie=

acos(-

1);int n;

cp a[n]

,b[n]

;int rev[n]

,ans[n]

;char s1[n]

,s2[n]

;int

read()

while

(ch>=

'0'&&ch<=

'9')

return sum*f;

}void

init

(int k)

void

fft(cp *a,

int n,

int flag)

for(

int h=

1;h}}

if(flag==-1

)for

(int i=

0;i) a[i]

/=n;

}int

main()

while

(!ans[s]

&&s>-1

)s--;if

(s==-1

)printf

("0");

else

for(

int i=s;i>=

0;i--

)printf

("%d"

,ans[i]);

return0;

}

80pts

列舉最⼩差,不妨設最⼩的數是0,進⾏⼀下簡單的 dp。

100pts

列舉⼀下最⼩差d,那麼數的個數不會超過n/d。

• 所以再列舉⼀下數的個數x,然後想辦法算⼀下。

• ⽐如最⼩數是c,那麼⽅案數可能是(n−

c−(d

−1)∗

(x−1

),x−

1)(n-c-(d-1)*(x-1),x-1)

(n−c−(

d−1)

∗(x−

1),x

−1)

• 通過⼀些簡單的湊配就可以o(1

)o(1)

o(1)

完成求和。

這道題說實話我真沒聽懂,老師的題解就下面一句話(只可意會emmm)

觀(cai)察(ce)可得每個點都只會往上⾛,並且經過的不超過 o(log n)個,暴⼒做法是把這些塊都找出來,然後bfs即可。

1.第一題暴力拿了50分,有點超出預料,以為只有30分。但其實優化一下80應該沒問題的。

2.第二題也是暴搜得了20分 (暴力碾標算,搜尋過百萬)

3.感覺這幾天比剛開始好些了,至少拿到了該拿的暴力分

4.疾風知勁草,歲寒見後凋。加油。

2019暑假正睿集訓8 5day2題解及總結

題目分析 一張圖里兩棵樹,每個人選擇乙個點集,兩個人選的點集不想交,求最大權值 8 21pts 直接暴力列舉 兩個節點不想交 47 65pts 只考慮兩棵樹完全一樣的情況 樹形dp 揹包 dp i j j k dp i j j k dp i j j k 表示以i為跟的子樹,在第一棵樹上選j個,第二棵...

2019正睿金華集訓 0804總結

今天感受了b班考試的難度,果然好難,接近爆蛋,暴力分都不太好拿。考試歷程 先看了一下三個題面,發現就第二題的暴力好寫一點,隨後又想到了並查集,然後去寫t2,過了樣例然後我就不管了 以為自己可以拿到暴力分 t3這道題我只想說,貌似除了暴力我好像也寫不了,於是我寫了乙個大暴力,由於是輸出方案,評測機是s...

解題報告 2019正睿Day5

我們可以把染黑看成刪掉這條邊,那麼每次相當於是,如果存在乙個點有且僅有一條出邊,那麼把這條邊也刪掉,最後要刪完所有的邊。那麼我們考慮乙個環,可以發現這個環如果一條邊都不刪,那麼最後一定會被留下來,因為每個點都至少有兩個出邊。所以,在初始的邊刪完之後,圖一定得要無環。我們考慮乙個無環的圖,可以發現他就...