bool
cmp(qujian x,qujian y)
}}
y=x+
1;
那麼首先本題會出現不能覆蓋的情況,分為兩種:
1、一開始起始位置不是1,那麼永遠不能覆蓋
if
(line[0]
.a!=1)
2、覆蓋到最後區間的右端點比要求的區間右端點還小
if
(y>x)
其餘情況是可以實現的,那麼為了能夠覆蓋區間,我們選擇的區間要足夠長,當我們確定左端點的時候,右端點要盡可能的大
if
(line[j]
.a<=y&&line[j]
.b>=x)
else
if(line[j]
.a>y)
這樣操作就是先找區間右端點最大的區間,然後往下找,區間個數++,再對當前區間找到右端點最大的區間,依次往下直到最後,能覆蓋就輸出區間個數,不能就輸出-1
**如下:
#include
#include
using
namespace std;
struct qujian
line[
100000];
bool
cmp(qujian x,qujian y)}}
intmain()
sort
(line,line+n,cmp)
;int count=1;
//第乙個區間如果能覆蓋就可以直接輸出結果了,所以預設為1
if(line[0]
.a!=1)
//開頭不是1一定不可行
else
else
if(line[j]
.a>1)
break
;//不符合說明找到了,退出
}while
(x!=t)
//不到最右端就往右找
else
if(line[j]
.a>y)}if
(y>x)
//如果迴圈到後來發現最大的也不能覆蓋掉,就返回-1
else
}printf
("%d"
,count);}
}
執行結果:
C 第三週作業
作業一 課本各例題 例題一 例題1.功能 顯示輸出各種變數所佔的節數 include iostream using namespace std int main cout 例題二 功能 布林型別使用舉例 include includeusing namespace std int main bool...
第三週C 作業
1.輸入課本各個例題,除錯執行程式,並分析程式,將每乙個程式改寫2到3個版本,自己分析程式結果,然後再除錯執行,核對分析結果的對錯。bool型別使用舉例 include 編譯預處理命令 include 使用控制符boolalpha需使用此標頭檔案 using namespace std 使用標準名空...
C 第三週作業
作業一 例 功能 顯示輸出各種整型變數所佔的位元組數 include 編譯預處理命令 using namespace std 使用標準名空間std int main 主函式 作業三 功能 習題求值 include include using namespace std int main k 13.7...