多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > 綜合技術 > 51nod-1091 . 線段的重疊

51nod-1091 . 線段的重疊

來源:程序員人生   發布時間:2014-09-29 20:27:14 閱讀次數:3099次

http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1091

題意:給定n條線段的起點和終點,計算線段的重疊部分,輸出最長的部分。沒有重疊就輸出0。

思路:最初思路 是用dp[i]保存前i個點線段重疊的最大部分,但是如果二維循環,O(n*n)的復雜度,明顯超時,但是其實只用一維就完全可以搞定了,

先按起點排序對所有點,然后找當前點前面的所有線段終點最靠后的那根,就跟當前線段有最大的重合,長度就是那個線段的終點減去當前線段的起點,但是有一種情況就是那個線段的終點超過了當前線段的終點,那么重合的長度就是當前線段的長度,那根線段覆蓋當前長度。只要每次保存最大值就行,這樣排序復雜度nlogn,一次遍歷n,總復雜度是nlogn。

#include<cstdio> #include<cstring> #include<algorithm> using namespace std; struct node { int x,y; }p[50001]; int cmp(node a,node b) { if(a.x!=b.x) return a.x<b.x; else return a.y<b.y; } int main() { //freopen("a.txt","r",stdin); int n,i,j,maxn=0; scanf("%d",&n); for(i=0;i<n;i++) scanf("%d%d",&p[i].x,&p[i].y); sort(p,p+n,cmp); int m=p[0].y; for(i=1;i<n;i++) { if(p[i].y>=m) { maxn=max(maxn,m-p[i].x); m=p[i].y;} else maxn=max(maxn,p[i].y-p[i].x); } printf("%d ",maxn); return 0; }


 

 

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 成人区视频 | 国产欧美日韩精品第一区 | 最近免费字幕高清在线观看 | 久久精品在线视频 | 在线免费观看污片 | 69国产成人综合久久精 | www视频网站 | 性做久久久久久久久浪潮 | 中文字幕2022永久在线 | 免费爱做网站在线看 | 国产中文字幕在线观看 | 韩国三级午夜理伦三级99 | 91人人视频 | 日本午夜大片a在线观看 | 国产欧洲亚洲 | 男女视频在线免费观看 | 最近高清中文在线字幕在线观看 | 亚洲看片| 在线播放免费一级毛片欧美 | 91麻豆精品国产综合久久久 | 日本亚洲天堂 | 国产成人美女福利在线观看 | 99热这里只精品99re66 | 国产一区二区三区在线看 | 老妇女人一级毛片 | 亚洲片在线 | 国产在线成人一区二区 | 亚洲欧美精品一中文字幕 | 宅男午夜视频在线观看 | 国产69精品久久久久999 | 天堂色网站 | 亚洲网站大全 | 亚洲一区二区三区国产精品 | 久久久久在线 | 最近中文字幕2019高清免费 | 欧美精品a毛片免费观看 | 2021国产精品系列一区二区 | 天堂在线免费 | 东京干手机福利视频 | 欧美成性色 | 国产免费福利视频一区二区 |