トピックリンク:http://acm.hdu.edu.cn/showproblem.php?pid=1257
ミサイル迎撃システムを開発するために、敵のミサイル攻撃を防御するために国が、そのようなミサイル迎撃システムは欠陥がありますが、 その最初の任意の高さに到達するためのラウンドが、各シェル自然と前超えるべきではありません高さの外に。ある日、レイ キャプチャ敵のミサイルのを打った。システムは、まだベータ版でこれだけのシステムであるとして、インターセプトしないことが可能である 任意のミサイル にそれを行う方法?それ以上のセットを構築しますシステム詠唱!教えてDaoman簡単に、コスト?コストは柔術ので、ここで助けに、大きな問題ああです システムはインターセプタの最小セットを必要とどのくらい、してくださいヘルプ計算。
この白書はまた、彼は(その場合には最長のサブシーケンスの問題が削除されません)ほとんどのミサイル迎撃を求めていませんどのくらいの質問ですが、ミサイルインターセプトそれらすべての最小値を求めるために、システムの数は、その後、明らかに私達のそれぞれは、ミサイルが来ます私たちは、それが高い、あなたは明らかにして、唾より資格よりも、インターセプトにそれをこのシステムを使用することができ、最後のミサイルが来る前にミサイルが持っていた切片にシステムがある場合には、それらを傍受していました他のより高いの最小の高さも高い電流ミサイルミサイルよりもインターセプトに準備することができますので、適格なシステムは、現在、傍受の最低の最小の高さです。現在のミサイルが高い場合には、それらを傍受することができます誰のシステムが存在しない、それだけで新しいシステムを開くことができます。コード:
1 // 贪心 2の#include <iostreamの> 3の#include <cstdioを> 4 使って 名前空間STDを、 5 のconst int型 MAXN = 10005 ; 6 INT N。 7 INT A [MAXN]。 8 INT F [MAXN]。 9 int型CNT。 10台の int型POS。 11 ブールフラグ。 12 のint main()の 13 { 14 ながら(scanf関数(" %のD "、&N)!= EOF) 15 { 16 、CNT = 0 。 17 のために(INT iが= 1 ; iが<= N; ++ I)のscanf(" %dの"、および[I])。 18 のために(INTは iは= 1 ++; I <= N I) 19 { 20 のint = CHA 10000000 。 21 フラグ= 0 。 22 のために(INT J = 1 ; J <= CNT ++ j)の 23 { 24 もし(F [j]> = [I] && F [J] -a [I] <CHA)POS = J、フラグ= 1、CHA = F [J] - [I]。 25 } 26 であれば(フラグ)F [POS] = [I]。 27 他に F [++ CNT] = [i]は、 28 } 29 のprintf(" %dの\ n " 、CNT)。 30 } 31 リターン 0 。 32 }