SSL2520 2014年汕头市选拔赛普级组 小球(math)
2017-11-02 20:29
281 查看
2014年汕头市选拔赛普级组 小球
Description分析:考虑第i个小球和它前面的小球对答案的贡献,我们知道Ci-Cj不是1就是0,当第Ci=0时前面有影响的小球Cj=1,当Ci=1时相反,所以只需要记录一下前i个小球有多少个为1,多少为0。那么i*j怎么算呢,显然i是不变的,那么我们只需要用数组记录前面有影响的小球位置和即可,ans=x*i-sum[i-1],x为前面有影响的小球个数。
代码
#include <cstdio> #define maxn 200000 #define ll long long using namespace std; ll sum1[maxn],sum0[maxn],a[maxn],b[maxn],x[maxn]; int n; int main() { scanf("%d",&n); for (int i=1;i<=n;i++) { scanf("%d",&x[i]); if (x[i]==0) { a[i]=a[i-1]+1; b[i]=b[i-1]; sum0[i]=sum0[i-1]+i; sum1[i]=sum1[i-1]; } else { a[i]=a[i-1]; b[i]=b[i-1]+1; sum1[i]=sum1[i-1]+i; sum0[i]=sum0[i-1]; } } long long ans=0; for (int i=2;i<=n;i++) if (x[i]==0) ans+=b[i-1]*i-sum1[i-1]; else ans+=a[i-1]*i-sum0[i-1]; printf("%lld",ans); }
相关文章推荐
- SSL2522 2014年汕头市选拔赛普级组 约数(线性筛素数)
- SSL 2521 2014年汕头市选拔赛普级组 数数
- 2014年汕头市选拔赛普级组 数数
- CSU-ACM2014年校队选拔赛指导赛解题报告
- SSL P2515 2014年中山市选拔赛 投票
- 2014年中山市选拔赛 投票
- 2014年中山市选拔赛 dwarf tower
- jzoj P1843【汕头市选2014】小球
- SSL2783 2017年10月23日提高组T1 摆书(math)
- SSL2837 2017年11月6日提高组T1 互质(math)
- SSL2694 2017年8月15日提高组T1 字符串(math,组合数取模)
- SSL2681 2017年8月11日提高组T3 难题(math)
- SSL2684 2017年8月12日提高组T3 YMW的三角形(math)
- SSL2810 2017年10月30日提高组T2 数论(math)
- SSL1475 纪念邮票(math)
- SSL2774 2017年10月19日提高组 青蛙(math)
- 2515 2014年中山市选拔赛 投票
- 2014年广州市信息学尖子选拔赛 第一题
- 2002年分区联赛普级组之二_选数_ssl1020_dfs
- 2516 2014年中山市选拔赛 dwarf tower