|
破百纪念!
|
|
233333
|
|
|
|
|
|
第五种转化是1到3,不是1和3,眼瞎了。。。
|
|
题目 1660 石子合并(加强版)
2014-07-09 08:01:03
|
|
数据输入为啥有一堆
题目 609 分裂
2014-07-08 21:33:23
|
|
纯手工模拟(虽然写的不好)(C++)
|
|
|
|
|
|
|
|
|
|
|
|
好累手啊- -
|
|
|
|
我的字符串读入
![]() ![]() ![]() ![]() ![]()
题目 453 字符串哈希
2014-07-08 09:22:48
|
|
题目 859 数列
2014-07-07 21:29:49
|
|
这题整了我一年!!!!!!
题目 482 NBA总冠军
2014-07-07 21:28:47
|
|
左偏树就是好写,Mato诚不我欺
|
|
var
a,l,r,c:array[0..50100]of int64; i,j,k,m,n:longint; ans:int64; function low(x:longint):longint; begin exit(x and (x xor(x-1))); end; procedure change(i,k:longint); begin while i<=35000 do begin c[i]:=c[i]+k; i:=i+low(i); end; end; function sum(i:longint):longint; var s:longint; begin s:=0; while i>0 do begin s:=s+c[i]; i:=i-low(i); end; exit(s); end; begin assign(input,'e:\1.txt');reset(input); //assign(output,'queueb.out');rewrite(output); read(n); for i:=1 to n do read(a[i]); for i:=1 to n do a[i]:=a[i]+1;//另外树状数组不能处理下标为1的情况,因为low函数一直返回0,会死循环,所以各加1 for i:=1 to n do begin change(a[i],1); l[i]:=sum(a[i]-1); end; fillchar(c,sizeof(c),0); for i:=n downto 1 do begin change(a[i],1); r[i]:=sum(a[i]-1); end; for i:=1 to n do ans:=ans+l[i]*r[i]; writeln(ans); close(output); end. |