模擬測試20191023

2022-02-03 12:56:46 字數 1249 閱讀 6057

設$sum$=$a_$^$a_$^......^$a_$,

轉化題意,相當於小$t$初始權值為$sum$,小$q$初始權值為$0$,可以選不相連的點兩個人同時異或這個點的權值

從高到低$sum$二進位制下某一位,如果是$0$,那麼小$q$和小$t$在這一位上一定相等

如果是$1$,那麼必須選乙個這一位上是$1$的點小$q$才能大於小$t$

而如果$sum$這一位是$1$,那麼至少乙個點這一位上是$1$

則題意轉化為如果$sum>0$,則輸出$q$,反之輸出$d$

設$pre_$表示$i$即之前(的個數,$nxt_$表示$i$之後)的個數

很容易得到$o(n^)$的柿子:

$$\sum_=='('}\sum_^}\choose j }\times \choose j+1}$$

稍化一下

$$\sum_=='('}\sum_^}\choose j }\times \choose j+1}$$

$$=\sum_=='('}\sum_^}\choose j }\times \choose nxt_-j-1}$$

$$=\sum_=='('} +pre_\choose nxt_-1}$$

很容易得到$o(n^k)$的暴力演算法

利用分塊思想優化,設$dp[i][j][k]$表示從$i$到$j$剛好走了$k \times 100$步的最短路

配合暴力的$dp$就可以$ac$了

類似蚯蚓的思想

維護$15$個佇列,每次取出最小的隊頭來更新每個佇列

為了避免有的數被重複更新,我們利用類似線性篩的思想,只讓每個數被他的最小質因子篩出就好了

顯然我們只關心每次加入的數含有哪些質因子而不是他是誰

對於相同的質因子集合他的貢獻可以預處理出來

於是我們可以進行搜尋,每次列舉這一位放的是哪個集合

然後我們發現合法的狀態非常之少,只有$20$多萬個

那麼我們可以記憶化搜尋,把之前選的所有集合看成乙個字串壓入$hashmap$中

記得要把集合排序後$hash$

隨機化都是好題(大聲bb

首先我們發現任意選兩組點可以解出一組特解

然而暴力列舉點對的話複雜度是$o(n^)$的

考慮隨機化

觀察題目中的一句話:不正確的結果座標數量嚴格不超過一半

這句話有什麼意義呢

其實就是說任選兩個點得不到正解的概率是$\frac$

那麼如果我們$rand50$組點對,則不得到正解的概率只有$(\frac)^< 10^ $

2019 10 23 部落格熱門文章

爬蟲究竟是合法還是違法的?微笑很純潔 2019 10 18 09 09 00 閱讀數 9519 程式設計師必須掌握的核心演算法有哪些?帥地 2019 10 21 12 11 41 閱讀數 15016 100 個網路基礎知識普及,看完成半個網路高手 華為雲 2019 09 23 11 38 54 閱讀...

csp模擬 模擬測試16

fdasds include using namespace std define cle a memset a,0,sizeof a inline int read const int mod 1e9 7,maxn 1e3 100 int n,m,ans 0 int f maxn maxn int...

csp模擬 模擬測試4

t1是暴力分,t2當時沒有花太多時間去推導,一見到t2就十分害怕,便放過了它,t3的話花了大量的時間推了乙個錯誤的解,以後對於t2這種題不要未戰先怯,一點一點的去推導!那一天我們在教室裡許下約定。我至今還記得我們許下約定時的歡聲笑語。我記得她說過她喜歡吃餅乾,很在意自己體重的同時又控制不住自己。她跟...