96分求助

P5016 [NOIP2018 普及组] 龙虎斗

附:[翻车链接](https://www.luogu.org/record/25168804)
by 天野_阳菜 @ 2019-10-13 23:28:26


变量名太长懒得看了。。
by 文·和 @ 2019-10-13 23:32:31


@[文·和](/space/show?uid=127520) !
by 天野_阳菜 @ 2019-10-13 23:32:52


有那个比这个长。。。 https://www.luogu.org/blog/wzp-blog/solution-cf464d
by bellmanford @ 2019-10-13 23:38:27


。。。 ```cpp #include<iostream> #include<cstdlib> #include<cstdio> #define N 100001 #define INF 0x6ffffff using namespace std; long long n,m,p1,s1,p2,s2; long long Num[N],Gth[N],Dtc[N]; //Num:军营中士兵数 Gth:该军营的气势 Dtc:龙虎总气势之差 long long GthDra,GthTig; //龙、虎总气势 long long Abs(long long num) //num的绝对值 { return num>0?num:(-num); } long long CAbs(long long a,long long b) //a b差的绝对值 { return (a-b)>0?(a-b):(b-a); } int main() { scanf("%lld",&n); for(long long i=1;i<=n;i++) scanf("%lld",&Num[i]); scanf("%lld%lld%lld%lld",&m,&p1,&s1,&s2); Num[p1]+=s1; //天降奇兵 for(long long i=1;i<=n;i++) { Gth[i]=Num[i]*CAbs(m,i); //每个军营的气势 if(CAbs(i,1)<CAbs(m,1)) GthDra+=Gth[i]; if(CAbs(i,n)<CAbs(m,n)) GthTig+=Gth[i]; //计算总气势 } long long GthDra_before=GthDra, GthTig_before=GthTig; //改动之前的龙、虎总气势 for(p2=1;p2<=n;p2++) { GthDra=GthDra_before; GthTig=GthTig_before; //初始化 if(p2<m) GthDra+=CAbs(p2,m)*s2; if(p2>m) GthTig+=CAbs(p2,m)*s2; Dtc[p2]=Abs(GthDra-GthTig); //计算差值 } long long minDtc=INF,p2_DTCMIN; //最小的差值、最小差值对应的p2 for(p2=1;p2<=n;p2++) { if(Dtc[p2]<minDtc) { minDtc=Dtc[p2]; p2_DTCMIN=p2; } } printf("%lld",p2_DTCMIN); return 0; } ```
by 天野_阳菜 @ 2019-10-13 23:42:15


@[文·和](/space/show?uid=127520) 求来帮帮看看吧 orz%%%
by 天野_阳菜 @ 2019-10-13 23:47:16


@[bellmanford](/space/show?uid=116015) orz
by 天野_阳菜 @ 2019-10-13 23:47:27


有没有考虑过刚好落在 $M$ 点上的情况?
by 狸狸养的敏敏 @ 2019-10-14 07:33:18


@[狸狸养的敏敏](/user/58399) 才看到233
by 天野_阳菜 @ 2019-11-07 00:27:04


|