原创 Topcoder-10524 BrickPuzzle

圖很小,考慮狀壓dp。每一個位置只與前面一個位置的dp值有關,因此可以使用滾動數組優化空間。因爲每一個方塊的放置最多影響到下一行往右兩個的位置,所以mask大概可以開到25位,空間是比較吃緊的,所以使用哈希表進行存儲達到空間上的優化。 狀

原创 UOJ-311 逛公園

//好久不見。上上週忙於加試,上週又不幸因病住院,我也很無奈啊。 首先我們注意到k的值非常小,最大也只能達到50,複雜度一定與它有關。 然後又是需要取模的計數問題。考慮dp。 首先是本人寫的很醜的非常慢的解法: 首先我們跑dijkstra

原创 Codeforces-3D Least Cost Bracket Sequence

首先需要明確的是括號序列合法的條件: 如果令左括號爲1,右括號爲-1,爲這個1 -1序列到第i個位置的前綴和,那麼必須保證對於每一個i,的值都是非負的,且 這道題首先想到的是dp的做法。 表示考慮到第i個位置左括號與右括號差爲0的情況。轉

原创 Codeforces-834D The Bakery

題目大意:將n個蛋糕裝進k個盒子裏,令v爲每個盒子中蛋糕種類數的和,求v最大值。 最暴力的dp:f[i][j] 第i個蛋糕作爲第j個盒子中最後一個的最大的v。這個複雜度顯然很高,就算我們可以O(1)處理一個區間內的種類數,也需要O(n^2

原创 一些實用的模板

1°FLOYD判最小環 注:包含基本的FLOYD算法。最好寫的單源最短路徑算法。但時間複雜度O(n^3),n=1000基本就用不了了。。。 void floyd(){ int MinCost = inf;

原创 Codeforces-1000F One Occurrence

題目大意:多次查詢一個最長可達1e5的數列中指定區間內只出現一次的數。 這是一道線段樹題。首先想到的是對於每個區間維護其中每個元素的下一個元素出現的位置中最大的一個。nxt維護當前位置的下一個數字相同的位置。每次query返回該區間的線段

原创 SCU-3073 Painting the balls

鬼知道這破題是要寫while (scanf("%d%d",&n,&m))啊。。。調了半天 氣死我了 首先這道題樸素的寫法是非常顯然的。由於只有最近的兩次塗色具有後效性,可以得出如下狀態: 代表塗第i個且上一個塗的是第j個的最小代價 它是由

原创 Codeforces-940D Alena And The Heater

模擬題。 題目鏈接:http://codeforces.com/problemset/problem/940/D 輸出任意一組答案,且保證有解,因此可以想到只需維護l(min)和r(max)即可 接下來對條件進行分析:   bi = 0 

原创 ZOJ-3463 Piano

狀態很好想,表示考慮到第k個音符,左手在右手在的最小花費。轉移也非常簡單。 每次轉移的時候只需要枚舉該音符的左右9個位置就行了。同時判斷一下該音符是否已被另一隻手佔據,如果是則應不考慮用這隻手彈那個音。(然而不判斷似乎也能過?不太清楚了)

原创 寫代碼中需要注意的事項!(停更 有些表達很不準確懶得改了)

1. 數組不越界、下標不能取負數(特別注意取%時進行加減運算時可能產生的數組越界問題)(循環是也容易出現問題) 2.n<=2*10^9都可以放心使用int的 3.dp時間複雜度在無優化的情況下通常爲O(n^2),因此應根據情況合理使用搜索

原创 Codeforces-977F Consecutive Subsequence

cf的第一場div3! 並沒有熬夜去打。因爲想摸清大概難度。下午信息課時直接看了F題。 題目鏈接:http://codeforces.com/problemset/problem/977/F 看到標題就知道是一道最長上升子序列題。立馬想到

原创 P1941 飛揚的小鳥[NOIP2014提高組]

前50分顯然是非常水的。甚至能用搜索過。 #include<bits/stdc++.h> using namespace std; #define pb push_back #define fi first #define se se

原创 Codeforces-85D Sum of Medians

題目大意:對於一個每個數最多出現一次的序列,可以有add del兩種修改和查詢三種操作。對於每個查詢操作,輸出該序列排序後 線段樹每個區間分別維護0 1 2 3 4五種餘數的位置上數的和。注意這裏的位置是相對於每個區間的而非整個序列。另

原创 P2752 [USACO4.3]街道賽跑Street Race

這題也A了好久啊……(可能是我太菜了 看到這道題第一眼是懵的,但發現數據範圍很小,稍微放輕鬆一些 第一題比較好解 首先我萌可以將必經之路這樣理解:如果從起點到達終點必須經過它,辣麼如果刪掉這個點,這個圖就不連通了! 因此我萌枚舉每個點 進

原创 P2701 [USACO5.3]巨大的牛棚Big Barn

感覺這類dp必須要掌握啊。。。 小蒟蒻似乎已經是第二次做到類似的題了。但還是沒有及時想到dp。。。(窩怎麼這麼菜哇。。。。。。 dp[i][j]表示右下角爲(i,j)的最大正方形的邊長。 狀態轉移方程:dp[i][j]=min(dp[i-