CSU 1993 大司馬的三角形中單(數字dp)

2021-08-07 16:49:44 字數 1666 閱讀 7411

1993: 大司馬的三角形中單 

submit page

summary

time limit: 1 sec

memory limit: 128 mb

submitted: 8

solved: 5

小t特別喜歡蕪湖大司馬,小t受到司馬老師一手「三角形中單「啟發,他給大家出了一道題目:想到在數字中也有類似」三角形」這樣規律的數字,叫做「三角形數」。什麼是三角形數呢? 就是「一上一下」,用手比劃一下有點像三角形。例如:121,132,1210就是三角形數,123,321,1221就不是三角形數。數字滿足從左到右每一位數字嚴格按照先增後減的順序,這麼說你懂我意思了吧! 現在要你求在閉區間[l,r]中有多少個「三角形數」? 如果你覺得題目這麼簡單那你就錯了,我還要稍微折磨你一下,我規定乙個數滿足先增後減的條件下,這個數乘十還是三角形數,例如:1210,12100,1210000。 如果你沒有**以上的實力,想搞出這道題,唉!不存在的??

第一行輸入乙個正整數t,表示t(1< t <= 20)個測試樣例。 每乙個樣例有兩個數字:l,r(1每組樣例輸出在閉區間[l,r] 中有多少個「三角形數」。

2

1 130

1300 1320

3

3

湖南省第十三屆大學生計算機程式設計競賽熱身賽

當時不夠時間寫了,但是後來回來了還是寫了寫,想清楚後,二十分鐘左右就過了。

這裡所謂三角形數,就是指數字從第一位開始先嚴格遞增,在嚴格遞減,然後最後有多個0也算是允許的。然後問你在乙個區間內,有多少個這樣的三角形數。這樣的題目很顯然就是數字dp。可以考慮,設dp[len][x][tp]表示在數字長度為len,第len位數字為x,tp為bool型別,表示是否已經出現轉折點。這裡我們先不考慮後面可以有多個0的情況。然後轉移的話,要仔細考慮清楚,分幾種情況。首先看是否出現過轉折點,如果當前狀態已經出現過轉折點,那麼前一位一定是嚴格比他大的。如果沒有出現轉折點,那麼前一位一定是嚴格比他小的。注意到,如果當前已經出現過轉折點,那麼還可以從前一位就是轉折點的情況轉移過來。按照這個列舉前一位的數字,進行記憶化的數字dp搜尋。

然後數字dp一般有乙個lim,即表示是否收到區間端點的大小限制。這個我之前講數字dp的時候沒有細細研究,導致我一開始還把拆分後每一位的數字給先反了過來。其實這個是不用的。因為數字dp本身就是相當於先把區間端點翻轉過來去求,不然lim起不到合理限制的作用。好吧,我知道自己講得有點玄學。。。

這個時候,我們就可以考慮可以有多個0的情況。很顯然,我可以特判一下如果當前位置已經是0了,那麼前一位的最大限制不是-1而是0。這樣就可以解決0的問題,具體見**吧:

#include#include#includeusing namespace std;

long long dp[13][10][2],num[13];

long long dfs(int len,int x,bool tp,bool lim)

else

if (!lim) dp[len][x][tp]=res;

return res;

}long long cal(long long n)

for(int i=3;i<=len;i++) //列舉長度

return res;

}int main()

return 0;

}

CSU 1812 三角形和矩形

注意 點逆序可以用半平面交或者多邊形面積交 半平面交 至 include using namespace std define e exp 1.0 define mod 1000000007 define inf 0x3f3f3f3f typedef long long ll define inf ...

三角形內嵌的相似三角形之間的關係

給定乙個參考三角形abc,在三條邊上 或延長線 各任意取一點x,y,z,那麼xyz叫做內嵌三角形或叫miquel三角形。與xyz相似 指同向相似 的內嵌三角形有無數個,那麼所有相似的內嵌三角形具有唯一的乙個miquel點。下面用文字證明以上結論 根據miquel定理 參考三角形abc三條邊上的x,y...

css3 三角形 三角形的內切圓

直角三角形 內切圓半徑為r a b c 2 a,b為直角邊,c為斜邊 一般三角形 內切圓半徑為r 2s a b c s是三角形的面積公式 與三角形三邊都相切的圓叫做三角形的內切圓,圓心叫做三角形的內心,三角形叫做圓的外切三角形。三角形的內心是三角形三條角平分線的交點。拓展資料 三角形一定有內切圓,其...