hunnu 11182 最長非遞減子串行

2021-06-07 22:17:36 字數 1901 閱讀 2156

xujie賣車

time limit:1000ms,special time limit:2500ms,memory limit:32768kb

total submit users:1,accepted users:1

problem 11182 :no special judgement

problem description

臨近畢業,sxj_program(xujie)打算賣掉他的二手自行車,但他卻不知道應該賣多少錢才合適。所以他打算研究一種方法來評估自行車的**。 下圖是xujie的寶馬(現在可能是3,4手了……)。看得出來,xujie很愛護他的寶馬,剎車,車座和輪胎都保養得很好,只是車軸掉了幾根。所 以他決定根據剩下的車軸來評估**。作為一名nku acmer,xujie不想簡單地將**與車軸的數量掛鉤,而是根據"knot"。"knot"的含義是由車軸組成的集合,這個集合中的每根車軸兩兩相 交。為了簡化這個問題,xujie將自行車的輪子看成乙個圓,而每根車軸看成圓上的一條弦。

因為快要畢業了,xujie想要好好地吃喝玩樂一把,順便找找妹子,沒時間解決這個問題,所以他想請你來幫幫忙(當然,xujie已經畢業了,車也 賣出去了,但是他還是想知道根據這種方法評估出來的**)。xujie會給你乙個車輪(圓和圓上的一些弦),請你告訴xujie最大的"knot"的大小 是多少,乙個"knot"的大小為它的元素個數。

input

輸入的第一行是乙個正整數n(n<=2000),表示車軸的數量。接下來的n行,每行輸入兩個整數i,j(1<=i,j<=2*n).表示該車軸由圓上的i點連線到j點。 假定從圓上某點開始,點1,點2,...按順時針排列。注意,因為可能會有一些車軸交於圓上的同一點,這種情況下的點數會小於2*n.

output

輸出最大的"knot"的大小。

sample input

31 32 56 4
sample output

2
judge tips

樣例如圖所示,最多有兩根車軸彼此相交,所以答案為2。

附加樣例:

sample input:

41 6

2 53 5

4 7 sample output:

3 problem source

nkpc8

將每條弦看成區間(l,r)(l < r),

則滿足條件的集合是l 和 r分別非遞減,又相交的條件易知

處理:先按l排序,l相同按rpaixu

列舉每個起始區間p,在與p相交的所有區間中求出乙個r的最長子序列

例2

#include #include using namespace std;

#define n 2002

struct node

}pt[n];

int n,a[n];

bool cmp(node a,node b)

//返回第乙個比x大的數

//最長非遞減序列

int bs(int r,int x)

return l;

}int main()

}++top;

if(top > res)

res = top ;

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

return 0;

}

最長非遞減子串行的應用

description 我們有乙個數列a1,a2.an,你現在要求修改數量最少的元素,使得這個數列嚴格遞增。其中無論是修改前還是修改後,每個元素都必須是整數。請輸出最少需要修改多少個元素。input 第一行輸入乙個 t 1 leq t leq 10 表示有多少組資料 每一組資料 第一行輸入乙個 n ...

動態規劃之最長非遞減子串行

在乙個數字序列中,找到乙個最長的非連續子串行,使得這個子串行是不下降 非遞減 現有序列a 則a的最長不下降子串行是。如果有多個最長序列,只需選數字順位靠後的序列從大到小輸出。輸入2行 第一行乙個整數n,表示有n個整數的序列要輸入,n 1000 第二行共有n個整數。輸出最長的不下降子串行,只需選數字順...

最長非遞減子串行 dp 二分

時間限制 c c 1秒,其他語言2秒 空間限制 c c 262144k,其他語言524288k 64bit io format lld 乙隻青蛙出去旅遊,因為中國有一句古話說的好 由簡入奢易,由奢入儉難 所以這只青蛙當看的當前景點比前面看過的景點差的時候,青蛙就會說 不開心 為了避免這只青蛙說 不開...