某國為了防禦敵國的飛彈襲擊,發展出一種飛彈攔截系統.但是這種飛彈攔截系統有乙個缺陷:雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能超過前一發的高度.某天,雷達捕捉到敵國的飛彈來襲.由於該系統還在試用階段,所以只有一套系統,因此有可能不能攔截所有的飛彈.
怎麼辦呢?多搞幾套系統唄!你說說倒蠻容易,成本呢?成本是個大問題啊.所以俺就到這裡來求救了,請幫助計算一下最少需要多少套攔截系統.
input
輸入若干組資料.每組資料報括:飛彈總個數(正整數),飛彈依此飛來的高度(雷達給出的高度資料是不大於30000的正整數,用空格分隔)
output
對應每組資料輸出攔截所有飛彈最少要配備多少套這種飛彈攔截系統.
sample input
8 389 207 155 300 299 170 158 65
sample output
2 這題以前做過,做專題的時候又遇到了
如果反向輸入的話,這個題無非就是每次貪心最長的非嚴格上公升子串行,最後問最少需要幾個子串行才能解決問題並輸出。
靈機一動,資料範圍小於30000,就用了一波short int,沒想到細節出現了問題崩了!而且我覺得這個現象也挺有趣。
理論上,在visual studio當中,short int佔兩個位元組,int佔四個位元組。
然而:ac**:
#include
#include
#include
#include
#include
#include
using
namespace
std;
#define ll long long int
#define inf 0x3f3f3f3f
#define jnf 0x7fffffff
const
int maxn = 1e5 + 10;
#define irish_moonshine main
int a[maxn];
bool vis[maxn];
int n;
int irish_moonshine()
for (int i = 0; i < n; i++)}}
}printf("%d\n", ans);
}return
0;}
測試一:short int 賦值給int 沒出現問題
測試二:int賦值給int 沒出現問題
測試三:在陣列的情況下short int賦值給 int出現了問題!
測試四:short int賦值給 short int沒出現問題!
測試五:在陣列的情況下short int賦值給 int沒出現問題!
測試六:%d輸入輸出,並進行賦值,沒出現問題!
測試七:出現了問題!
測試八:0.0
I 最少攔截系統
題目入口 i 最少攔截系統 解題思路 第一遍遍歷前推wa了 很多人想知道為什麼會錯 找到題目裡的坑就豁然開朗了 雖然是飛彈依次飛來 但是後面發射的飛彈可以選擇前面已用過的攔截系統進行攔截 這裡給乙個拆分例子理解一下 示例 8 389 207 155 300 299 170 158 65 389 20...
最少攔截系統(dp)
problem description 某國為了防禦敵國的飛彈襲擊,發展出一種飛彈攔截系統.但是這種飛彈攔截系統有乙個缺陷 雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能超過前一發的高度.某天,雷達捕捉到敵國的飛彈來襲.由於該系統還在試用階段,所以只有一套系統,因此有可能不能攔截所有...
最少攔截系統(dp)
題目傳送門 最少攔截系統 某國為了防禦敵國的飛彈襲擊,發展出一種飛彈攔截系統.但是這種飛彈攔截系統有乙個缺陷 雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能超過前一發的高度.某天,雷達捕捉到敵國的飛彈來襲.由於該系統還在試用階段,所以只有一套系統,因此有可能不能攔截所有的飛彈.怎麼辦...