原创 hdu 5898 - odd-even number (2016瀋陽網絡賽) - 數位dp

題意:如果一個數字連續的奇數都爲偶數個,連續的偶數個數都爲奇數,那麼這個數字就是奇偶數,輸入l,r,問[l, r]閉區間有多少個奇偶數。 數位dp用dp[i][j][k]表示長度爲i並且最高位爲j的數字並且與最高位數字奇偶情況相同的連續位

原创 UVALive 6853 - Concert Tour (dp)

題意:有s個月,c個城市,給出第幾個月在第幾個城市舉辦演唱會的收益,並且給出從一個城市到另一個城市的成本,求最大的收益。到達第一個城市不需要成本。 用dp[i][j]表示第j個月在第i個城市舉辦演唱會可以得到的最大收益。 dp[i][j

原创 Gym 100851A - Adjustment Office(模擬)

題意:給出一個n行n列的表,進行查詢一行或一列的值,每個單元格的值爲行號與列號的和,每一行或一列被查詢一次後都置爲零。 挺水的題,記錄一下每一行每一列剩下的列號或者行號的總和,以及剩下的個數,並進行跟新就好了。 #include <ios

原创 UVALive 6852 - Blanket

題意:有k個毛毯,n個位置,每個毛毯有兩個參數a、b,表示對b取模小於a的位置可以被覆蓋,問被覆蓋次數爲1,2……k的點依次有多少個。 輸入數據量很大,但是a和b都很小,一共只有256種可能,所以可以先記錄每一組a,b出現多少次,然後直接

原创 uvalive 6609 - Minimal Subarray Length(離散化+樹狀數組)

題意:給出n個數,求加和大於x的最短區間的區間長度。 如果前i個數字和爲y,那麼如果前j數字的和小於等於y-x,那麼i-j就是一種可能的情況,我們對於所有的i找出前面最大的j就可以了,因爲數據量比較大,用樹狀數組來處理前n項的最大值,但是

原创 uvalive 6600 - Spanning trees in a secure lock pattern

題意:輸入n,有n*n個點,每個點與周圍的8個點聯通,找一共有多少種生成樹。然後題意給出了一個矩陣,通過求矩陣的去掉第一行第一列的行列式的值就可以得到最終結果,對於mp[i][j],i == j的時候表示i點有多少個鄰點,i != j的時

原创 hdu 5877 - Weak Pair (2016大連網絡賽) 離散化 + 樹狀數組

題意:給出一棵樹,n個節點,每個節點有一個權值,輸入一個k,問有多少對點,滿足點的權值乘積小於等於k,並且其中一個點是另一個點的祖先節點。 對於每一個節點,如果這個節點的權值爲a,那麼找到子節點所有的權值小於等於k/a的節點數量就是滿足條

原创 uvalive 6800 - The Mountain of Gold? 判負環

題意:給出一個圖,判斷能不能從0出發,再回到0,經過邊的權值爲負。 判斷圖中有沒有負環,並且負環上的點能回到0即可。 #include <bits/stdc++.h> using namespace std; const int INF