飛彈發射 河南省第九屆省賽D題

2021-07-31 14:32:56 字數 1621 閱讀 7686

時間限制:1000 ms | 記憶體限制:65535 kb 

難度:4

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

每組測試資料,輸出佔一行,即飛彈能擊破的最多目標數。

15 1 3 2 1 

3 1 

6 2 

4 2 

2 5 

4 5 

6 6 

3 4 

1 6 

2 1 

7 4 

9 3 

5 3 

1 3 

15 5 

12 4

4

本題剛開始就想錯方向了開始認為是只要把射線夾著的點提取出來再找最大遞增子串行即可,但是後來才發現原來射線內部和射線平行的兩點也不行,所以還要進行乙個判斷,當時想著這樣每次判斷太複雜,但是也沒更好的方法,就上網搜了一下,發現可以以兩條射線為座標軸重新定義座標軸即可

**:

#include#include#include#include#define inf 0x3fffffff

#include#includeusing namespace std;

struct zb

s[100005];

bool cmp(zb a,zb b)

return la;

}int di(zb a,int n)//求最長上公升子串行

else

}return k;

}int main()

int t=0;

for(int i=0;ians)//這個地方真的傷,開始是if(s1b*1.0/a)總是錯,還找不到錯誤,就找了網上**,一點點改,都改的差不多一樣了,還是錯,最後發現就是這的問題,但不知道為啥,有大神可以幫忙解惑嗎,求教

}sort(s,s+t,cmp);

int l=di(s,t);

printf("%d\n",l);}}

第九屆河南省ACM省賽 D 飛彈發射

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 情報系統獲...