[NOIP模擬題][模擬][DP][亂搞]

T1

給定文本串A,模板串B,在A中從小到大找到B的每一個字符,輸出最大字典序答案

剛看到這道題就想是不是KMP,然而這並不可以,然後我就一臉懵逼。敲完第二題回來才發現這是道傻逼題,倒敘掃描即可

T2

給定n*m 01串,奇數行0只能上下通過,且無價值,偶數行0的價值爲連着一整塊0的數量,求從第一行到最後一行最大價值

一眼DP無疑,f[i][j]表示i行j列最大價值,從上往下推即可。只是這裏要加點優化,把偶數行連着的0預處理成一塊,DP時將這一塊整體DP

T3

給出N*M點陣,任意兩點可以連成一條線段,詢問長爲W的線段數量

好神的一道題,一開始看20分可以暴力,但我怕出現精度誤差,就不敢碼,事後才發現完全可以不開根啊,直接算平方就行了。
下面是正解。首先橫着和豎着的邊是很好解決的,關鍵是怎麼解決斜邊。我們先從複雜度開始分析,10^3個詢問,那麼大概找斜邊就是一個根號的複雜度
首先我們假設直角邊a,b,b=sqrt(c2a2) =sqrt(c+a)(c-a),令d=gcd(c+a,c-a),再令A=(c-a)/d,B=(c+a)/d,那麼A與B互質,由上式可知A*B是完全平方數,又因爲互素,所以A與B均爲完全平方數,令x*x=A,y*y=B,代入相加,x2 +y2 =2*c/d,d的範圍爲1-sqrt(2c),所以只需先枚舉d,再每句x,即可算出解了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章