欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

ssl 2520 小球

发布时间:2024/3/24 编程问答 40 豆豆
生活随笔 收集整理的这篇文章主要介绍了 ssl 2520 小球 小编觉得挺不错的,现在分享给大家,帮大家做个参考.


分析

二重循环会TLE,所以就要思考如何优化。(研究了很久)
i&lt;ji&lt;ji<j时,(i=ji=ji=j不可能,i&gt;ji&gt;ji>j会重复)且颜色不同
那么ans+=j−ians+=j-ians+=ji
一重循环时j的增加数量取决于i的个数,而i前缀和就好了。
用两个数组a和b,a[j]表示Ci为j时的下标和,b[j]表示Ci为j时的个数。然后水水地到了第一。


代码

#include <cstdio> #include <cctype> using namespace std; long long ans,a[2],b[2],n; int in(){int ans=0; char c=getchar();while (!isdigit(c)) c=getchar();while (isdigit(c)) ans=ans*10+c-48,c=getchar();return ans; } int main(){n=in();for (int i=1;i<=n;i++){ bool x=in(); a[x]+=i; b[x]++;ans+=i*b[1-x]-a[1-x];}return !printf("%lld",ans); }

总结

以上是生活随笔为你收集整理的ssl 2520 小球的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。