问题标题: 酷町堂:去年NOI复赛题 4275 龙虎斗

0
0
已解决
周俊豪
周俊豪
高级光能
高级光能
改至现在,
仍是20分WA
求助各位dalao们
链接
20分WA代码如下:
#include<iostream>
using namespace std;
int main(){
    int n,a[101000],m,p1,s1,s2;
    int l=0,h=0;
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i];
    }
    cin>>m>>p1>>s1>>s2;
    for(int i=1;i<m;i++){
        l+=(m-i)*a[i];
    }
    for(int i=m+1;i<=n;i++){
        if(i!=p1){
            h+=(i-m)*a[i];
        }
        else{
            h+=(i-m)*(a[i]+s1);
        }
    }
    int s=max(l,h)-min(l,h);
    int a1=0;
    int cha,zu;
    if(l>h){
        cha=l-h;
        for(int i=m+1;i<=n;i++){
            a1=h+s2*(i-m);
            if(a1>=l){
                if(a1-l<cha){
                    cha=a1-l;
                    zu=i;
                }
            }
            else{
                if(l-a1<cha){
                    cha=l-a1;
                    zu=i;
                }
            }
        }
    }
    else if(h>l){
        cha=h-l;
        for(int i=1;i<m;i++){
            a1=l+s2*(m-i);
            if(a1>=h){
                if(a1-h<cha){
                    cha=a1-h;
                    zu=i;
                }
            }
            else{
                if(h-a1<cha){
                    cha=h-a1;
                    zu=i;
                }
            }
        }
    }
    cout<<zu;
    return 0;
}

 


0
已采纳
赵逸凡
赵逸凡
初级启示者
初级启示者

有点没看懂你的思路,你能说说嘛?

注意题目

游戏过程中,某一刻天降神兵,共有 s1位工兵突然出现在了 p1号兵营。

所以在第二次输入后面加上(记得加分号)

a[p1]+=s1

题目的意思并不是枚举每一处都要加s1,而是p1处!

等到你回复我再告诉你数据要全部改成long long

0
蔡辰夕
蔡辰夕
新手启示者
新手启示者

7654323455567223456789987654321111234567

我要回答