无脑蒟蒻求助普及小破题
查看原帖
无脑蒟蒻求助普及小破题
352328
AdventureExtremeX楼主2020/8/5 09:05

rt.目前只有40pts.

代码如下:

//By XZ
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
long long bing[100050];	//记录兵营工兵数量。
long long num,mid,to,peo,has,anser;
//num为兵营数量,mid为m,to为p1,peo为s1,has为s2,anser为答案。
long long dra=0,tig=0;//记录龙虎气势
int main()
{
    cin>>num;
    for(int i=1;i<=num;i++)
    {
        cin>>bing[i];
    }
    cin>>mid>>to>>peo>>has;
    //录入完毕
    bing[to]+=has;//s1派入p1
    for(int i=1;i<mid;i++)
    {
        dra+=bing[i]*abs(mid-i);
    }//计算龙气势
    for(int i=mid+1;i<=num;i++)
    {
        tig+=bing[i]*abs(i-mid);
    }//计算虎气势                                      
    //cout<<dra<<","<<tig<<endl;
    long long minn=2147483647;
    for(int i=1;i<=num;i++)//暴力枚举
    {
        int qwq=abs(mid-i),number;
        if(i<mid)
        {
            number=abs(tig-(dra+qwq*has));
        }//若将兵派入龙方(左侧)
        else
        {
            if(i>mid)
            {
                number=abs(dra-(tig+qwq*has));//兵派入虎方
            }
            else
            {
                number=abs(dra-tig);//兵派入中间军营
            }
        }
        if(number<minn)//若气势差比最小值小
        {
            minn=number;
            anser=i;
        }
        //cout<<i<<":"<<number<<endl;
    }
    //cout<<endl;
    cout<<anser;
    return 0;
}
2020/8/5 09:05
加载中...