jzoj P1843【汕头市选2014】小球
2017-06-05 14:50
288 查看
题解:
不难发现,
ans=∑abs((c[i]-c[j])*(i-j))
1<=i<=n 1<=j<=i
因为c[i]为0或1,所以abs(c[i]-c[j])只可能是0或者1,0对答案没有贡献所以我们不去考虑,这时如果当前c[i]是0时,前面对它有影响的c[j]只能是1,而c[i]=1时,对它有影响的c[j]只能是0,所以我们用2个数分别记录1~i-1的c[i]为0和为1的个数。
然后我们考虑怎么计算i-j,我们可以发现,如果
c[i]=0,设x为1~i-1中c[j]=1的数量,
然后c[i]-c[j]=1就有x个,因为c[i]-c[j]=1,所以我们不用考虑,只需要给答案累加1*(i-j),要计算i-j,因为有x个i-j,i相同,而j各不相同,我们就在c[j]=1时,把j给累加了,最后求x个不同的j的总和sum,然后我们有x个i去减,即x*i-sum。
var i,n,o:longint; x,y,x1,y1,ans:int64; begin assign(input,'ball.in'); reset(input); assign(output,'ball.out'); rewrite(output); readln(n); for i:=1 to n do begin read(o); if o=0 then begin ans:=ans+x*i-x1; inc(y); y1:=y1+i; end else begin ans:=ans+y*i-y1; inc(x); x1:=x1+i; end; end; writeln(ans); close(input); close(output); end.
相关文章推荐
- 【汕头市选2014】舞伴 jzoj 3632 状压dp
- 【jzoj3632】【汕头市选2014】【舞伴】【状态压缩动态规划】
- JZOJ 3631. 【汕头市选2014】三角(triangle)
- 【汕头市选2014】分叉 jzoj 3630 dfs
- 【jzoj3630】【汕头市选2014】【分叉】【树形动态规划】
- JZOJ 3632. 【汕头市选2014】舞伴
- JZOJ3632【汕头市选2014】舞伴(perm)
- JZOJ3630. 【汕头市选2014】分叉(fork)
- 【JZOJ3633】【汕头市选2014】数数(count) (栈)
- jzoj P1842【汕头市选2014】平均
- jzoj 3631 【汕头市选2014】三角(triangle)
- jzoj P1845【汕头市选2014】约数
- jzoj3630 【汕头市选2014】分叉(树上统计)
- JZOJ 1842——【汕头市选2014】平均
- [SDOI2014][JZOJ3624]数数
- JZOJ 3736. 【NOI2014模拟7.11】数学题(math)
- 最小割求方案 & jzoj5537 【2014东莞市选】分组
- 汕头市选 2014 舞伴___状压dp
- JZOJ3782. 【NOIP2014模拟8.17】组队
- JZOJsenior3950.【湖南省队集训2014】Clever Rabbit