FJUT寒假第一周作業浮點數查尋題解

2022-09-01 14:45:20 字數 1519 閱讀 6372

timelimit:4000ms  memorylimit:128mb

64-bit integer io format:%i64d

problem description

已知在二維空間中有n個點,p0,p1……pn-1

已按照x為第一優先順序,y為第二優先順序從大到小排好序;

即若 pi則pi.xinput

只有一組資料

第一行是兩個整數n,m分別代表點的個數和查詢次數

接下來n行,每行有二個帶三位小數的浮點數x,y代表乙個點的座標

再接下來m行,每行的有4個數字x1,y1,x2,y2代表p1,p2且p1>=p2

其中n,m<=100000;

任意0<=x,y<10^6;

output

輸出n個點所有小於等於p1且大於等於p2的點的下標之和

sampleinput

6 4

125.689 125.689

125.689 125.688

125.688 125.689

125.688 125.689

125.688 125.688

125.688 125.688

125.688 125.688 125.688 125.688

125.688 125.689 125.688 125.688

125.689 125.689 125.688 125.689

125.688 125.689 125.688 125.689

sampleoutput

9146

5明顯是二分,沒啥好解釋的。

輸出:n個點所有小於等於p1且大於等於p2的點的下標之和因為是包括等於,

所以我們可以用二分直接找出和點(x1,y1)相等的最小下標(數是從大到小,所以是最小下標)並記錄,

接著在從(i-1)~n中找出和點(x2,y2)相等的最大下標

最小下標和,很容易看出是乙個等差數列求和

這題唯一的坑:本身資料是不超過int,但是下標和為爆int 所以要用long long

下面附上部分核心**:

x=-1;//

x為下界

s=n;//

s為上界

scanf("

%lf%lf%lf%lf

",&x1,&y1,&x2,&y2);

while(x+1

i=s;//

i用來存點(x1,y1)相等的最小下標

x=s-1;//

縮小下界範圍減時間,因為x1y1 大於x2y2,所以下界最小為s-1

s=n;//

上界不變

while(x+1

s=s-1;//

上面二分求出的是小於(x2,y2)的最小下標,減1後就是相等的最大下標

printf("

%lld\n

",(i+s)*(s-i+1)/2);//

s-i+1是i~s的長度

寒假第一周

寫了這個標題,感覺有點像寫周記的味道.那就盡量堅持這個寒假裡至少每週一篇吧。這幾天學校裡真的好清靜了,實驗室和寢室都沒人了。其實說起來這周算是我們寒假的第二週了吧,14號就全部考完了,從放假的基本定義來看,那時候就算是寒假了。只不過上週這邊人還比較多,而且本科生也都沒考完,校歷上也是這週才算開始放假...

寒假第一周

通過.符號一級一級訪問,也可以通過 來訪問。定義乙個指向結構體的指標,指標會傳遞結構體的位址。include struct list int main 關鍵字 typedef是型別定義的意思。typedef struct 是為了使用這個結構體方便。include typedef struct lis...

寒假第一周總結

今天是2019年1月19日,假期學習的第一周 學校期末考試後,休息了兩天就正式的進入假期的學習時間了。寒假中的學習不像平常上課那樣,每天還要上課 寫作業 寫報告 開會等一些瑣碎的事,假期裡面的學習應該事提公升自己能力較快的時候,但是整天的這樣學習肯定也會有疲倦的時候,這就要求我們要合理的分配自己的學...