檔案物件:兩個有位置資訊的檔案,比如polar bear 和blown bear的資料,例項如下:
資料:
chrb01 84 0.000000 -3.517875 -9.131150 -16.843100 -25.121834 -33.764550 -42.704869 -51.924288
chrb01 85 0.000000 -3.518447 -9.140762 -16.969798 -25.415831 -34.264817 -43.435084 -52.894483
chrb01 86 0.000000 -3.518653 -9.144235 -17.019029 -25.538664 -34.493599 -43.804095 -53.439474
chrb01 87 0.000000 -3.519693 -9.161941 -17.307288 -26.039671 -35.177550 -44.665470 -54.486166
chrb01 89 0.000000 -3.519315 -9.155483 -17.197048 -25.963084 -35.175892 -44.742408 -54.620859
chrb01 90 0.000000 -3.519878 -9.165148 -17.374057 -26.461440 -36.079650 -46.100003 -56.462372
chrb01 91 0.000000 -3.520705 -9.179459 -17.698464 -26.903189 -36.625949 -46.841096 -57.485213
chrb01 92 0.000000 -3.550725 -9.844786 -18.491352 -27.858983 -37.757775 -48.116431 -58.889869
chrb01 93 0.000000 -3.550441 -9.835777 -18.361010 -27.555334 -37.260418 -47.449280 -58.057703
chrb01 94 0.000000 -3.550945 -9.851868 -18.624373 -28.168413 -38.206045 -48.660048 -59.508482
chrb01 95 0.000000 -3.551117 -9.857413 -18.716636 -28.409118 -38.607796 -49.213285 -60.202906
chrb01 96 0.000000 -3.551682 -9.875809 -19.145320 -29.118007 -39.602210 -50.561270 -62.009704
chrb01 97 0.000000 -3.521048 -9.185479 -17.878596 -27.355403 -37.462142 -48.195552 -59.591943
chrb01 98 0.000000 -3.566567 -10.513228 -19.532988 -29.215875 -39.456631 -50.296648 -61.825081
chrb01 99 0.000000 -3.566760 -10.525015 -19.708561 -29.545284 -39.886885 -50.744183 -62.171301
chrb01 100 0.000000 -3.567180 -10.550923 -20.114000 -30.311736 -41.006055 -52.225258 -64.083858
chrb01 101 0.000000 -3.578718 -11.781507 -21.478019 -32.040562 -43.226269 -55.017674 -67.515234
chrb01 102 0.000000 -3.577940 -11.630547 -20.772247 -30.741033 -41.316284 -52.423883 -64.051384
chrb01 103 0.000000 -3.578030 -11.646770 -20.785916 -30.745039 -41.308127 -52.398213 -63.997668
**:
輸出:#!/usr/bin/perl -w
use strict;
my $pb_file = shift;
my $bb_file = shift;
my $n1 = 18;
my $n2 = 10;
open (aa, "gzip -dc $pb_file|") or die "$!";
open (bb, "gzip -dc $bb_file|") or die "$!";
open (cc, ">abfst.txt") or die "$!";
my $pb;
my $bb = ;
while ($pb = )else
}my $maxpos1 = 2;
my $i;
for( $i=3; $i<(2*$n1+3); $i++)
my $p1 = ($maxpos1-2) / (2*$n1);
my $maxpos2 = 2;
my $j;
for( $j=3; $j<(2*$n2+3); $j++)
my $p2 = ($maxpos2-2) / (2*$n2);
my $p12_2 = ($p1-$p2)*($p1-$p2);
my $alpha1 = 2 * $p1 * (1 - $p1);
my $alpha2 = 2 * $p2 * (1 - $p2);
my $a = $p12_2 - ($n1+$n2)*($n1*$alpha1 + $n2*$alpha2) / 4*$n1*$n2*($n1+$n2-1);
my $b = $p12_2 + (4*$n1*$n2-$n1-$n2)*($n1*$alpha1 + $n2*$alpha2) / 4*$n1*$n2*($n1+$n2-1);
my $fst;
if ($a == 0)else
print cc "$pb[1]\t$a\t$b\t$fst\t\n";
# print cc "$pb[0]\t$pb[1]\t$a\t$b\t$fst\t\n";
}
101 0 0 0
102 0 0 0
103 0 0 0
104 0 0 0
105 0 0 0
106 0 0 0
107 0 0 0
108 0 0 0
109 0 0 0
110 -274049.987654321 6772950.01234568 -0.0421686726389265
111 0 0 0
112 0 0 0
113 0 0 0
114 0 0 0
115 0 0 0
116 0 0 0
117 0 0 0
118 0 0 0
119 0 0 0
120 0 0 0
121 -32318.9975 798741.0025 -0.0421686711617838
122 0 0 0
結果分析:
待續...........
ST求LCA的模板
預處理的時間複雜度是 o nlog2n 查詢時間是 o 1 include include include using namespace std const int maxn 10010 int rmq 2 maxn rmq陣列,就是尤拉序列對應的深度序列 struct st for int j ...
模板方法模式 求程式執行時間
需求 獲取一段程式執行的時間。原理 獲取程式程式開始和結束的時間,並相減即可 形式 開始時間 程式執行時間 結束時間 相減當 完成優化後就可以解決這類問題 這種方式叫做模板方法設計模式 什麼是模板方法呢?在定義功能時,功能的一部分是確定的,但是有一部分的功能是不確定的部分 那麼這時就將不確定的部分暴...
倍增求lca(模板)
定義 lca,最近公共祖先,是指一棵樹上兩個節點的深度最大的公共祖先。也可以理解為兩個節點之間的路徑上深度最小的點。我們這裡用了倍增的方法求了lca。我們的基本的思路就是,用dfs遍歷求出所有點的深度。f i j 陣列用來求的是距離節點i,距離2 j的祖先。可以知道,f i 0 就是它的直接父親。然...