文章列表
题目链接:http://acm.hust.edu.cn:8080/judge/contest/view.action?cid=10574#problem/A
首先介绍一下相关知识:
tan(a+b)=(tan(a)+tan(b))/(1-tan(a)*tan(b));
反正切函数一般用来求PI:
PI=4×arctan(1)=4*(1-1/2-1/3-1/5-1/7。。。。);
此方法消费太多时间。。。
我们可以用另外一种方法来求:
先说明关于arctan的一些运算:
tan(arctana)=a
arctan(-x)=-arctan ...
const int maxn = 100020;
int Left[20][maxn], sorted[maxn], tree[20][maxn];
//left[i][j]表示第i层前j个数中有几个被分到左子树中
//sorted表示排好序的
//tree[i][j]记录第i层第j个元素
void build_tree( int L, int R, int v )
{
int i;
int mid = ( L + R ) /2;
if( L == R ) return;
int m = sorted[mid];
...