CodeChef題目選講

2022-02-05 06:13:11 字數 1641 閱讀 2515

關鍵點:不超過7條

根據咕咕原理,所以答案最少是n/7;(n小於49就暴力)

隨機化找兩個點判斷直線上的點個數,隨機500次,概率就很高了

法二:點數大於50,答案至少是8

答案一定是7條路之一

隨機找7個點,按照級角序排序,點數大於7的直線就刪去上面的點(之後random不考慮,但是實際上不能真刪除,因為可能兩條路有交點),每次一定可以找到至少一條路

複雜度就很穩了

思想:有些很麻煩處理的事情,範圍又不太大,都可以隨機化搞搞,能分析出概率就很好了

可能無窮組解,

無窮組解一定可以跳過去再跳回來,a,b向量必須共線

a,b不共線:

方案數有限。

座標範圍大而且正負很麻煩

解方程求出到(x,y)以及每個障礙點的用a的次數,用b的次數

轉化成格點往上往右走的方案數

障礙?套路地,f[i]表示到第一次到第i個障礙點的方案數,容斥即可

a,b共線:

把這條直線上的障礙點和(x,y)都投影到y或者x軸上

沒有明顯的階段,但是可以拓撲排序計數+判環

0的特殊討論很噁心

思路:基於inf、共線 討論,轉化為不同的模型

路徑統計模型要熟悉:

1.網格圖,往上往右走

有障礙點的——》容斥,第乙個碰到障礙點編號

格點不是很多的多源多匯——》dp,每次新加入乙個點,方案數+1,到了乙個匯點更新ansfzyzojp3979 -- [校內訓練20180914]魔法方陣

矩形到矩形的路徑agc 018e.sightseeing plan——網格路徑問題觀止

2.dagtopo計數

dag圖上的dp

肯定考慮質因數分解了

a=2^a*3^b*5^d*7^e

a/3+b/2+d+e<=700

列舉b,a,把2^a*3^b的值、每個數字個數(最小情況下)放進hash表裡,相同的mod值,位數小的優,位數相同,小的數多的優(字典序)

列舉d,e,去hash表裡查詢,更新答案比較方式同理

思路:bsgs或者折半,一半的位數比較小的時候,就可以用hash表存一部分再列舉另一部分了

複雜度指數級下降。

m很小,n很大,彷彿有矩乘的影子

所以,f[n][m],和為n放了m個k的所有情況的sin乘積和,

最後乙個k+1時候,

發現,和最後乙個數是cos也有關係,所以變成f[n][m][0/1]然後矩乘即可

思路:一種分段的序列dp,考慮重新開一段或者最後一段延長1

各種斯特林數的遞推都有類似思路

經典挖串dp

推完式子狀態過多,bool的dp的優化:

1.壓位,把某一維的狀態變成,維度/64(類似分塊),然後bool變成unsigned long long,每一位0/1表示這個塊的第i位是不是0/1

應用範圍廣,只是除以64,不徹底

2.把某一維刪掉,變成,某狀態下某個值的最值,

有的時候不行,看題目了,但是完全去除一維,複雜度降低乙個量級

貪心題目選講

假定海岸線是一條無限延伸的直線,陸地在海岸線的一邊,大海在另一側。海中有許多島嶼,每乙個小島我們可以認為是乙個點。現在要在海岸線上安裝雷達,雷達的覆蓋範圍是d,也就是說大海中乙個小島能被安裝的雷達覆蓋,那麼它們之間的距離最大為d。我們使用平面直角座標系,定義海岸線是x軸,大海在x軸上方,陸地在下方。...

字尾陣列題目選講

複習題 luogu題單 1.noi2015 品酒大會 題意 forall i 0,n 求有多少對字尾滿足 lcp ge i 以及滿足條件的兩個字尾的權值乘積的最大值。我們統計出對於 1.n 中的每個 i 統計一下有多少個 lcp i 再做個字尾和。因為 lcp i,j min st times ed...

6 5 競賽題目選講

undraw the trees include includeusing namespace std const int maxn 20000 5,maxl 200 5 int cnt 0,sum 0 string tree maxl struct node node maxn node buil...