HDU 1257 最少攔截系統 簡單DP
阿新 • • 發佈:2017-08-15
容易 target ++ font put 題目 ssi pre 路徑
怎麽辦呢?多搞幾套系統唄!你說說倒蠻容易,成本呢?成本是個大問題啊.所以俺就到這裏來求救了,請幫助計算一下最少需要多少套攔截系統.
題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=1257
題目大意:求有多少個單調非遞增序列。
解題思路:經典題的變形----LIS。可以按照題意,多次dp,每次記錄路徑並進行訪問標記,每次dp只要有更新過就++ans。
然而稍微思考就發現實際上求得就是最長單調遞增序列的長度。
代碼:
const int maxn = 1e6 + 5;
int n, a[maxn];
int dp[maxn];
void solve(){
memset(dp, 0, sizeof(dp));
dp[0] = 0; a[0] = 0;
for(int i = 1 ; i <= n; i++){
for(int j = 0; j < i; j++){
if(a[j] < a[i] && dp[j] + 1 > dp[i]){
dp[i] = dp[j] + 1;
}
}
}
int ans = 0;
for(int i = 1; i <= n; i++) ans = max(ans, dp[i]);
printf("%d\n", ans);
}
int main(){
while(scanf("%d", &n) != EOF){
memset(dp, 0, sizeof(dp));
for(int i = 1; i <= n; i++) scanf("%d", &a[i]);
solve();
}
}
題目:
最少攔截系統
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 44913 Accepted Submission(s): 17624
怎麽辦呢?多搞幾套系統唄!你說說倒蠻容易,成本呢?成本是個大問題啊.所以俺就到這裏來求救了,請幫助計算一下最少需要多少套攔截系統.
HDU 1257 最少攔截系統 簡單DP