最少拦截系统
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 12689 Accepted Submission(s): 5030
怎么办呢?多搞几套系统呗!你说说倒蛮容易,成本呢?成本是个大问题啊.所以俺就到这里来求救了,请帮助计算一下最少需要多少套拦截系统.
8 389 207 155 300 299 170 158 65
2
这是一道简单的普通的DP题,每录入一个temp数据 都要覆盖当前比temp大的最小的系统,否则系统数目num++;
#include<iostream>
using namespace std;
#define max 1000
int aa[max];
int main()
{
int i,j,n,num,temp,aj;
while(cin>>n)
{
for(i=0;i<n;i++) aa[i]=30001;
num=0;//拦截系统个数
for(i=0;i<n;i++)
{
cin>>temp;
aj=-1;
for(j=0;j<num;j++)
{
if(aa[j]>=temp)
{
if(aj==-1) aj=j;
else if(aa[j]<aa[aj]) aj=j;
}
}
if(aj==-1)
{
aa[num]=temp;
num++;
}
else
aa[aj]=temp;
}
cout<<num<<endl;
}
return 0;
}