給定x軸上的n(0輸入第一行是乙個整數n。接下來有n行,每行有二個空格隔開的整數,表示一條線段的二個端點的座標。
輸出第一行是乙個整數表示最多剩下的線段數。
36 3
1 3
2 5
2
0貪心解法:首先將線段端點調整為左端點小於(或等於)右端點;第二,根據右端點將線段從小到大排序;第三,掃瞄一遍,每次遇到的第乙個與當前的max不想交的即為最優選擇。
#include #include #include using namespace std;
struct node x[100];
int cmp(node x1, node x2)
int main()
sort(x, x+n, cmp);
int res = 0, max = -1000;
for(int i=0; i= max)
} cout << res;
return 0;
}
序列型動態規劃(dp):前兩步同上,第三步,dp[i] = max(dp[i], (dp[j]+1))。第四,選擇dp陣列中最大值即為結果。
#include #include using namespace std;
int main()
} for(int i=n-1; i>0; i--)
}}
int max = 0;
for(int i=1; i=b[j])
dp[i] = dp[i]>(dp[j]+1)?dp[i]:(dp[j]+1);
if(max < dp[i]) max = dp[i];
//cout << "i:" << i << " j:" << j << " dp[i]:" << dp[i] <<" dp[j]:" << dp[j] << endl;
}} cout << max;
return 0;
}
1214 線段覆蓋wiki oi
題目描述 description 給定x軸上的n 0輸入描述 input description 輸入第一行是乙個整數n。接下來有n行,每行有二個空格隔開的整數,表示一條線段的二個端點的座標。輸出描述 output description 輸出第一行是乙個整數表示最多剩下的線段數。樣例輸入 samp...
1214 線段覆蓋
貪心解法 解題思路 首先將線段端點調整為左端點小於 或等於 右端點 第二,根據右端點將線段從小到大排序 第三,掃瞄一遍,每次遇到的第乙個與當前的max不相交的即為最優選擇。實現 include includeusing namespace std const int n 101 struct nod...
1214 線段覆蓋 水
時間限制 1 s 空間限制 128000 kb 題目等級 gold 給定x軸上的n 0輸入描述 input description 輸入第一行是乙個整數n。接下來有n行,每行有二個空格隔開的整數,表示一條線段的二個端點的座標。輸出描述 output description 輸出第一行是乙個整數表示最...