alpha 機構研發出一種新型智慧型飛彈,它能夠在雷達檢測到的區域內,選擇一條前進的路徑,
擊破路徑上所有的目標物。
雷達位於(0,0)處,它能夠檢測到兩條射線之間的區域(不妨設在第一象限)。
飛彈一開始置放在(0,0)處,它可以在雷達能檢測到的區域內先選擇乙個目標物擊破,然後
再繼續前進,選擇另乙個目標物擊破。注意,飛彈不能沿著這兩條射線前進,當然也不能停在原
地。可以假設,飛彈一旦發射,其能量無比大,前進的路徑無限長。
已知雷達能夠檢測到區域,其射線 1:ax-by=0 和射線 2:cx-dy=0。alpha 機構的總指揮希望
在發現目標群的第一時刻,計算出一條可以擊破最多目標物的路徑。
第一行: t 表示以下有 t 組測試資料(1≤t ≤8)
對每組測試資料:
第 1 行: n 表示目標物的個數
第 2 行: a b c d 代表兩條射線的斜率分別是 a/b 和 c/d。
接下來有 n 行,每行 2 個正整數 xi yi 即第 i 個目標物的座標。
(1) n<=10^5 0<=a, b, c, d<=10^5 a 和 b 不會同時為 0,c 和 d 不會同時為 0;
(2) 0<= xi , yi <=10^6 i=1,…..,n
每組測試資料,輸出佔一行,即飛彈能擊破的最多目標數。1
15 1 3 2 1
3 16 2
4 22 5
4 56 6
3 41 6
2 17 4
9 35 3
1 315 5
12 44
解題思路:
首先,我們只需要考慮在曲線之內的點。然後思考,如何判斷飛彈是前進的?(這個問題在比賽的時候一直困擾我)我們將兩條射線看成x軸和y軸進行座標變換,有了新的座標後,很容易可以判斷前進的情況(x遞增,y遞增)。變換之後用nlogn的lis求解即可。這裡要注意乙個問題,當x軸不變,y軸增大時,lis有可能將其統計在內。我們在排序時設定,當x相等時y從大到小排序,可以解決上述問題。
這題的題面其實表達的不是很清楚,比如是否有多個目標在同一位置,兩條射線的相對位置是否固定。。。然而題目在不考慮這些因素的情況下都能a。。。
**:
#include #includeusing namespace std;
const int n=110000;
struct node
a[n],b[n];
bool cmp(node a,node b)//先按x從小到大排序,如果x相等按y從大到小排序,這樣排除了沿y軸前進的情況
return low;
}int dp(int n)//lis nlogn模板
else
}return len;
}int main()
{ int t,n;
double a1,b1,c1,d1;
cin>>t;
while(t--)
{cin>>n;
cin>>a1>>b1>>c1>>d1;
//保證c1/d1射線在a1/b1上面,資料中不存在相反情況
/*if(b1==0||c1==0||(b1!=0&&d1!=0&&c1/d1
飛彈發射 河南省第九屆省賽D題
時間限制 1000 ms 記憶體限制 65535 kb 難度 4 alpha 機構研發出一種新型智慧型飛彈,它能夠在雷達檢測到的區域內,選擇一條前進的路徑,擊破路徑上所有的目標物。雷達位於 0,0 處,它能夠檢測到兩條射線之間的區域 不妨設在第一象限 飛彈一開始置放在 0,0 處,它可以在雷達能檢測...
NYOJ 飛彈發射 河南省第九屆省賽D題 LIS
時間限制 1000 ms 記憶體限制 65535 kb 難度 4 alpha 機構研發出一種新型智慧型飛彈,它能夠在雷達檢測到的區域內,選擇一條前進的路徑,擊破路徑上所有的目標物。雷達位於 0,0 處,它能夠檢測到兩條射線之間的區域 不妨設在第一象限 飛彈一開始置放在 0,0 處,它可以在雷達能檢測...
河南省第九屆省賽 通道安全
時間限制 1000 ms 記憶體限制 65535 kb 難度 2描述 alpha 機構有自己的一套網路系統進行資訊傳送。情報員 a 位於節點 1,他準備將乙份情報 傳送給位於節點 n 的情報部門。可是由於最近國際紛爭,戰事不斷,很多通道都有可能被遭到監 視或破壞。經過測試分析,alpha 情報系統獲...