弱弱的戰壕

描述
永恆和mx正在玩一個即時戰略遊戲,名字嘛~~~~~~恕本人記性不好,忘了-_-b。
mx在他的基地附近建立了n個戰壕,每個戰壕都是一個獨立的作戰單位,射程可以達到無限(“mx不贏定了?!?”永恆ftING...@_@)。
但是,戰壕有一個弱點,就是隻能攻擊它的左下方,說白了就是橫縱座標都不大於它的點(mx:“我的戰壕爲什麼這麼菜”ToT)。這樣,永恆就可以從別的地方進攻摧毀戰壕,從而消滅mx的部隊。
戰壕都有一個保護範圍,同它的攻擊範圍一樣,它可以保護處在它左下方的戰壕。所有處於它保護範圍的戰壕都叫做它的保護對象。這樣,永恆就必須找到mx的戰壕中保護對象最多的點,從而優先消滅它。
現在,由於永恆沒有時間來計算,所以拜託你來完成這個任務:
給出這n個戰壕的座標xi、yi,要你求出保護對象個數爲0,1,2……n-1的戰壕的個數。
格式
輸入格式

第一行,一個正整數n(1<=n<=15000)
接下來n行,每行兩個數xi,yi,代表第i個點的座標
(1<=xi,yi<=32000)
注意:可能包含多重戰壕的情況(即有數個點在同一座標)
輸出格式

輸出n行,分別代表保護對象爲0,1,2……n-1的戰壕的個數。


題目分析:這題太水了……雖然上面說是樹狀數組,但暴力就過了……


代碼如下:

#include<iostream>
#include<cstdio>
using namespace std;


int x[32001],y[32001],ans[15001];


int main()
{
 int n;
 scanf("%d",&n);
 for (int i=1; i<=n; i++) scanf("%d%d",&x[i],&y[i]);
 for (int i=1; i<=n; i++)
 {
   int total=0;
   for (int j=1; j<=n; j++)
   {
    if (x[j]<=x[i] && y[j]<=y[i] && i!=j) total++;  
   }
   ans[total]++;
 }
 for (int i=0; i<n; i++) printf("%d\n",ans[i]);
 return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章