P2813 母舰

博客内容解析了一道编程题,涉及模拟攻打敌方防御系统以求得最大伤害的算法。关键点包括攻击系统与防御系统的匹配策略,处理0攻击力或防御力的情况,以及确保使用最小的攻击系统。通过排序和遍历,确定最优攻打顺序,最终计算总伤害值。
摘要由CSDN通过智能技术生成

题目链接:P2813 母舰 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn​​​​​​

题目大意:

攻打对方的防御体系,找出最大的伤害值(是不是听得云里雾里的?往下看给你解释)

思路:

模拟

坑点;

一、每个攻击系统只能打一个防御系统,打完了就没了。

二、我方的攻击系统的攻击力或者是敌方的防御系统的防御力可能为0。

三、要用尽量小的打他的防御系统,因为大的要放后面打母舰。

我特别迷这些点是怎么从题上看出来的,我咋就没读出来这些信息

代码:

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int tf[10000000],wf[10000000];
int m,n,s,i,t;
int main()
{
 cin>>m>>n;//输入敌方的防御系统数量和我方的攻击系统数量
 for(i=1;i<=m;i++)scanf("%d",&tf[i]);//输入敌方的防御系统的防御力
 for(i=1;i<=n;i++)scanf("%d",&wf[i]);//输入我方的攻击系统的攻击力
 sort(tf+1,tf+1+m);//进行排序。(注意:这里要从小到大,否则就不能用尽量小的来打敌方的防御系统,留大的来打母舰。)
 sort(wf+1,wf+1+n);//进行排序。(注意:这里要从小到大,否则就不能用尽量小的来打敌方的防御系统,留大的来打母舰。)
 t=1;//定义敌方现有的,最小的防御系统的防御力
 for(i=1;i<=n;i++)
 {
  if(tf[t]==0)t++;//要特别注意这里!!!否则其实没有防御系统,程序也自动把他当成有0的防御力的防御系统。
  if(tf[t]<wf[i]&&tf[t]!=0){wf[i]=0;t++;}//再判断一下当前的攻击系统能打破敌方现有的,最小的防御系统。如果能就清0做标记,并且换下一个防御系统进行攻打。
 }
 if(t<=m){cout<<0;return 0;}//如果打不完防御系统就一点伤害都没有。
 for(i=1;i<=n;i++)s+=wf[i];//否则就是有伤害,把剩下的攻击系统的攻击力加起来,这些就是可以打到 母舰的攻击系统。
 cout<<s;//输出最多能打多少伤害
 return 0;
}

总结:

真是的,我都看不出来这些信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值