题目
拦截的第奇数颗导弹比前一颗导弹更远、更高,拦截的第偶数颗导弹比前一个更远、更低,问一共能防御多少颗导弹。
分析
像过山车一样的序列我也不知道叫什么,不过纯模拟就好了,貌似叫dp。
代码
#include <cstdio>
#include <cctype>
using namespace std;
int ans=1,last,now,n; bool big;
int in(){
int ans=0; char c=getchar();
while (!isdigit(c)) c=getchar();
while (isdigit(c)) ans=ans*10+c-48,c=getchar();
return ans;
}
int main(){
n=in(); now=in();
while (--n){
last=now; now=in();
if (last==now) continue;//相等跳过
if (big^(now<last)) ans++,big=now<last;//正好大小关系与上一次不同
}
return !printf("%d",ans);//也就是这些升降的个数
}
本文介绍了一个导弹防御模拟问题,通过动态规划(DP)的方式解决导弹拦截的最优方案。任务是确定能够成功防御的导弹数量,其中拦截的奇数颗导弹比前一颗更远更高,而偶数颗则更远但更低。
588

被折叠的 条评论
为什么被折叠?



