日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

覆盖统计

發(fā)布時間:2025/5/22 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 覆盖统计 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

覆蓋統(tǒng)計(axis.c/cpp/pas)
【題目大意】
數(shù)軸上有一些點,從 1 標記到n,逐漸被線段覆蓋, 求
每次覆蓋后未被覆蓋的點的個數(shù)。
【輸入數(shù)據(jù)】
第一行,點數(shù) n,操作數(shù)k。
接下來k 行,每行是線段的左右端點 l,r
【輸出數(shù)據(jù)】
k行,每次操作后未被覆蓋的點。
【輸入樣例】
9 3
3 3
5 7
1 9
【輸出樣例】
8
5
0
【數(shù)據(jù)范圍】
對于 30%的數(shù)據(jù),1<=n,k<=2000;
對于 100%的數(shù)據(jù),1<=n<=200000,k<=600000

----------------------------------------

樹什么的不熟練啊,就想出了一種神奇的方法,覆蓋的地方false掉,用一個next函數(shù)跳轉(zhuǎn),原來覆蓋過的地方就不掃了,這樣可以省去很多時間。最后偶爾更新一下,使next函數(shù)簡化,數(shù)據(jù)全過啦!!!(結(jié)果后來發(fā)現(xiàn)更新反而更花時間,不更新能夠更快AC。。。。)

varb:array[0..200001]of boolean;back,next:array[0..200001]of longint;i,j,n,k,l,r,ans,last:longint; beginassign(input,'axis.in'); assign(output,'axis.out');reset(input); rewrite(output);read(n,k);fillchar(b,sizeof(b),true);ans:=n;for i:=1 to n do next[i]:=i+1;for j:=1 to k dobeginread(l,r);i:=l;repeatbeginif b[i] thenbegini:=i+1;next[i-1]:=r+1;b[i-1]:=not b[i-1];dec(ans);endelse i:=next[i];end;until (i>r)or(i>n);writeln(ans);if j mod 10000=0 then //更新next函數(shù)beginlast:=n+1;for i:=n downto 1 dobeginif (b[i]=false)and(b[i-1]=true) thennext[i]:=last;if (b[i]=true)and(b[i-1]=false) thenlast:=i;end;end;end;close(input); close(output); end.

轉(zhuǎn)載于:https://www.cnblogs.com/zjhl2/p/3855967.html

總結(jié)

以上是生活随笔為你收集整理的覆盖统计的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。