試題解析
$t1$
簡化題意
乙個序列是優美的當且僅當可以通過操作(將相鄰兩個數移動到序列任意位置)使序列不降
考慮怎麼使這個序列不降,考慮移動會造成的影響,逆序對$+/-2$,或者不變
那麼如果有偶數個,那麼一定優美,否則一定不優美
如果是偶數個,肯定能構造出一種方案使得逆序對減少到$0$
奇數的話就肯定不可能了
如果重複出現的數字,可以規定大小關係,那麼可以改變奇偶性,必然是優美的
那麼不考慮相同的情況,那麼對於乙個排列,答案就是偶-奇,這個東西就很行列式
行列式就是所有排列,偶-奇,我們最後求得也是兩個不同的差,那麼求一遍行列式
發現是$o(n^3)$
不是很優,而且絕對過不了,那麼觀察這個矩陣發現是海森堡矩陣
那麼這個考慮行列式的本質,那麼就是第一行兩個選乙個,第二行兩個選乙個...
那麼考慮$dp$轉移,就能得出根據奇偶性求出兩個的權值和
設定$dp[i][j][k]$表示第$i$行,可以選$j$,奇偶性是$k$的價值和
$dp[1][1][0]=a_2$
$dp[1][2][0]=a_1$
那麼就轉移
$dp[i+1][i+1][k]+=dp[i][j][k\ xor\ ((i-j)\&1)]\times dat[i][j]$
就是說需要上一步什麼狀態來轉移
$dp[i+1][j][k]+=dp[i][j][k]\times dat[i][i+1]$
那麼一開始記錄所有情況$sum$
最後列舉一下最後一行選什麼,順便記錄一下奇偶性就好了
最後得到最後行列式是奇數的總貢獻$rs[1]$
那麼偶數就是$sum-rs[1]$,直接輸出就好了
$t2$
$w(n)=\sum_\phi(p_1^...p_^})\times p_i \times \sigma(p_^}...)$
這個式子遞推
$w(n\times p^\alpha)=w(n)\times\phi(p^\alpha)+\sigma(n)\times p$
就$min\_25$維護兩個就好了
$t3$
先說乙個沒關的式子(只是好玩)
$gcd(f_n,f_m)=f_$
式子的遞推關係可以表示為$f_n=9f_+12f_$
給定$n,p,a,b,c$,求$gcd(af_n+bf_,cf_n+df_)$
打表可得,設$g_n=gcd(f_n,f_)$
$g_0=g_1=1,g_n=3g_$
更相減損可以把$b,d$其中乙個變成$0$
$gcd(a'f_n+b'f_,c'f_n)$
$g=gcd(b'f_,f_)=g_n\times gcd(b',\frac)$
$g\times gcd(\frac}},c')=g\times \gcd(\frac+b'\frac} \mod (\fracc')}},c)$
對取模意義下的$gcd$還是有點疑問
面試題解析
1.繼承執行順序 當兩個類之間有繼承關係時,第一次構造子類的例項時,是按照如下順序進行的 1.子類的靜態成員初始化語句 2.子類的靜態建構函式 3.子類的非靜態成員初始化語句 4.父類的靜態成員初始化語句 5.父類的靜態建構函式 6.父類的非靜態成員初始化語句 7.父類的建構函式 8.子類的建構函式...
K進製試題解析
很明顯這是在將 10 進製數轉為 k 進製數。從 0 開始,一直列舉到 n 不斷的向最後一位 1 直到末位為 k 則設定本位為 0 上位進 1 當然,其它各位都要進行檢查逐個上位 判斷題1 若 k 1 則輸出 ans 時,len n 作為第乙個問題,難度肯定不能太高,一般採用特殊值法代入,嘗試找出答...
面試題解析記載
工具類原始碼 hashcode 在建立類的時候要覆蓋equal 和 hash 方法 arraylist 基礎陣列來實現的,遍歷查詢快,但是刪除需要移動陣列資料,處理會慢。linkedlist 實現原理通過鍊錶實現,插入快,查詢和刪除慢。hashmap 非執行緒安全的,通過鍊錶實現的,查詢速度回快很多...