Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
写了点总结,看看就好3378 crazy Thairs 这道题确实比较crazy。。。我是这么做的:离散化+4个树状数组+高精度。。。。跑了300+ms。 高精度是为了最后的统计,会超过64位表示范围,大概到10^22的样子。这个有模板,不说了。 要算5元组,先算2元组,3,4元组。2元组怎么来的?一元组过来的。一元组就是每个数本身。开一个数组(设为a[]吧),a[i]记录以第i个数为尾巴的x元组的个数。以i结尾的一元组有1个,所以刚开始a[]元素都为1.那么以第i个数结尾的2元组就有它前面比它小的元素的个数那么多个。所以更新数组a[],用树状数组统计,现在a[i]记录了以第i个数结尾的2元组个数。那么以第i个数结尾的3元组呢?当然是它前面以比它小的数结尾的2元组的个数。比如说1,2,4,6,3.第一次a[]={1,1,1,1,1}(一元),第2次a[]={0,1,2,3,2},第3次a[i]={0,0,1,3,1}(3元)。。。。。。每次统计都用树状数组,统计之前要把树状数组清0. 第5次每个a[i]存了5元组个数,全部加起来。高精度出解。 对了,还有离散化,因为元素取到10^9,一共50000个,离散化吧。 Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator