P2757 飛彈的召喚(資料加強)

2022-05-13 22:51:03 字數 843 閱讀 5350

評測

題目描述同上題。

其中n<=300000。

很明顯,需要用dp而且要用nlogn複雜度的方法求子序列。

舉例用nlogn的做法求最長上公升子串行:

首先需要乙個low陣列,low[i]表示長度為i的子串行最小的末尾(因為當以兩個數為終點的上公升子串行,終

點越小越優),所以,當輸入乙個數時,如果low[len]< x,直接插入到末尾,否則,在low中找乙個比它大或等於它的第乙個數,替換。

#include

#include

#include

#define ll long long

#define m 2147483647

using

namespace

std;

int n,a[300005],len;

int up[300005];//up[i]記的是長度為i的的不上公升子串行的最大末位

int low[300005];//low[i]記的是長度為i的上公升子串行最小末位

int search(int l,int r,int z)//在up中找乙個比z小最大的

return l;

}/*int search2(int l,int r,int z)//在low中找乙個比z大最小的

}printf("%d\n",len);

len=0;

low[++len]=a[1];

for(int i=2;i<=n;i++)

}printf("%d",len);

return

0;

}

寫乙個對的二分好難!

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

題目背景 易琢然今天玩使命召喚,被敵軍用空對地飛彈轟炸,很不爽 眾所周知,易琢然很不老實,他開了外掛程式 外掛程式第一次可以打掉任意高度的飛彈,之後每一次都不能打掉大於上一次高度的飛彈 但易琢然水平太差,敵軍最多有300000顆飛彈,飛彈只能按順序打,因為外掛程式有bug,而且是超音速飛彈,只有一秒...

洛谷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,那麼就存在一組等差序列了 也就是...

P1028 數的計算

我們要求找出具有下列性質數的個數 包含輸入的自然數 nn 先輸入乙個自然數 nn n le 1000n 1000 然後對此自然數按照如下方法進行處理 不作任何處理 在它的左邊加上乙個自然數,但該自然數不能超過原數的一半 加上數後,繼續按此規則進行處理,直到不能再加自然數為止.輸入格式 11 個自然數...