ssl 2520 小球
生活随笔
收集整理的这篇文章主要介绍了
ssl 2520 小球
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
分析
二重循环会TLE,所以就要思考如何优化。(研究了很久)
当i<ji<ji<j时,(i=ji=ji=j不可能,i>ji>ji>j会重复)且颜色不同
那么ans+=j−ians+=j-ians+=j−i
一重循环时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 小球的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: mysql 南邮ctf_南邮ctf之we
- 下一篇: 轨迹聚类之分段聚类方法总结