1214 線段覆蓋

2021-07-08 16:00:44 字數 1123 閱讀 8296

貪心解法:

[解題思路]

首先將線段端點調整為左端點小於(或等於)右端點;

第二,根據右端點將線段從小到大排序;

第三,掃瞄一遍,每次遇到的第乙個與當前的max不相交的即為最優選擇。

[**實現]

#include#includeusing namespace std;

const int n=101;

struct node

a[n];

bool cmp(node a,node b)

} sort(a+1,a+n+1,cmp);

int max=-1000;

for(int i=1;i<=n;i++) }

printf("%d\n",ans);

return 0;

}

序列型動態規劃(dp):

[解題思路]

前兩步同上

第三步,dp[i] = max(dp[i], (dp[j]+1))。

第四,選擇dp陣列中最大值即為結果。

[**實現]

#include#includeusing namespace std;

const int n=101;

int dp[n];

struct node

a[n];

bool cmp(node a,node b)

} sort(a+1,a+n+1,cmp);

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

{ for(int j=1;j<=i;j++)

{ if(a[i].begin>=a[j].end)

{dp[i]=max(dp[i],(dp[j]+1));

if(ans

1214 線段覆蓋 水

時間限制 1 s 空間限制 128000 kb 題目等級 gold 給定x軸上的n 0輸入描述 input description 輸入第一行是乙個整數n。接下來有n行,每行有二個空格隔開的整數,表示一條線段的二個端點的座標。輸出描述 output description 輸出第一行是乙個整數表示最...

1214 線段覆蓋wiki oi

題目描述 description 給定x軸上的n 0輸入描述 input description 輸入第一行是乙個整數n。接下來有n行,每行有二個空格隔開的整數,表示一條線段的二個端點的座標。輸出描述 output description 輸出第一行是乙個整數表示最多剩下的線段數。樣例輸入 samp...

wikioi 1214 線段覆蓋

給定x軸上的n 0 輸入第一行是乙個整數n。接下來有n行,每行有二個空格隔開的整數,表示一條線段的二個端點的座標。輸出第一行是乙個整數表示最多剩下的線段數。3 6 3 1 3 2 5 2 0貪心解法 首先將線段端點調整為左端點小於 或等於 右端點 第二,根據右端點將線段從小到大排序 第三,掃瞄一遍,...