題目背景
易琢然今天玩使命召喚,被敵軍用空對地飛彈轟炸,很不爽;眾所周知,易琢然很不老實,他開了外掛程式;
外掛程式第一次可以打掉任意高度的飛彈,之後每一次都不能打掉大於上一次高度的飛彈;
但易琢然水平太差,敵軍最多有300000顆飛彈,飛彈只能按順序打,因為外掛程式有bug,而且是超音速飛彈,只有一秒飛彈就到了,只能程式設計解決;
但易琢然上課不認真,平時幫他的sxy又不在,所以他只能求助於你
題目描述
有n顆飛彈(n<=300000),求易琢然開乙個外掛程式最多能攔截多少飛彈,開幾個外掛程式才能打掉所有飛彈
missile.cpp/in/out
輸入輸出格式
輸入格式:
一行,依次為n顆飛彈的高度(0《高度<2147483647)
輸出格式:
第一行,乙個外掛程式最多能攔截多少飛彈;第二行,開幾個外掛程式才能打掉所有飛彈
輸入輸出樣例
輸入樣例#1:
389 207 155 300 299 170 158 65
輸出樣例#1:
6
2
說明
n<=300000
第乙個問題最長降(不嚴格),第二個問題最長公升(嚴格)
#include
#include
using namespace std;
int n,tot;
int a[300005],q[300005];
int fdown(int
x) else r=mid-1;
}return l;
}int fup(int
x) else r=mid-1;
}return l;
}int main()
printf("%d\n",tot);
memset(q,0,sizeof(q));
tot=0;
for (int i=1;i<=n;i++)
printf("%d\n",tot);
}
P2757 飛彈的召喚(資料加強)
評測 題目描述同上題。其中n 300000。很明顯,需要用dp而且要用nlogn複雜度的方法求子序列。舉例用nlogn的做法求最長上公升子串行 首先需要乙個low陣列,low i 表示長度為i的子串行最小的末尾 因為當以兩個數為終點的上公升子串行,終 點越小越優 所以,當輸入乙個數時,如果low l...
洛谷P2757 國家集訓隊 等差子串行
題意簡化就是找到a i a j a k 成乙個len 3的等差數列,且a j a i a k a j 那麼列舉a j 為方便從左到右列舉,設數字x在j左邊為1,在右邊為0 那麼可以用樹狀陣列維護乙個hash值,如果a j d和a j d在不同邊也就是乙個是0乙個是1,那麼就存在一組等差序列了 也就是...
洛谷 P1158 飛彈攔截
題目描述 經過 11 年的韜光養晦,某國研發出了一種新的飛彈攔截系統,凡是與它的距離不超過其工作半徑的飛彈都能夠被它成功攔截。當工作半徑為 0 時,則能夠攔截與它位置恰好相同的飛彈。但該飛彈攔截系統也存在這樣的缺陷 每套系統每天只能設定一次工作半徑。而當天的使用代價,就是所有系統工作半徑的平方和。某...