来人多的地方发求助帖
  • 板块学术版
  • 楼主AT1198_100
  • 当前回复11
  • 已保存回复11
  • 发布时间2020/7/17 11:22
  • 上次更新2023/11/6 22:58:40
查看原帖
来人多的地方发求助帖
311230
AT1198_100楼主2020/7/17 11:22

龙虎斗 红红黑黑的一大片,原来帮我的那个人不知道去哪里了。

#include<iostream>
#include<cmath>
using namespace std;
long long n;
long long army[1000000];
long long m,p1,s1,s2,p2;
long long tiger,dragon;
long long minx_[1000000],minx1[1000000],minx2[1000000];
long long ans=0,sum=0;
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>army[i];
    }
    cin>>m>>p1>>s1>>s2;
    if(p1!=m){
        army[p1]+=s1;
    }
    for(int i=1;i<m;i++){
        dragon+=army[i]*(m-i);
    }
    for(long long j=n;j>m;j--){
        tiger+=army[j]*(j-m);
    }
    long long mat=abs(dragon-tiger); //min at the moment
    long long minx; //unstable value of min
    if(dragon<tiger){
        for(long long i=1;i<m;i++){
             long long dragon2=0;
             dragon2=dragon+(army[i]+s2)*(m-i);
             minx=abs(dragon2-tiger);
            if(minx<=mat){
                minx1[i]=minx;
            }
        }
    }
    else{
        for(long long j=n;j>m;j--){
            long long tiger2=0;
            tiger2=tiger+(army[j]+s2)*(j-m);
            minx=abs(tiger2-dragon);
            if(minx<=mat){
                minx2[j]=minx;//tiger的气势
            }
        }
    }
    for(int i=1;i<=m;i++){
        while(minx1[i]!=0){
            minx_[i]=minx1[i];//数组合并
        }
    }
    for(int j=1;j>m;j--){
        while(minx2[j]!=0){
            minx_[j]=minx2[j];//数组合并
        }
    }
    sort(minx_,minx_+n);//把minx1和minx2合并在一起之后的气势P2所有值排序
    cout<<minx_[1];
    return 0;
}

不知道哪里出了问题,minx_[]数组全部是0.

2020/7/17 11:22
加载中...