p2813的不解之处
  • 板块P2813 母舰
  • 楼主yuchaoyang
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/3/21 18:51
  • 上次更新2024/3/21 20:53:10
查看原帖
p2813的不解之处
415908
yuchaoyang楼主2024/3/21 18:51

这个题目没有规定防御力不重复吧,那么如果是这种样例 5 5 0 0 0 1 1000 1000 1200 1200 1200 1200 正常来说输出应该是3600,但是按照完全ac的代码就会是3400

反而我修改过的会变成有些wa,大家帮忙看看

#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
    
	int a[100010],b[100010];
	int n,m,sum_attack=0,sum_defend=0,startloc=1;
	cin>>n>>m;
	for(int i=1;i<=n;i++){  //防御
		cin>>a[i];
	}
	for(int i=1;i<=m;i++){   //攻击
		cin>>b[i];
	}
	sort(a+1,a+n+1,less<int>());
	sort(b+1,b+m+1,less<int>());
	
    int pointer_loc=1;

	for(int i=1;i<=m;i++){
        
        if(a[pointer_loc]==0) {
            pointer_loc++;
            i--;//这个地方就是问题所在
        }
        
        if(i>=1&&b[i]>a[pointer_loc]&&a[pointer_loc]!=0){
            b[i]=0;
            a[pointer_loc]=0;
            pointer_loc++;
        }
        
	}
	
	for(int i=1;i<=m;i++){
		sum_attack+=b[i];
	}
	
	for(int i=1;i<=n;i++){
		sum_defend+=a[i];
	}

    if(sum_defend==0){
        cout<<sum_attack;
    }
    else{
        cout<<0;
    }

    system("pause");
	return 0;

}

2024/3/21 18:51
加载中...