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