日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

【OpenJ_Bailian

發(fā)布時(shí)間:2023/12/13 综合教程 47 生活家
生活随笔 收集整理的這篇文章主要介紹了 【OpenJ_Bailian 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

攔截導(dǎo)彈


Descriptions:

某國為了防御敵國的導(dǎo)彈襲擊,開發(fā)出一種導(dǎo)彈攔截系統(tǒng)。但是這種導(dǎo)彈攔截系統(tǒng)有一個缺陷:雖然它的第一發(fā)炮彈能夠到達(dá)任意的高度,但是以后每一發(fā)炮彈都不能高于前一發(fā)的高度。某天,雷達(dá)捕捉到敵國的導(dǎo)彈來襲,并觀測到導(dǎo)彈依次飛來的高度,請計(jì)算這套系統(tǒng)最多能攔截多少導(dǎo)彈。攔截來襲導(dǎo)彈時(shí),必須按來襲導(dǎo)彈襲擊的時(shí)間順序,不允許先攔截后面的導(dǎo)彈,再攔截前面的導(dǎo)彈。

Input

輸入有兩行,
第一行,輸入雷達(dá)捕捉到的敵國導(dǎo)彈的數(shù)量k(k<=25),
第二行,輸入k個正整數(shù),表示k枚導(dǎo)彈的高度,按來襲導(dǎo)彈的襲擊時(shí)間順序給出,以空格分隔。
Output

輸出只有一行,包含一個整數(shù),表示最多能攔截多少枚導(dǎo)彈。

Sample Input

8

300 207 155 300 299 170 158 65

Sample Output

6

題目鏈接:
https://vjudge.net/problem/OpenJ_Bailian-2945

乍一看我以為是最長不增長子序列,然后就玩了一次小聰明,把數(shù)倒過來輸入,然后按最長增長子序列來做,然后悲劇發(fā)生了,我改了2個小時(shí)的bug,改到懷疑人生,但就是不對,最后老老實(shí)實(shí)的重新寫,AC了才發(fā)現(xiàn)“必須按來襲導(dǎo)彈襲擊的時(shí)間順序,不允許先攔截后面的導(dǎo)彈,再攔截前面的導(dǎo)彈”,崩潰了!!!!

說一下思路吧,dp[i]以a[i]為前綴的子序列長度,狀態(tài)轉(zhuǎn)移方程:如果a[i]<=a[j],那么a[j]前面肯定可以放a[i],dp[i]=max(dp[i],dp[j]+1)。

AC代碼

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <fstream>
 4 #include <algorithm>
 5 #include <cmath>
 6 #include <deque>
 7 #include <vector>
 8 #include <queue>
 9 #include <string>
10 #include <cstring>
11 #include <map>
12 #include <stack>
13 #include <set>
14 using namespace std;
15 int a[50];
16 int dp[50];
17 int maxn=0;
18 int main()
19 {
20     int k;
21     cin >> k;
22     for(int i=0; i<k; i++)
23         {
24             cin >>a[i];
25             dp[i]=1;//初始狀態(tài),以a[i]為前綴都為1
26         }
27     for(int i=1; i<k; i++)
28         for(int j=0; j<i; j++)
29         {
30             if(a[i]<=a[j])
31             {
32                 dp[i]=max(dp[i],dp[j]+1);//狀態(tài)轉(zhuǎn)移方程
33                 maxn=max(dp[i],maxn);
34             }
35         }
36     cout << maxn << endl;
37 }

總結(jié)

以上是生活随笔為你收集整理的【OpenJ_Bailian的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。