洛谷 P2757 飛彈的召喚 資料加強

2021-08-08 03:25:46 字數 1068 閱讀 8601

題目背景

易琢然今天玩使命召喚,被敵軍用空對地飛彈轟炸,很不爽;眾所周知,易琢然很不老實,他開了外掛程式;

外掛程式第一次可以打掉任意高度的飛彈,之後每一次都不能打掉大於上一次高度的飛彈;

但易琢然水平太差,敵軍最多有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 時,則能夠攔截與它位置恰好相同的飛彈。但該飛彈攔截系統也存在這樣的缺陷 每套系統每天只能設定一次工作半徑。而當天的使用代價,就是所有系統工作半徑的平方和。某...