poj2464 樹狀陣列

2021-09-12 10:20:06 字數 2393 閱讀 4437

這道題。。太特麼多細節了。。

題意:在平面直角座標系中給你n個點,stan和ollie玩乙個遊戲,首先stan在豎直方向上畫一條直線,該直線必須要過其中的某個點,然後ollie在水平方向上畫一條直線,該直線的要求是要經過乙個stan之前畫過的點。 這時候平面就被分割成了四塊,兩個人這時候會有乙個得分,stan的得分是平面上第1、3象限內的點的個數,ollie的得分是平面上第2、4象限內的點的個數,在統計的時候在所畫線上的點都不計算在內。求最終stan使得自己的最差得分最高,並且輸出此時ollie的得分。

題解:

我們可以列舉哪顆星星是中心點,然後就可以知道他們所確定的直線。

線上可以維護四個值:up,down,left,right,分別表示線上四個方位有多少顆星星。

然後我們只要求bl,就可以知道其它:

tl=橫座標比x小的星星總數-bl-left

tr=y座標比x大的星星總數-tl-up

br=y座標比x小的星星總數-bl-down

各種細節》<

1 #include2 #include3 #include4 #include5 #include6

using

namespace

std;78

const

int n=200010,inf=(int)1e9+100;9

int n,pl,mx,c[n],cntx[n],cnty[n],sumx[n],sumy[n],sx[n][2],sy[n][2

],u[n],d[n],l[n],r[n],a1[n],a2[n];

10bool

num[n];

11struct

nodea[n];

14struct

ndp[2*n];

1718

bool cmp_num(int x,int y)

19bool cmp_d(nd x,nd y)

20bool

cmp_a(node x,node y)

2125

int maxx(int x,int y)

2627

void

clear()

2837

38void add(int

x)39

42int getsum(int

x)43

4849

intmain()

5064 sort(p+1,p+1+pl,cmp_d);

65 mx=0;p[0].d=inf;

66for(int i=1;i<=pl;i++)

6772

73 sort(a+1,a+1+n,cmp_a);

74//

for(int i=1;i<=n;i++)

75//

printf("%d %d\n",a[i].x,a[i].y);

76for(int i=1;i<=n;i++)

7781

//for(int i=1;i<=mx;i++)

82//

printf("i = %d %d %d\n",i,cntx[i],cnty[i]);

83for(int i=1;i<=n;i++)

8488

for(int i=1;i<=mx;i++)

8993

for(int i=1;i<=n;i++)

94101

//for(int i=1;i<=n;i++)

102//

105for(int i=1;i<=n;i++)

106117

int ans=0,nl=0

;;118

for(int i=1;i<=mx;i++)

119122 printf("

stan: %d; ollie:

",ans);

123 memset(num,0,sizeof

(num));

124for(int i=0;i<=n;i++)

125if(a1[i]==ans) num[a2[i]]=1

;126

for(int i=0;i<=n;i++)

127if(num[i]) printf("%d"

,i);

128 printf("

;\n"

);129

}130

return0;

131 }

posted @

2016-11-07 20:29

攔路雨偏似雪花 閱讀(

...)

編輯收藏

poj 2464 線段樹統計區間 兩棵樹

仔細分析的話,不用說了,我只是盡自己的力量去寫乙個盡量好看的 思路說一下 就是先統計這個點的上區間有多少點,下區間有多少點,然後x排序再求上下區間,這個時候便可以得知已經更新進去的點一定在該點的左下方 左上方 下方。由此統計出每個點被作為標準點畫出,每個人的得分情況。view code 1 incl...

樹狀陣列POJ2155

poj 2155是一道很不錯的題目,表面上看,這題的要求似乎和樹狀陣列的使用方法恰好相反,改變的是乙個區間,查詢的反而是乙個點。實際上可以通過乙個轉化巧妙的解決。首先對於每個數a定義集合up a 表示 定義集合down a 表示。可以發現對於任何a於是對於這道題目來說,翻轉乙個區間 a,b 為了便於...

poj 2481(樹狀陣列)

這題樹狀陣列明顯可解,不解釋,但是注意有相同的奶牛的處理 include include include include define n 100005 using namespace std int c n tem struct dian d n int cmp dian a,dian b int...