lgp2657 [scoi2009]windy數
求\([a,b]\)之間「\(a\)數」的個數。
乙個數被稱為「\(a\)數」,當且僅當它不含前導零且相鄰兩個數字之差至少為2.
\(1\le a \le b \le 2\times 10^9\)
只需要規定函式work(x)
求\([1,x]\)內所有的「\(a\)數」的個數,字首和就好。
設\(dp_\)表示長度為\(i\)中最高位是\(j\)的「\(a\)數」
方程:\[dp_=\sum_^ dp_
\]初始值:
\[dp_=1(i\in[0,9],i\in\mathbb z)
\]
#includeusing namespace std;
//設dp[i][j]為長度為i中最高位是j的windy數的個數
//方程 dp[i][j]=sum(dp[i-1][k]) 其中 abs(j-k)>=2
int p,q,dp[15][15],a[15];
void init()
} }//從第二位開始 每次列舉最高位j 並找到k 使得j-k>=2
}int work(int x) //計算<=x的windy數
//分為幾個板塊 先求len-1位的windy數 必定包含在區間裡的
for(int i=1;i<=len-1;i++)
}//然後是len位 但最高位=1;i--)
if(abs(a[i+1]-a[i])<2) break;
// if(i==1) ans+=1;
}return ans;
}int main()
20201009day30 刷題記錄
對於每個時間點,詢問兩點之間的路徑 針對不同時間點各個點之間連通性不同 floyd的本質是中 for k 1 k n k for i 1 i n i for j 1 j n j if e i j e i k e k j e i j e i k e k j 本題 按照時間順序更新每乙個點可用的點 即為...
5月30日複習
1 物件初始化器 class1 p1 new class1 2 屬性封裝了字段。方法的多個引數封裝成乙個物件。將一堆 封裝到乙個方法中。將一些功能封裝到幾個類中。將一些具有相同功能的 封裝到了乙個程式集中,並且對外提供統一的訪問介面。3 繼承的好處 一 重用。二 多型。4 繼承的單根性 乙個類只能繼...
day 3 9基礎複習
1.不要在模組之間相互呼叫,否則會出現麻繩現象,避免迴圈匯入。用來判斷值是否相等 分別指向兩個空間,但是空間裡面的內容相同 is 判斷指向是否相等。例 a 11,22,33 b 11,22,33 a b true a is b false id a 1398041200093640 id b 139...