您的位置:首页 > 运维架构

topcpder SRM 664 div2 A,B,C BearCheats , BearPlays equalPiles , BearSorts (映射)

2015-08-02 10:21 393 查看
A题,熊孩子测视力,水题,题意就是判断一下两个数对应位不相同的数字有多少个。

#include<bits/stdc++.h>
using namespace std;
const int maxn = 550;
int a[maxn];
int t[maxn];
const double onecmp = log(0.5);
int times;
void merge_sort(int* a,int l,int r)
{
if(r-l<=1) return ;
int mid = (l+r)>>1;
merge_sort(a,l,mid);
merge_sort(a,mid,r);
int i = l, j = mid, k =l,p;

while(i < mid && j < r){
if(times++,a[i]>=a[j]) t[k] = a[j++];
else t[k] = a[i++];
k++;
}
if(i == mid) for(p = j; p < r; p++) t[k++] = a[p];
else for(p = i; p < mid; p++) t[k++] = a[p];
for(k = l;k < r; k++) a[k] = t[k];
}

class BearSortsDiv2{
public:
double getProbability(vector <int> seq){
for(int i = 0; i < seq.size(); i++){
a[seq[i]-1] = i;
}
times = 0;
merge_sort(a,0,seq.size());//log(ans);double ans =
return times*onecmp;
}
}Bear;
/*
int main()
{
freopen("in.txt","r",stdin);
vector<int> s;
int tmp;
while(~scanf("%d",&tmp))
s.push_back(tmp);
double ans = Bear.getProbability(s);
printf("%lf",ans);
return 0;
}
*/


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: