Capacitated Facility Location Problem

Problem Description

Suppose there are n facilities and m customers. We wish to choose:

(1) which of the n facilities to open

(2) the assignment of customers to facilities

(3) The objective is to minimize the sum of the opening cost and the assignment cost.

(4) The total demand assigned to a facility must not exceed its capacity.

遗传算法(genetic algorithm)

遗传算法是受遗传学中自然选择和遗传机制启发发展起来的一种搜索算法。基本思想是使用模拟生物和人类进化的方法求解复杂的优化问题,因而也称作为模拟进化优化算法。模拟进化优化算法在计算原理上是自适应的,结构上是并行的,而且模仿了人的智能处理特征,因而称为人工智能的一个重要研究领域。

基本定义

个体(individual): 个体是一个数据结构,用来描述基本的遗传结构。例如,用0、1组成的串可以表示个体。这样的串叫染色体,其中每个0或1叫等位基因。这样的一个串于某个个体相关联,则称为该个体的基因型。

适应性(fitness): 每个个体有一对应的适应值。再优化问题中,适应值来自于一个估计函数。

群体(population): 由个体组成的集合。

遗传操作: 作用于群体而产生新的群体。标准的代遗传操作一般包括选择(selection)、复制(reproduction)、交叉(crossover或重组recombination)及变异(mutation)3中基本形式。

基本流程

以此题目为例,流程图如下:

在这里插入图片描述

初始化群体(第一代)

每个个体中每个基因随机生成。(customer随机选择一个facility)

void firstGeneration() {
    int j;
    for(int k=0; k<individuals; k++) {
        vector<customer>customersTemp(customers);
        vector<facility>facilitiesTemp(facilities);
        // 生成一个个体
        for(int i=0; i<m; i++) {
            j = rand() % n;
            while(facilitiesTemp[j].getRemain() - customersTemp[i].getDemand() < 0) {
                j = (j+1) % n;
            }
            facilitiesTemp[j].setRemain(facilitiesTemp[j].getRemain() - customersTemp[i].getDemand());
            customersTemp[i].setFacilityID(j);
        }
        customersGeneration.push_back(customersTemp);
        facilitiesGeneration.push_back(facilitiesTemp);
    }
}
适应值函数(evaluate)

在此问题中,适应值即为 the sum of the opening cost and the assignment cost ,所以在适应值函数中,我们根据facility的开启状态(我使用facility剩余容量与初始容量比较的结果)以及分配(assignment)分配情况来计算代价值(cost)。其中cost越小,适应值越大(对于此题目我们可以取倒数)。

double evaluate(vector<customer>&customers, vector<facility>&facilities) {
    // 计算facility opencost
    double cost = 0;
    for(int j=0; j<n; j++) {
        if(facilities[j].getRemain() < facilities[j].getCapacity()) {
            cost += facilities[j].getOpencost();
        }
    }
    // 计算assignment
    for(int i=0; i<m; i++) {
        cost += assignment[customers[i].getFacilityID()][i];
    }
    return cost;
}
选择函数(selection)

选择即从当前群体中选出个体以生成交配池(mating pool)的过程。所选出的这些个体具有良好的特征,一边选出优良的后代。

  • 基于适应值比例的选择

    • 繁殖池选择
    • 轮盘赌选择
    • Boltzmann选择

    其中,轮盘赌选择使用较多,主要介绍一下轮盘赌选择:该策略是先将个体的相对适应值 f i ∑ f i \frac{f_i}{\sum{f_i}} fifi记为 p i p_i pi,其中 f i f_i fi是群体中的第i成员的适应值;然后根据选择概率{ p i p_i pi,i=1,2,3……,N},按下图所示将圆盘分为N份,其中第i扇形的中心较为 2 π p i 2\pi p_i 2πpi
    在这里插入图片描述

    在进行选择是,可以假象转动如上图所示的圆盘,若某参照点落入到第i个扇形内,则选择个体i。这种选择策略可以如下实现:现生成一个[0,1]内的随机数,若 p 1 + p 2 + … … + p i − 1 &lt; r ≤ p 1 + p 2 + … … + p i p_1+p_2+……+p_{i-1}&lt;r≤p_1+p_2+……+p_i p1+p2++pi1<rp1+p2++pi ,则选择个体i。显然,小扇区的面积越大,参照点落入其中的概率也越大,即个体的适应值越大,它被选择到的机会也就越多,其基因被遗传到下一代的可能性也越大。

  • 基于排名的选择(此部分内容可以自行百度)

    • 线性排名选择
    • 非线性排名选择
  • 基于局部竞争机制的选择

    • 锦标赛选择(tournament selection)。选择时,先随机地在群体中选择k个个体(放回或者不放回)进行比较,适应值最好的个体被选择作为生成下一代的父体,反复执行该过程,知道下一代的个体数量达到预定的群体规模。参数k称为竞赛规模,根据大量的实验结果,一般取k=2
    • ( μ , λ ) (\mu, \lambda) (μ,λ) μ + λ \mu+\lambda μ+λ 选择。 ( μ , λ ) (\mu, \lambda) (μ,λ) 是先从规模为 μ \mu μ种群中随机选取个体通过交叉和变异生成 λ ( ≥ μ ) \lambda(≥\mu) λ(μ)个后代,然后在从这些后代中选取 μ \mu μ个最优的后代作为新一带种群。 μ + λ \mu+\lambda μ+λ选择则是从这些后代与其父体共 μ + λ \mu+\lambda μ+λ个后代中选取 μ \mu μ个最后的后代。

在此问题GA算法中,我使用锦标赛选择机制进行选择,主要实现如下:

// Tournament Selection 
void selection(vector<vector<customer>>&customersGeneration2, vector<vector<facility>>&facilitiesGeneration2) {
    customersGeneration2.clear();
    facilitiesGeneration2.clear();
    double minCost = INT_MAX * 1.0;
    for(int j=0; j<individuals; j++) {
        int randnum[selections] = {0};
        minCost = INT_MAX * 1.0;
        int minIndividual;
        int individualCost;
        for(int i=0;i<selections;i++) {
            randnum[i] = rand() % individuals;
            individualCost = evaluate(customersGeneration[randnum[i]], facilitiesGeneration[randnum[i]]);
            if(minCost > individualCost) {
                minCost = individualCost;
                minIndividual = randnum[i];
            }
        }
        customersGeneration2.push_back(customersGeneration[minIndividual]);
        facilitiesGeneration2.push_back(facilitiesGeneration[minIndividual]);
    }
}
交叉操作(crossover)

交叉操作是将两个个体的遗传物质交换产生新的个体,它可以把两个个体的优良“格式”传递到下一代的某个个体中,使其具有优于前驱地性能。如果交叉后得到地个体性能不加,则可以在后面的replace操作中将其淘汰。交叉是遗传算法中获取新优个体的最重要的手段,交叉的具体步骤如下:

(1)从交配池中随机取处要交配的一对个体

(2)根据位串长度L,对要交配地一对个体,随机选取[1,L-1]中一个或多个的整数k作为交叉点。

(3)根据交叉概率 p c ( 0 &lt; p c ≤ 1 ) p_c(0&lt;p_c≤1) pc(0<pc1)实施交叉操作,配对的个体再交差点处,相互交换各自的部分内容,从而形成一对新的个体。

  • 单点交叉(one-point crossover)。对于从交配池中随机选择的两个串 s 1 = a 1 a 2 … … a L s_1=a_1a_2……a_L s1=a1a2aL s 2 = b 1 b 2 … … b L s_2=b_1b_2……b_L s2=b1b2bL,随机选择一个交叉位 x ∈ [ 1 , 2 … … L − 1 ] x∈[1,2……L-1] x[1,2L1],然后对两个位串中该位置预测部份的染色体位串进行交换,产生的子位串个体为: s 1 = a 1 a 2 … a x b x + 1 … b L s_1=a_1a_2…a_xb_{x+1}…b_L s1=a1a2axbx+1bL s 1 = b 1 b 2 … b x a x + 1 … a L s_1=b_1b_2…b_xa_{x+1}…a_L s1=b1b2bxax+1aL。单点交叉信息量比较小,交叉点位置选择会带来较大偏差,单点交叉不利于长距模式的保留和冲去,而且位于末尾的基因总是被交换,而这些基因可能是很重要的(这就是尾点效应,end-point effect)。
  • 多点交叉(multipoint crossover)。对于选定的两个个体位串,随机选择多个交叉点,构成交叉点集合: x 1 , x 2 , … … , x k ∈ [ 1 , 2 , … … , L − 1 ] x_1,x_2,……,x_k∈[1,2,……,L-1] x1,x2,,xk[1,2,,L1]。然后对每个交叉点,执行单点交叉运算,最后得到两个子位串个体。
  • 均匀交叉(uniform crossover)。将位串上的每一位基因按照相同的概率随机进行均匀交叉。

此题目中,交叉算法如下,根据交叉概率,选择两个个体,将两者[l,r-1]区间内的基因进行交换:

void crossover(vector<vector<customer>>&customersGeneration2, vector<vector<facility>>&facilitiesGeneration2) {
    int individual1, individual2, l, r, fid1, fid2;
    for(int i=0; i<individuals * (individuals-1); i++) {
        if(rand() % (N + 1) * 1.0 /(N + 1) < crossovers) {
            individual1 = rand() % individuals;
            individual2 = rand() % individuals;
            l = rand() % m;
            r = rand() % m;
            for(int j=l; j<r; j++) {
                fid1 = customersGeneration2[individual1][j].getFacilityID();
                fid2 = customersGeneration2[individual2][j].getFacilityID();
                if(facilitiesGeneration2[individual1][fid2].getRemain() - customersGeneration2[individual1][j].getDemand() > 0 && 
                    facilitiesGeneration2[individual2][fid1].getRemain() - customersGeneration2[individual2][j].getDemand() > 0) {
                    
                    facilitiesGeneration2[individual1][fid1].setRemain(facilitiesGeneration2[individual1][fid1].getRemain() + customersGeneration2[individual1][j].getDemand());
                    facilitiesGeneration2[individual1][fid2].setRemain(facilitiesGeneration2[individual1][fid2].getRemain() - customersGeneration2[individual1][j].getDemand());
                    
                    facilitiesGeneration2[individual2][fid1].setRemain(facilitiesGeneration2[individual2][fid1].getRemain() - customersGeneration2[individual2][j].getDemand());
                    facilitiesGeneration2[individual2][fid2].setRemain(facilitiesGeneration2[individual2][fid2].getRemain() + customersGeneration2[individual2][j].getDemand());
                    customersGeneration2[individual1][j].setFacilityID(fid2);
                    customersGeneration2[individual2][j].setFacilityID(fid1);
                }
            }
        }
    }
}
变异操作(mutation)

变异是在个体中改变遗传物质,可以使运算过程中丢弃的个体的某些重要特性得以恢复。变异与交叉、选择结合在一起,保证了遗传算法的有下行,是遗传算法具有局部的随机搜索能力;同时使得遗传算法保持种群的多样性,以防止非成熟收敛。

此题目中,变异算法将某个个体中的某个基因进行变异(既让此customer随机选择另外一个可行的facility):

void mutation(vector<vector<customer>>&customersGeneration2, vector<vector<facility>>&facilitiesGeneration2) {
    int cid, fid, preFid;
    for(int i=1; i<individuals; i++) {
        if(rand()%(N+1)*1.0/(N+1) < mutations) {
            cid = rand() % m;
            fid = rand() % n;
            preFid = customersGeneration2[i][cid].getFacilityID();
            while(facilitiesGeneration2[i][fid].getRemain() - customersGeneration2[i][cid].getDemand() < 0) {
                fid = (fid+1)%n;
            }
            facilitiesGeneration2[i][fid].setRemain(facilitiesGeneration2[i][fid].getRemain() - customersGeneration2[i][cid].getDemand());
            facilitiesGeneration2[i][preFid].setRemain(facilitiesGeneration2[i][preFid].getRemain() + customersGeneration2[i][cid].getDemand());
            customersGeneration2[i][cid].setFacilityID(fid);
        }
    }
}
替换操作(replace)

将生成的子代与父代一起进行选择,挑选出种群大小数量的个体作为新的一代,此步骤中用到适应值:

void replace(vector<vector<customer>>&customersGeneration2, vector<vector<facility>>&facilitiesGeneration2) {
    customersGeneration2.insert(customersGeneration2.end(), customersGeneration.begin(), customersGeneration.end());
    facilitiesGeneration2.insert(facilitiesGeneration2.end(), facilitiesGeneration.begin(), facilitiesGeneration.end());
    customersGeneration.clear();
    facilitiesGeneration.clear();
    int count;
    for(int i=0; i<individuals*2; i++) {
        count = 0;
        for(int j=0; j<individuals*2; j++) {
            if(evaluate(customersGeneration2[i], facilitiesGeneration2[i]) <= evaluate(customersGeneration2[j], facilitiesGeneration2[j])) {
                count++;
                if(count >= individuals) {
                    customersGeneration.push_back(customersGeneration2[i]);
                    facilitiesGeneration.push_back(facilitiesGeneration2[i]);
                    break;
                }
            }
        }
    }
}
控制参数的选取
  • 位串长度:m(customer的数量)

  • 繁衍代数:若代数过小,使得繁衍代数过少,获取不到优异的个体,还未收敛就已经提前结束;若代数过大,则可能在收敛后进行多余的计算。此题目中,我先则繁衍代数为1000。

  • 种群规模:若规模过小,则可能获取不到优异的个体,造成成熟前收敛;若规模过大,增加了适应性评价的计算量,从而使收敛速度降低。一般选择20~200,此题目中,我选择50。

  • 交叉概率 p c p_c pc:交叉概率控制交叉算子的应用频率,在每一代新的群体中,需要对 p c ∗ n p_c*n pcn个个体的染色体结构进行交叉操作。交叉概率越高,群体中新结构引入越快,以获得的优良基因结构的丢失速度也相应升高。而交叉概率太低则可能导致搜索阻滞。一般取0.6~1.0,此题目中,我选择0.98。

  • 变异概率 p m p_m pm:变异概率是保持多样性的有效手段,交叉结束后,交配池中的全部个体位串上的每位基因按变异概率 p m p_m pm随机改变,因此每代中大约发生 p m ∗ n ∗ L p_m*n*L pmnL次变异。变异概率过小,可能是某些基因过早丢失的信息无法恢复,变异概率过高,则遗传搜索变成了随即搜索,一般取0.005~0.01,此题目中,我选择 p m ∗ n = 0.2 p_m*n = 0.2 pmn=0.2,即 p m = 0.004 p_m=0.004 pm=0.004

算法执行结果

InstanceTimeCostFacility Open StatusCustomer Status
17876ms91221 1 1 1 1 1 1 0 1 10 8 1 6 3 8 2 4 4 1 9 8 3 2 8 3 2 0 9 4 3 4 6 4 2 5 1 5 0 5 2 6 0 3 9 4 4 3 3 4 1 8 1 5 4 0 4 0 4 0
27750ms80381 1 1 1 1 1 1 0 1 18 2 1 6 3 8 2 4 4 1 9 8 3 2 0 3 4 0 9 4 3 4 6 4 2 5 1 5 0 5 2 6 0 3 9 4 4 3 0 2 1 8 1 5 4 0 4 0 4 0
38082ms98711 1 1 1 1 1 0 1 1 18 2 1 5 3 8 2 4 4 1 9 0 3 2 8 3 4 0 9 7 3 4 9 4 2 5 1 5 0 5 2 5 0 3 9 4 4 3 0 4 1 8 1 5 7 0 4 0 4 0
48181ms119221 1 1 1 1 0 1 1 1 18 2 1 6 3 8 2 4 4 1 9 0 3 2 8 3 4 0 9 7 3 4 6 4 2 6 0 1 0 1 2 6 0 2 9 4 4 3 0 4 3 8 1 6 7 0 4 0 4 3
57886ms94061 1 1 1 1 1 1 1 1 18 8 1 6 3 8 2 4 4 1 9 8 3 2 8 3 4 0 9 7 3 8 6 4 2 5 1 5 0 5 2 6 0 3 9 4 7 3 0 4 1 8 1 5 7 0 2 0 4 1
67901ms80851 1 1 1 1 1 1 1 1 18 8 1 6 3 8 2 4 2 1 9 8 3 4 8 3 2 0 9 7 3 7 6 4 2 5 1 5 8 5 2 6 0 3 9 4 4 3 0 4 1 8 1 5 7 0 2 0 7 0
78036ms100331 1 1 1 1 1 1 1 1 18 8 1 6 3 8 2 9 4 1 9 8 3 2 8 3 2 0 9 7 3 7 6 4 2 5 1 5 0 5 2 6 0 3 9 4 4 3 8 4 1 8 1 5 7 0 4 0 7 0
87503ms120961 1 1 1 1 1 1 1 1 18 8 1 6 3 8 2 4 4 1 9 0 3 2 8 3 2 0 9 7 3 8 6 4 2 5 1 5 0 5 2 6 0 3 9 4 4 3 0 2 1 8 1 5 7 8 4 3 4 0
98594ms88231 1 1 1 1 1 1 0 1 18 8 1 6 3 8 2 4 4 1 9 8 3 2 8 3 4 0 9 4 3 8 6 4 2 5 1 5 0 5 2 6 0 3 9 4 4 3 0 4 1 8 1 5 4 0 4 0 2 0
109250ms76481 1 1 1 1 0 1 1 1 18 8 1 6 3 8 2 4 4 1 9 8 3 2 8 3 4 0 9 7 3 8 6 4 2 6 1 1 0 1 2 6 0 3 9 4 4 3 0 4 1 8 1 6 7 0 4 0 4 0
118607ms97261 1 1 1 1 1 1 1 1 18 8 1 6 3 8 2 4 4 1 9 8 3 2 8 3 4 0 9 7 3 8 6 4 2 5 1 5 0 5 2 6 0 3 9 4 4 3 0 4 1 8 1 5 7 0 4 0 4 0
128947ms108931 1 1 1 1 0 1 0 1 18 8 1 6 3 8 2 4 4 1 9 8 3 2 8 3 4 0 9 4 3 8 6 4 2 6 1 1 0 1 2 6 0 3 9 4 4 3 0 2 1 8 1 6 4 0 4 0 4 0
1312246ms107991 1 0 1 1 0 0 1 0 0 0 0 1 1 1 1 1 0 0 116 12 7 16 1 12 3 13 14 4 15 4 1 7 13 12 15 7 4 3 12 15 15 19 14 4 16 3 1 4 13 7 13 16 3 7 3 19 19 13 14 0 0 0 3 13 14 7 19 3
1411102ms76340 1 0 1 1 1 1 0 0 0 1 0 0 1 1 1 1 1 0 116 1 10 10 1 15 17 13 14 17 15 4 1 6 13 3 15 10 4 6 14 15 15 19 6 17 16 17 1 17 13 15 13 16 3 10 3 1 19 13 6 16 5 16 3 5 14 10 19 6
1510826ms100740 1 0 0 1 0 1 0 0 0 1 1 1 1 0 1 1 1 1 016 12 10 10 1 18 17 13 12 17 15 4 1 6 13 11 15 10 4 6 12 15 15 13 6 17 16 17 1 17 13 15 18 16 1 10 11 1 1 13 6 16 15 16 11 13 12 10 4 6
1610469ms133951 1 0 1 0 1 0 1 0 1 0 1 1 0 0 1 0 0 1 10 12 7 7 1 18 3 18 12 3 15 19 1 9 18 3 15 7 1 9 12 15 15 19 9 1 0 3 1 3 18 7 18 0 3 7 11 19 19 18 9 0 5 0 11 5 12 7 19 9
1710425ms89021 1 1 1 0 0 1 0 0 0 1 0 0 1 1 1 0 1 0 00 1 10 10 1 15 17 13 14 17 15 1 1 6 13 3 15 10 17 6 14 15 15 2 6 17 0 17 1 17 13 15 2 0 3 10 3 1 1 13 6 0 0 15 3 13 14 10 2 6
1810209ms80481 1 0 0 0 1 1 1 0 0 0 1 1 1 1 0 0 1 0 10 12 7 7 1 12 17 13 14 17 7 19 1 6 13 11 5 7 17 6 12 5 7 19 6 17 0 17 1 17 13 7 13 0 1 7 11 19 19 13 6 0 5 0 11 5 14 6 19 6
1910364ms105721 1 0 1 0 0 1 1 1 0 0 0 1 1 0 0 1 0 0 116 12 7 7 1 12 3 13 12 3 7 19 1 6 13 3 7 6 1 6 12 7 7 19 6 1 16 3 1 3 13 7 13 16 3 6 3 19 19 13 8 0 0 0 8 13 12 6 19 8
2010610ms131161 1 0 0 1 1 1 1 1 0 0 0 1 0 1 0 0 1 1 00 12 7 7 1 18 17 18 14 17 7 4 1 6 18 12 5 7 4 6 12 5 7 18 6 17 0 17 1 17 18 7 18 0 1 6 8 1 1 18 14 0 5 0 8 5 14 6 4 8
2111307ms88121 1 0 1 0 0 0 0 0 1 1 0 1 1 1 1 0 0 0 10 12 10 10 1 12 3 13 14 3 15 19 1 10 13 3 15 10 1 9 12 15 15 19 9 1 0 3 1 3 13 15 13 0 3 10 3 19 19 13 10 0 0 0 3 13 14 10 19 9
2210788ms79210 1 0 0 1 1 1 0 0 1 1 1 1 1 1 1 1 1 0 116 12 10 10 1 12 17 13 14 17 15 4 1 6 13 11 15 10 4 9 12 15 15 19 6 17 16 17 1 17 13 15 13 16 1 10 11 19 19 13 6 16 5 16 11 5 14 10 19 9
2311179ms103231 1 1 1 0 1 1 1 0 0 1 0 1 0 0 1 0 1 0 00 12 10 10 1 12 17 2 7 17 15 1 1 6 2 3 15 10 17 6 12 15 15 2 6 17 0 17 1 17 2 7 2 0 3 10 3 1 1 2 6 0 5 0 3 5 12 10 2 6
2410457ms124250 0 0 1 0 1 1 1 0 0 1 1 0 0 0 1 0 0 1 17 3 10 10 19 18 3 18 3 11 15 19 19 6 18 3 15 10 19 6 18 15 15 19 6 3 7 3 3 3 18 7 18 7 3 10 11 19 19 18 6 5 5 7 11 5 7 10 19 6
2529770ms195821 0 1 0 1 1 0 1 1 1 0 1 0 1 1 1 0 1 0 1 1 1 0 0 1 1 0 1 1 120 11 20 0 13 5 2 9 14 0 9 28 19 20 17 14 14 0 29 11 28 4 24 2 9 8 19 24 5 24 21 25 20 25 20 20 24 15 0 14 0 14 15 8 24 14 0 13 27 8 29 28 7 11 13 13 17 27 11 17 17 24 20 27 11 11 9 0 5 25 13 13 0 7 15 8 24 13 14 5 20 0 20 17 17 0 17 7 20 29 0 9 17 0 11 5 14 19 21 13 8 19 14 25 19 29 4 0 14 28 17 14 2 0 5 27 24 24 0 11 5 8 25 13 8 0 25 9 7 25 0 0 24 5 2 8 7 5 13 17 0 28 20 14 8 27 25 5 0 5
2629936ms168271 0 1 0 0 1 1 1 1 1 0 1 0 1 1 0 0 1 0 1 1 0 0 0 1 1 0 1 1 16 11 20 17 20 25 2 25 14 17 9 20 28 20 19 14 14 0 5 11 14 0 9 17 24 8 2 24 25 5 29 5 6 11 20 20 24 24 7 2 0 14 9 28 24 17 27 13 27 28 29 19 2 0 13 13 2 29 0 14 0 24 20 27 11 11 5 0 24 24 20 6 17 17 5 20 9 8 14 24 20 7 13 0 19 11 2 7 20 5 2 24 7 25 0 9 2 2 25 8 8 7 14 25 19 29 0 0 14 14 14 2 17 11 5 11 24 9 24 24 0 8 25 13 28 7 5 24 17 29 0 11 9 5 8 8 17 5 13 0 0 28 13 14 8 25 25 5 2 24
2730364ms196851 0 1 0 0 1 0 1 1 1 0 1 0 1 1 1 0 1 0 1 1 0 0 0 1 1 0 1 1 120 11 20 14 20 5 7 9 14 17 9 8 8 20 17 14 17 17 25 11 2 7 9 19 5 8 2 5 24 9 5 25 13 25 20 20 24 15 29 0 0 14 15 14 24 17 11 13 27 8 29 14 2 5 13 13 2 27 0 17 0 5 20 11 11 25 24 11 5 9 20 20 11 17 24 8 15 20 2 24 20 7 20 11 19 17 0 7 20 29 14 24 0 11 7 24 14 19 29 20 8 7 14 25 2 25 7 27 14 8 14 14 2 7 11 27 24 24 24 24 5 8 5 13 28 0 5 24 7 25 0 11 5 5 28 14 11 25 20 17 0 28 13 14 20 25 0 11 2 5
2829882ms233611 0 1 0 1 1 0 1 1 0 0 1 0 1 1 1 0 1 1 1 1 0 0 0 1 1 0 0 0 120 7 20 7 13 11 2 24 20 17 24 8 20 20 19 8 0 17 5 25 2 0 5 19 24 20 2 5 5 15 5 11 18 11 20 20 5 5 0 14 11 14 15 8 5 14 0 13 25 8 29 14 14 5 13 20 2 25 4 14 0 5 20 11 11 11 24 0 5 29 20 8 5 0 15 8 24 14 14 24 13 7 20 0 19 17 17 4 20 29 0 24 2 0 17 5 2 2 7 13 20 17 14 25 2 25 8 25 20 8 14 14 2 0 11 11 5 24 0 11 5 8 25 13 18 0 5 29 11 29 0 7 24 5 8 17 17 11 20 17 11 8 20 2 8 25 25 5 0 5
2929392ms202351 0 1 0 0 1 1 1 1 1 0 1 0 1 1 0 0 1 0 1 1 1 1 0 1 1 0 0 1 120 11 20 2 20 11 2 24 8 0 9 8 28 8 7 8 14 17 29 0 14 0 5 17 22 8 19 24 5 22 5 25 6 11 20 8 24 24 0 14 7 14 9 20 24 14 11 13 29 28 29 14 14 5 6 20 17 11 0 14 17 5 14 11 11 11 22 0 5 24 20 20 11 0 24 13 24 8 2 24 20 7 20 7 19 7 2 7 8 29 0 24 7 11 7 24 17 19 21 28 28 17 14 25 2 29 7 25 14 28 17 14 2 0 0 21 0 24 5 11 5 8 11 8 20 7 5 9 0 29 17 11 24 21 8 14 7 29 13 17 0 13 20 14 20 11 11 5 17 5
3029469ms174201 0 1 0 1 1 0 1 1 1 0 1 0 1 1 0 0 1 1 1 1 0 1 0 1 1 0 1 0 120 29 20 2 8 5 2 25 2 0 9 13 8 20 17 14 14 17 25 0 2 0 22 17 5 14 19 5 9 24 25 25 18 29 8 14 5 9 7 14 17 14 24 8 5 17 4 20 11 8 29 2 14 5 13 8 2 27 7 20 0 5 20 11 11 25 22 0 24 24 20 20 11 17 24 14 9 8 2 24 20 17 13 17 19 17 2 7 20 5 17 24 0 11 17 5 2 19 5 18 8 17 17 11 2 29 4 7 8 8 17 14 2 11 11 27 24 9 5 24 11 8 11 20 18 0 11 9 0 25 11 25 24 5 8 2 7 29 20 11 11 8 20 14 8 27 25 5 2 5
3130260ms200191 0 1 0 0 1 0 1 1 1 0 1 0 1 1 0 0 1 0 1 1 0 0 0 1 1 0 1 1 113 11 8 14 8 11 2 9 28 0 25 20 8 8 19 8 17 0 5 11 2 0 5 2 5 20 17 24 11 24 27 25 13 11 20 8 24 9 0 14 11 14 24 8 24 14 7 13 27 8 29 14 14 11 13 20 2 29 11 14 11 5 20 0 17 11 24 7 9 5 20 20 11 17 9 8 24 20 14 24 8 7 20 0 2 17 17 7 14 5 2 24 17 27 17 9 2 2 29 13 8 17 17 25 19 29 0 11 8 28 14 2 2 11 25 11 24 5 24 24 11 8 5 13 20 0 25 24 0 25 0 0 24 25 8 20 17 5 20 17 0 20 20 14 0 25 25 5 17 25
3230186ms212151 0 1 0 0 1 1 1 1 0 0 1 0 0 1 0 0 1 0 1 1 0 0 0 1 1 0 1 1 06 25 20 2 20 5 2 24 14 17 25 8 20 20 2 14 14 0 5 11 2 0 24 19 25 8 2 25 24 17 5 5 6 11 20 8 5 24 25 2 17 14 24 28 24 14 7 20 27 28 25 14 2 11 6 20 17 25 0 14 0 25 20 27 11 11 5 17 24 25 8 6 11 0 24 28 25 20 19 24 14 7 20 17 19 17 2 7 8 5 2 25 0 11 17 11 2 2 25 8 8 17 0 25 19 25 17 11 8 28 14 28 2 0 11 25 24 5 24 5 5 28 5 20 8 7 5 24 0 27 17 27 24 27 8 14 17 5 20 17 0 28 20 14 8 11 11 5 17 24
3330352ms192971 0 1 0 0 1 1 1 1 1 0 1 0 1 1 1 0 1 0 1 1 0 0 0 1 1 0 1 1 120 11 13 2 20 5 17 9 14 17 9 8 28 8 17 8 14 17 29 11 2 7 9 19 5 8 19 11 9 24 29 25 6 29 8 14 24 15 7 17 0 14 24 8 24 17 7 20 27 28 29 28 2 11 13 14 14 27 11 14 0 11 20 11 11 5 24 0 9 9 20 6 11 17 24 28 15 20 14 5 13 7 20 11 19 17 17 19 8 29 2 24 17 11 17 5 2 19 25 13 8 17 0 25 19 5 17 7 14 28 14 2 2 11 11 27 24 24 24 24 0 8 25 14 20 0 5 9 0 29 0 11 24 5 8 14 7 25 20 17 0 28 20 14 8 25 0 5 2 5
3429256ms153131 0 1 0 0 1 0 1 1 1 0 1 0 1 1 0 0 1 0 0 1 0 0 0 1 1 0 0 0 120 25 13 2 20 11 2 24 8 17 9 20 8 20 17 14 14 17 5 11 14 7 24 17 5 8 17 5 9 5 5 25 20 25 8 13 9 9 0 14 0 20 24 8 24 14 7 20 0 8 29 2 14 5 8 20 2 11 0 17 0 5 14 11 11 11 9 17 29 9 8 13 25 0 24 20 24 20 14 9 20 7 20 17 17 17 17 7 17 29 17 24 17 11 7 9 2 2 25 20 20 17 11 11 2 29 17 25 14 8 14 14 2 11 25 11 24 24 24 24 5 8 11 8 7 17 5 24 11 29 0 0 24 5 8 14 7 5 20 17 0 8 20 14 20 25 11 5 0 5
3530160ms188241 0 1 0 0 1 0 1 1 1 0 1 0 1 1 0 0 1 0 0 1 0 0 0 1 1 0 1 1 020 11 20 14 20 5 17 24 28 17 5 8 20 20 2 14 14 17 5 11 14 0 9 2 5 8 2 24 5 24 5 25 17 11 20 20 5 9 7 2 0 2 9 28 24 17 7 20 11 8 25 28 14 5 13 13 2 11 0 17 0 5 14 11 11 11 24 0 9 9 20 13 11 14 5 8 9 20 17 9 13 7 13 17 17 0 0 0 20 5 17 9 0 11 17 5 14 2 25 20 8 17 14 25 0 25 7 0 14 8 14 14 17 11 0 27 11 5 24 11 5 8 25 13 20 0 5 9 7 25 11 11 9 5 8 14 7 25 20 0 0 20 20 17 8 27 11 5 0 11
3630739ms229211 0 1 0 0 1 0 1 1 0 0 1 0 1 1 0 0 1 0 1 1 0 1 0 1 1 0 1 1 113 25 20 17 13 11 19 24 8 17 22 8 13 20 19 14 14 0 5 11 7 0 24 17 5 8 2 24 5 5 29 11 20 7 20 14 24 22 0 14 17 14 24 8 24 14 0 28 2 28 5 14 2 11 20 20 0 11 0 14 0 5 20 0 11 25 24 11 24 5 8 20 5 7 24 8 24 20 17 24 20 7 20 17 2 17 2 11 20 25 2 5 0 0 11 25 2 7 27 13 8 17 17 25 2 25 17 11 19 28 14 2 2 11 11 27 24 24 24 5 5 28 25 13 8 0 5 22 0 29 17 11 24 24 8 14 17 5 2 17 0 8 20 14 14 27 11 5 2 0
3730031ms192521 0 1 0 0 1 0 1 1 1 0 1 0 1 1 1 0 1 0 1 1 0 0 0 0 1 0 1 1 120 11 20 2 13 11 17 9 28 17 9 8 28 20 17 8 0 17 5 11 2 17 29 19 9 20 19 5 5 9 29 11 13 25 20 8 11 15 0 14 0 14 9 28 9 14 7 13 27 14 25 14 17 5 20 20 17 0 0 14 17 5 14 11 11 11 9 0 5 9 20 20 11 7 9 8 9 8 14 5 8 0 20 11 19 17 17 7 14 5 2 9 7 0 17 9 2 17 29 20 8 7 0 11 2 29 0 0 14 14 14 14 2 11 11 27 11 15 11 5 5 8 25 13 20 7 5 27 17 29 0 0 5 25 20 17 7 5 20 17 17 28 20 17 8 11 11 5 2 5
3829917ms161521 0 1 0 1 1 0 1 1 1 0 1 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 1 1 020 11 28 14 8 5 2 9 2 17 5 8 8 20 7 14 17 0 25 11 14 0 22 17 24 8 2 11 24 5 5 25 13 27 20 20 24 24 11 14 0 8 9 8 11 14 7 13 27 28 21 2 14 11 20 20 2 25 0 14 17 24 20 11 11 0 22 17 22 24 20 13 11 0 24 8 24 20 2 9 20 7 20 17 0 7 2 4 20 5 2 9 0 11 17 5 14 2 21 13 8 17 17 5 14 17 17 11 14 28 17 28 2 11 11 21 5 5 5 24 11 8 25 13 20 7 5 9 0 11 0 27 24 22 14 14 4 5 20 17 0 28 13 0 8 25 25 11 2 5
3930515ms202321 0 1 1 1 1 0 1 1 0 0 1 0 1 1 0 0 1 0 1 1 0 0 0 1 1 0 1 1 120 25 13 14 20 11 19 24 14 17 5 20 28 20 3 14 0 17 25 17 19 0 5 3 24 8 17 24 5 24 29 11 20 25 20 20 24 5 7 17 17 14 24 8 11 17 4 20 17 28 29 28 14 11 20 13 14 11 0 17 11 5 8 11 0 11 5 0 5 24 13 20 11 17 24 28 24 20 14 5 20 0 8 17 19 17 17 4 8 5 17 24 17 27 17 29 14 3 25 13 8 7 17 25 19 25 17 11 14 28 0 28 2 11 11 27 24 29 24 5 5 13 11 13 13 0 5 24 0 5 0 11 5 24 8 14 7 5 20 17 17 8 20 14 8 25 25 5 2 5
4030286ms239881 0 1 1 0 1 1 1 1 1 0 1 0 1 1 0 0 1 0 1 1 0 0 0 1 1 0 1 1 120 25 8 2 8 5 19 24 14 0 9 8 8 20 3 14 14 0 5 11 19 0 29 19 5 8 17 24 9 9 5 11 6 25 17 14 5 24 17 17 0 14 24 14 24 17 7 13 27 8 29 14 14 5 13 20 17 11 0 14 0 24 20 11 17 25 9 0 5 9 13 6 11 17 24 28 24 14 14 24 13 0 13 17 17 17 0 7 20 29 19 24 17 11 17 24 14 3 27 13 8 17 17 11 2 29 17 0 8 8 17 14 0 7 11 25 24 24 24 24 5 28 25 20 28 0 25 9 0 25 17 27 24 5 28 14 7 5 20 17 0 28 20 17 8 27 25 5 2 24
4116099ms72081 1 1 1 1 1 1 1 1 15 6 4 1 7 9 3 7 8 8 4 9 2 6 2 7 7 3 0 6 6 1 4 1 6 5 5 4 8 5 8 0 0 0 3 2 2 6 6 2 2 7 3 3 3 5 0 5 6 4 1 1 6 6 9 7 2 8 8 8 0 0 1 5 0 6 6 6 4 4 0 4 4 0 7 7 2 2 9 5 7 2 2 7 7 9 2 2 9 9
4217946ms86541 1 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 0 1 112 10 11 9 15 18 16 3 16 1 11 18 19 10 19 15 0 2 14 14 5 11 9 8 12 8 11 16 2 4 1 19 19 8 14 10 10 0 0 1 0 3 3 16 9 5 8 19 15 15 1 1 1 4 2 9 2 14 14 14 3 11 4 3 11 3 0 15 19 15 10 18 19 19 19 18 18 19 19 19
4318938ms78971 1 0 1 1 0 1 0 1 0 0 1 0 0 0 0 0 0 1 0 1 0 0 1 0 1 0 1 1 018 20 11 23 25 20 25 8 27 27 23 23 25 0 18 11 8 11 18 18 25 3 20 20 20 3 27 6 27 4 28 23 23 25 0 0 1 1 11 11 4 18 27 23 28 25 3 20 20 11 8 0 0 6 6 6 0 20 23 28 28 1 1 28 27 27 1 27 1 28
4414577ms72661 1 1 1 1 1 1 1 1 14 4 4 4 4 4 4 4 0 0 0 0 6 0 0 0 1 1 1 7 8 1 1 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 4 0 1 1 2 1 7 5 9 9 7 6 5 5 9 8 7 7 9 5 5 5 9 3 0 6 6 8 1 5 4 9 9 7 7 8 6 6 5 8 7 9 9 9 9 5 6 5 7 5
4517254ms83861 1 1 1 1 1 0 0 1 1 0 1 1 1 0 1 1 1 1 00 0 0 0 0 15 0 1 1 1 18 15 1 1 15 2 3 3 2 3 2 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 0 0 2 3 11 12 18 16 16 3 15 16 8 13 11 16 18 16 5 15 9 9 12 2 15 17 13 13 8 11 9 9 18 12 13 17 17 17 8 16 9 13
4618045ms76741 0 0 1 0 1 0 0 0 1 1 1 0 1 1 0 0 1 0 0 1 0 1 0 0 0 0 1 1 010 0 10 10 10 0 10 11 11 11 11 11 11 11 11 3 3 3 3 3 3 17 5 5 5 17 5 9 9 9 9 9 9 13 0 3 3 17 17 28 28 3 20 22 17 14 14 27 13 28 0 27 27 22 3 14 13 22 14 14 3 20 28 14 14 27 14 13 20 28
4714814ms66511 1 1 1 1 1 1 1 1 19 0 0 0 0 2 0 0 0 0 1 1 1 0 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 7 7 6 7 6 0 7 7 7 7 7 8 8 6 8 6 6 8 8 8 6 2 9 9 9 9 9 8
4816660ms80351 1 0 1 1 1 1 1 1 1 1 0 1 1 1 0 1 1 1 10 0 0 0 1 0 1 1 1 3 3 3 3 3 3 4 4 4 5 5 5 5 5 5 6 6 6 6 6 7 7 8 8 8 8 8 8 8 9 9 9 9 10 10 10 10 10 10 12 13 12 13 13 12 13 14 14 12 14 12 0 14 14 14 14 16 16 17 17 13 17 17 17 18 18 19 18 19 19 19
4918192ms70490 1 1 0 0 1 1 1 0 0 0 0 0 1 1 1 1 0 0 1 0 0 0 1 1 0 0 0 1 01 1 1 2 2 2 2 2 5 5 5 5 5 6 6 6 14 7 7 7 7 7 7 7 15 7 7 13 13 15 14 13 13 14 15 14 16 16 16 16 16 16 19 19 19 14 19 19 23 19 23 19 1 23 23 23 23 24 24 24 24 24 24 24 28 1 28 28 28 28
5016538ms98381 1 1 1 1 1 1 1 0 13 6 3 0 9 9 5 5 3 7 7 4 1 9 9 1 2 5 5 3 4 0 0 4 0 4 7 4 4 7 7 7 3 3 3 5 1 9 0 6 0 9 1 1 5 5 7 5 5 3 3 5 4 4 0 0 9 6 1 2 9 7 7 7 3 3 0 4 7 7 3 0 6 6 0 4 4 3 3 4 3 5 2 2 2 2 6 7 2 7 9 1 2 2 2 1 9 2 9 2
5119919ms99891 1 1 1 0 1 0 0 0 0 1 0 1 1 0 1 1 1 1 115 0 19 10 16 13 5 16 15 5 5 3 13 13 0 12 12 16 2 15 0 0 10 19 10 10 1 19 19 19 1 1 19 19 15 5 13 18 10 0 0 13 18 13 16 5 5 5 5 17 15 2 18 10 10 10 0 0 13 12 13 5 1 5 15 15 10 3 1 1 19 0 0 0 10 19 19 19 17 3 19 5 16 12 18 13 13 2 12 1 13 13 18 13 18 18 13 18 13 13
5216761ms95520 1 0 1 1 1 1 1 1 17 7 7 7 7 7 7 7 3 4 4 4 3 4 4 4 4 8 5 8 8 3 3 8 8 5 9 9 9 9 9 9 9 5 6 6 6 6 6 6 6 6 6 6 7 7 4 8 8 5 8 3 4 6 7 5 3 3 3 4 6 9 5 3 3 3 9 6 4 7 6 6 4 3 3 5 3 4 7 1 6 3 3 5 5 3 3 7 5 3 5 9 9 1 5 1 3 4 3 7
5320048ms114580 0 1 1 1 1 1 1 0 1 0 0 1 1 0 1 0 1 1 15 5 5 5 5 5 5 5 19 19 19 7 7 7 19 7 7 12 13 13 13 12 13 12 3 9 9 9 9 15 15 9 9 15 18 18 18 18 18 18 18 18 18 18 5 5 19 12 13 15 15 4 7 18 5 15 3 13 3 6 18 2 15 12 4 13 2 5 6 5 17 18 6 3 3 9 3 6 6 2 18 7 13 15 15 3 3 6 13 3 15 2 17 17 15 17 3 6 4 5
5416102ms96741 1 1 1 1 1 1 1 1 17 7 7 7 7 7 7 2 2 2 2 2 2 2 2 2 2 2 2 1 1 1 1 3 1 1 3 3 3 3 3 3 3 3 3 3 3 3 3 6 6 8 8 8 8 6 8 8 8 8 8 3 6 6 6 6 6 6 6 6 6 5 5 6 5 5 5 6 6 0 0 6 0 5 7 0 0 0 0 0 0 0 0 4 4 4 4 4 4 4 4 9 4 9 9 4 9 4 9 9
5519332ms106811 0 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 017 17 17 18 16 8 16 8 8 8 2 8 2 8 18 2 2 2 2 6 6 12 6 12 12 12 14 12 6 6 6 14 14 6 6 6 6 6 6 7 7 7 0 7 0 0 0 0 0 0 0 0 10 7 7 7 10 7 7 10 11 9 11 11 13 11 11 7 11 9 9 11 9 11 17 13 9 13 9 9 13 15 13 15 15 15 15 15 15 15 15 18 18 18 18 17 18 18 18 18
5638245ms309521 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 118 19 21 18 2 6 16 11 27 0 29 28 13 1 28 18 3 20 27 17 11 16 2 24 5 18 18 19 29 5 14 26 26 24 28 6 8 8 24 15 18 13 6 4 8 19 13 21 6 10 24 16 24 21 8 4 25 8 27 25 4 0 25 20 20 11 2 19 19 25 18 12 4 8 23 13 20 13 20 16 8 17 26 25 29 20 4 2 27 7 11 19 25 7 2 1 28 12 17 28 17 15 11 11 29 0 4 24 24 3 19 26 27 12 11 8 28 25 14 13 26 12 17 6 26 16 2 11 6 28 28 2 12 20 5 8 3 3 14 10 11 27 28 11 12 5 21 16 18 11 24 17 10 17 8 6 2 15 3 1 3 27 10 2 23 27 5 4 1 16 1 23 19 14 26 21 24 10 29 10 5 2 16 28 12 8 17 10 0 24 2 21 6 4 11 12 12 2 20 6
5737610ms380011 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 025 14 21 27 2 12 15 27 22 17 4 28 13 3 28 18 3 13 27 24 22 16 23 24 20 18 22 19 4 21 6 6 26 16 0 12 8 9 24 16 18 9 6 26 8 26 13 21 19 17 24 16 0 21 20 12 11 9 27 11 4 2 7 13 13 11 5 17 28 25 18 6 19 8 5 23 8 23 8 24 23 17 9 7 26 10 6 5 27 18 28 19 25 25 17 8 27 12 2 17 28 15 25 18 4 0 12 22 22 3 19 4 24 12 25 8 11 7 17 8 26 11 14 19 26 15 2 12 19 0 11 24 11 20 23 20 3 3 28 10 12 22 28 25 25 10 24 2 27 11 24 17 23 0 20 28 5 15 13 20 13 27 23 24 2 27 23 4 13 16 13 8 19 20 26 2 27 10 4 20 5 21 2 19 11 8 28 23 27 21 2 2 6 4 18 12 18 15 23 19
5837649ms571321 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 027 19 21 22 2 12 24 27 22 27 4 17 10 10 6 18 1 20 27 0 18 16 5 27 10 18 24 14 4 2 19 6 4 16 11 19 8 9 24 16 18 8 6 4 20 6 13 21 19 14 21 16 24 16 20 6 11 20 18 25 26 2 7 13 20 25 23 14 17 25 18 12 12 9 23 10 20 23 8 16 23 17 9 18 26 13 4 5 27 7 28 6 25 25 0 3 11 6 0 17 28 21 25 7 4 24 4 24 22 8 19 26 27 12 12 8 28 7 17 8 9 11 17 19 26 16 21 11 19 17 18 24 25 20 1 14 1 3 17 10 11 22 11 7 25 2 24 16 27 11 24 0 10 0 13 28 2 2 3 13 1 27 10 2 23 24 5 4 3 2 1 20 19 14 26 0 0 8 4 10 5 21 21 6 12 8 11 23 17 21 21 21 6 19 7 25 11 21 10 6
5937373ms436001 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 118 19 21 22 2 12 21 27 22 28 4 28 13 13 19 18 27 20 24 27 18 15 2 2 10 11 27 19 29 2 19 26 26 16 27 4 20 9 24 15 18 8 6 4 8 19 13 21 14 20 0 24 2 15 20 6 11 20 22 7 29 0 25 20 13 25 5 14 17 12 18 12 19 9 10 23 20 5 8 16 23 2 9 7 29 13 29 5 27 7 28 6 25 25 0 13 28 28 0 17 14 21 12 25 26 0 4 2 27 13 14 4 22 6 12 20 28 25 17 8 8 11 17 6 26 16 2 11 26 17 28 21 25 20 23 26 8 13 17 10 11 27 12 11 25 5 24 15 27 25 24 0 23 0 13 28 2 2 10 13 13 27 13 21 5 28 5 29 23 21 5 14 14 10 26 21 0 14 29 10 5 15 2 12 12 9 6 23 17 24 21 21 19 4 7 6 7 21 23 19
6038831ms294751 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 1 1 127 19 2 22 5 6 21 0 22 28 29 28 13 1 28 18 1 20 22 0 18 16 23 24 20 18 18 19 29 2 19 19 4 21 27 6 14 8 24 2 27 20 19 4 8 19 8 21 19 14 24 16 24 16 8 12 12 20 7 7 4 0 18 8 20 25 5 19 19 25 7 12 6 9 23 23 20 5 8 16 10 0 20 25 29 10 19 5 18 25 27 6 25 7 5 3 28 12 2 28 28 2 25 18 29 2 29 27 22 3 19 19 18 6 11 20 28 25 17 13 20 11 14 19 9 16 27 12 19 17 28 21 25 20 5 9 3 3 11 10 25 22 11 11 25 5 24 16 27 25 24 14 23 0 8 6 23 21 3 13 3 17 10 24 5 27 23 4 13 2 1 3 19 14 4 2 24 10 4 10 5 16 2 28 12 8 11 23 0 21 2 2 6 29 7 12 7 16 20 19
6137027ms399801 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 127 19 21 27 2 11 21 28 22 28 26 17 13 13 28 11 1 20 22 27 25 21 5 24 10 27 27 14 29 5 6 19 19 24 27 12 13 9 27 16 18 8 6 26 8 26 3 16 28 14 27 16 2 15 8 6 25 26 22 25 4 0 7 9 20 28 5 14 28 12 18 12 19 20 23 1 20 23 8 22 10 17 9 25 29 10 19 5 24 7 28 19 7 11 5 3 25 6 5 28 28 21 11 18 4 2 29 24 22 23 19 4 18 4 12 8 27 7 28 20 26 11 28 19 26 21 2 11 26 17 27 21 25 8 23 9 1 3 28 14 12 18 12 25 11 10 27 15 27 25 24 17 20 0 3 11 2 15 3 13 23 17 23 21 5 18 5 4 3 21 1 20 28 8 26 2 0 23 4 20 5 15 2 19 6 9 12 10 2 21 5 2 6 29 7 12 7 21 10 6
6238934ms566651 1 0 1 1 1 1 1 1 1 1 0 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 118 19 24 27 21 6 24 27 27 28 4 14 13 13 28 18 1 20 22 18 27 22 5 27 14 18 27 28 29 5 4 19 4 21 27 19 14 9 24 16 25 20 25 4 20 19 13 24 19 20 24 16 24 21 20 6 18 9 18 7 29 0 7 8 13 12 10 17 17 12 7 12 6 9 23 1 10 23 8 24 10 17 9 7 29 13 4 21 27 7 28 6 25 7 5 1 18 12 0 28 28 16 25 18 19 24 6 27 22 3 19 4 27 19 12 13 17 7 14 8 26 25 17 6 9 16 21 12 26 17 28 21 7 20 5 9 3 3 28 10 12 22 12 25 25 23 24 21 27 25 27 17 23 0 8 12 0 21 13 13 13 0 20 24 5 28 1 26 13 21 1 20 19 14 19 0 0 10 29 10 23 21 0 19 12 8 27 10 0 16 21 21 6 4 18 6 25 21 10 19
6336968ms446001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 118 6 2 27 2 11 15 27 18 28 29 17 23 1 28 18 1 8 22 17 18 16 21 24 10 18 24 17 29 2 26 19 4 21 18 19 20 9 16 16 11 20 6 26 8 19 13 21 6 14 24 16 24 16 8 12 7 9 18 25 4 0 25 8 13 11 2 14 17 25 22 12 19 8 10 23 8 10 8 24 10 17 8 25 29 13 6 5 24 7 28 4 12 25 0 3 17 12 0 28 28 15 25 18 4 0 4 27 22 3 19 26 27 12 12 8 28 18 14 9 9 12 17 29 26 21 2 12 26 0 28 24 25 10 1 9 1 13 11 10 6 22 11 11 25 2 24 15 27 25 27 17 1 0 8 11 2 15 3 3 13 24 10 24 5 27 5 4 3 21 1 8 19 20 26 2 0 20 29 10 5 2 21 12 12 9 28 23 0 21 2 2 6 4 7 12 18 15 13 28
6437510ms282031 0 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 018 19 0 22 2 6 15 27 22 28 26 28 13 13 28 18 3 20 27 0 18 21 5 2 13 27 27 19 26 5 19 26 26 21 27 12 9 8 21 21 18 20 6 4 20 28 13 21 19 14 24 24 2 21 8 12 12 9 27 25 4 0 25 8 13 11 5 17 28 11 18 12 6 9 23 13 20 23 8 21 23 0 4 25 4 13 6 2 22 25 28 6 25 11 2 3 11 12 0 28 28 15 25 18 4 0 26 24 22 3 19 4 27 25 12 20 11 11 17 8 9 11 17 19 26 15 21 11 19 17 11 24 25 14 23 20 23 8 11 10 12 22 11 11 25 23 2 15 0 25 24 17 23 0 8 11 5 15 3 13 3 27 10 2 23 27 5 19 3 21 5 10 28 10 4 2 27 10 4 20 5 21 21 19 6 8 28 23 17 21 24 2 19 4 25 12 25 21 10 19
6538343ms385051 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 118 28 15 27 2 12 2 27 18 27 29 17 13 1 19 18 13 20 27 27 18 21 1 24 10 27 24 19 19 5 12 19 29 21 28 6 14 8 24 15 7 9 6 4 8 19 13 21 19 14 24 27 2 21 8 6 7 9 18 12 29 2 11 20 20 25 0 14 6 25 18 12 12 9 5 8 13 5 8 24 10 0 14 25 26 13 19 2 27 25 28 6 7 7 23 1 11 11 0 17 19 15 11 18 29 24 4 24 27 3 14 29 27 12 25 8 27 25 17 9 26 11 28 4 26 21 2 12 19 0 28 24 12 10 1 9 13 3 17 20 12 0 28 11 11 2 21 21 18 12 27 17 23 0 20 11 2 15 3 13 3 27 10 24 5 27 5 4 3 21 1 20 19 20 26 2 0 14 29 20 5 15 21 19 12 8 28 23 17 2 2 21 6 4 7 11 25 15 20 17
6636811ms581841 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 17 6 21 24 15 6 2 28 18 11 4 19 13 13 19 11 23 20 16 0 27 16 5 24 10 27 27 19 4 5 19 19 4 16 28 19 8 10 24 16 25 9 12 29 20 4 13 2 19 20 27 16 24 22 8 6 11 26 18 7 29 0 7 8 13 25 10 14 19 7 7 12 6 26 23 23 20 23 8 21 23 0 9 12 4 13 6 5 27 11 28 6 25 25 0 13 27 6 0 28 28 15 11 7 4 0 29 24 22 13 14 4 27 6 6 8 11 25 17 8 14 25 28 4 14 15 0 12 26 28 27 21 6 10 23 9 13 10 28 14 25 27 11 11 25 2 16 15 0 25 24 17 23 17 20 28 5 21 20 13 13 27 10 24 23 27 23 26 13 15 5 9 19 10 26 2 24 10 29 10 21 15 2 11 12 20 28 23 0 24 2 21 6 6 7 12 7 15 10 19
6738855ms442021 1 1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 018 12 21 27 21 11 15 28 27 28 4 28 13 1 28 11 10 9 22 0 18 24 1 27 10 27 27 17 4 2 19 6 6 16 27 6 20 20 24 15 7 9 6 26 8 19 13 21 28 14 0 16 24 21 8 25 18 9 22 7 26 2 18 10 8 11 23 14 6 25 7 11 19 20 23 10 10 17 8 24 10 0 9 7 4 13 19 2 22 25 19 6 25 7 0 1 27 12 0 11 28 15 12 18 4 23 19 0 27 13 17 19 27 11 6 26 28 11 14 8 26 11 27 19 26 16 2 11 19 24 28 24 12 20 1 8 8 8 28 14 11 18 12 11 25 2 27 21 27 7 24 0 13 17 13 28 2 15 13 1 13 27 20 21 23 27 0 4 1 21 1 14 14 10 26 2 24 20 26 10 2 21 2 19 12 8 28 23 0 21 21 16 4 4 25 6 18 24 10 6
6837899ms289071 1 1 1 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 0 1 1 1 018 19 2 22 5 11 21 27 27 28 4 28 13 23 17 11 1 10 24 24 22 16 1 24 10 27 27 19 4 2 19 6 4 16 27 19 20 8 16 21 18 26 6 19 8 26 13 2 14 14 16 16 2 16 10 12 27 8 18 7 26 2 7 13 8 11 5 19 28 12 18 28 19 8 5 10 20 5 8 16 10 17 26 18 4 10 4 5 27 18 19 19 7 11 2 3 11 12 17 28 14 21 12 18 4 0 4 24 22 3 19 4 27 12 12 20 27 7 28 8 26 11 28 19 26 16 2 28 26 0 28 24 11 10 5 20 3 3 28 10 11 22 11 11 11 2 16 2 18 7 27 17 23 28 8 11 5 21 13 13 1 0 23 2 5 27 5 4 3 21 1 10 6 14 26 21 21 10 4 20 2 21 2 6 11 8 12 23 0 24 2 21 19 4 7 12 18 2 10 19
6938138ms370851 1 1 1 1 1 1 1 1 0 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 07 19 16 22 5 12 21 28 18 17 4 28 8 1 19 18 1 20 22 24 18 16 0 24 23 18 24 28 26 15 6 26 4 15 27 6 20 20 21 24 7 8 6 26 8 26 8 16 19 10 0 16 24 21 8 6 11 8 18 25 4 17 7 20 20 11 0 14 28 25 18 12 19 19 23 10 20 23 8 16 23 23 26 25 26 20 4 5 27 7 28 19 7 25 2 3 27 6 2 17 17 15 25 25 4 24 6 24 27 3 14 6 27 12 11 8 28 7 17 20 26 12 28 19 26 15 2 11 26 17 11 24 12 14 1 8 1 20 28 10 11 27 11 7 25 5 24 21 18 25 0 17 23 27 23 11 2 15 3 3 1 27 10 24 5 27 5 4 1 21 1 20 6 14 4 2 27 10 4 10 5 15 2 17 12 8 27 23 0 24 2 21 19 6 7 12 7 15 23 14
7038020ms574321 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 018 19 21 24 24 6 21 27 27 17 4 17 13 1 19 18 1 10 16 0 18 24 23 24 10 11 27 19 4 2 6 6 4 16 27 19 20 9 24 15 18 9 6 26 20 19 13 2 14 14 24 24 24 16 8 19 25 8 18 25 4 2 7 8 13 11 23 10 19 25 18 12 19 8 23 23 20 23 8 24 10 0 9 25 26 10 6 2 22 7 28 6 27 25 17 3 11 19 17 17 28 16 25 18 4 28 4 27 24 3 19 4 27 6 12 8 17 25 17 8 14 11 17 19 4 16 2 11 19 17 28 24 12 10 23 9 1 13 17 10 12 22 11 12 25 23 24 15 27 25 24 0 23 17 8 11 2 15 3 3 8 27 23 24 10 27 23 4 3 24 1 10 19 20 4 0 0 10 19 14 1 21 21 19 12 8 12 10 27 21 16 2 6 4 7 6 7 2 10 19
7137548ms419251 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 0 1 1 118 6 2 27 2 11 15 0 22 17 4 28 23 13 28 18 13 13 22 0 18 16 2 0 10 7 24 28 29 2 6 4 14 16 27 6 10 8 2 16 18 20 6 29 8 19 3 15 28 14 24 16 24 15 20 19 11 9 22 25 9 0 7 20 3 25 5 14 17 25 18 12 4 9 23 23 8 23 8 22 10 0 9 25 29 10 6 5 27 25 28 19 25 11 0 3 28 6 0 28 28 15 25 18 4 24 29 24 22 3 19 29 27 25 11 8 28 7 17 8 9 11 17 19 9 22 23 11 19 17 28 16 12 20 23 9 3 3 0 10 25 27 11 25 25 2 16 16 27 25 0 0 20 0 20 11 5 15 13 13 13 0 10 0 5 24 2 4 3 16 5 10 14 14 9 2 27 14 9 10 5 15 16 19 12 8 28 23 28 2 16 2 6 4 7 12 7 15 10 6

模拟退火(Simulated Annealing)

模拟退火是克服爬山缺点的有效方案,其基本思想是在系统能量减小的趋势这样一个变化过程中,偶尔允许系统跳到能量较高的状态,以避开局部极小点,最终稳定到全局最小点。

基本步骤

  • 随机挑选一单元k,并给他一个随机的位移,求出系统因此而产生的能量变化 Δ E k \Delta E_k ΔEk
  • Δ E k ≤ 0 \Delta E_k≤0 ΔEk0,该位移可采纳,而变化后的系统状态可作为下次变化的起点;若 Δ E k &gt; 0 \Delta E_k&gt;0 ΔEk>0,位移后的状态可采纳的概率为: p k = e − Δ E k / T p_k = e^{-\Delta E_k/T} pk=eΔEk/T,式中T为温度,然后从(0,1)区间均匀分布的随机数中挑选一个数R。若R< P k P_k Pk,则将变化后的状态作为下次的起点,否则将变化前的状态作为下的起点。
  • 转第(1)步继续执行,直至达到平衡状态为止。

邻域操作

常见的2-opt邻域操作如下:

插入

取后面某个节点k插入到前面的序列中
在这里插入图片描述

交换

随机选择两个节点并进行交换
在这里插入图片描述

倒置

随机选择一个区间,并将其中的节点进行倒序
在这里插入图片描述

在此题目中,邻域操作方法为:随机选择两个数l,r,此区间中的所有customer进行选择facility。

void neighborOperation(string neighbor) {
    int l = rand() % m; 
    int r = rand() % m;
    for(int i=0;i<m;i++) {
        if(i>=l && i<r) {
            int to = rand() % n;
            while(facilities[to].getRemain()-customers[i].getDemand() < 0) {
                to = rand() % n;
            }
            facilities[customers[i].getFacilityID()].setRemain(facilities[customers[i].getFacilityID()].getRemain() + customers[i].getDemand());
            customers[i].setFacilityID(to);
            facilities[to].setRemain(facilities[to].getRemain()-customers[i].getDemand());
        }
    }
}

退火过程如下:

void SA() {
    int preMinCost = -1;
    while(T > 0.001) {
        T = 0.99*T;
        for(int i=0;i<10 * m;i++) {
            customersTemp = customers;
            facilitiesTemp = facilities;
            neighborOperation("2");
            double cost = calcCost();
            if(cost <= COST_MIN) {
                COST_MIN = cost;
            } else {
                int r = rand() % (N + 1) * 1.0 /(N + 1);
                if(r < exp(-1.0*(cost - COST_MIN)/T)){
                    COST_MIN = cost;
                } else {
                    customers = customersTemp;
                    facilities = facilitiesTemp;
                }
            }
        }
        // 当相同最小值出现了50此后,默认已经收敛,结束退火过程。
        if(preMinCost == COST_MIN) {
            count++;
        } else {
            count=0;
        }
        if(count == 50) {
            break;
        }
    }
}
控制参数的选取

在此题中,我采用的初始温度为100,降温系数为0.99,终止条件为0.001,其中局部邻域操作次数为10*m。

算法执行结果

InstanceTimeCostFacility Open StatusCustomer Status
11022ms97251 1 1 1 1 1 0 1 1 18 2 1 5 3 0 2 4 4 1 9 8 3 2 8 3 4 0 9 7 3 4 9 4 2 5 1 5 0 5 2 5 0 3 9 4 4 3 0 4 1 0 1 5 7 0 4 0 4 5
21006ms83411 1 1 1 1 1 1 1 1 10 2 1 6 3 8 2 4 4 1 9 8 3 2 8 3 4 0 9 7 3 8 6 4 2 5 1 5 0 5 2 6 0 3 9 4 4 3 0 4 1 8 1 5 7 0 4 0 4 5
31007ms102121 1 1 1 1 1 1 1 1 08 2 1 6 3 8 2 4 4 1 4 8 3 2 0 3 4 0 6 7 3 4 6 4 2 5 1 5 0 5 2 6 0 3 4 4 4 3 0 4 1 8 1 5 7 0 4 0 7 5
41011ms116801 1 1 1 1 1 0 0 0 10 2 1 5 3 0 2 4 4 1 9 0 0 2 0 3 4 0 9 4 3 4 9 4 2 5 1 5 0 5 2 5 0 3 9 4 4 3 3 4 1 0 1 5 4 0 2 3 4 5
51056ms97141 1 1 1 1 1 1 1 1 18 8 1 6 3 8 2 4 4 1 9 8 3 2 8 3 4 0 9 7 3 8 6 4 2 5 1 5 0 5 2 6 0 3 9 4 7 3 0 4 1 8 1 5 7 0 2 0 4 7
61087ms83691 1 1 1 1 1 1 1 1 18 8 1 6 3 8 2 4 4 1 9 8 3 2 8 3 4 0 9 7 3 8 6 4 2 5 1 5 0 5 2 6 0 3 9 4 4 3 0 4 1 8 1 5 7 0 2 0 7 7
71129ms100961 1 1 1 1 0 1 1 1 18 8 1 6 1 8 2 4 4 1 9 8 3 2 8 3 2 0 9 7 3 8 6 4 2 6 1 1 0 1 2 6 0 3 9 4 4 3 0 4 1 8 1 6 7 0 9 0 4 7
81127ms124951 1 1 1 0 1 1 1 1 18 8 1 6 1 8 2 9 2 1 9 8 3 2 8 3 2 0 9 7 3 8 6 7 5 5 1 5 0 5 9 6 0 3 9 9 7 3 0 2 1 8 1 5 7 0 2 0 7 7
9997ms90841 1 1 1 1 0 1 0 1 18 8 1 6 1 8 2 4 4 1 9 8 3 2 8 3 2 0 9 4 3 8 6 4 2 6 1 1 0 1 2 6 0 3 9 4 4 3 0 4 1 8 1 6 4 0 2 0 4 4
10996ms82171 1 1 1 1 1 1 1 1 18 8 1 6 3 8 2 4 4 1 9 8 3 2 8 3 4 0 9 7 3 8 6 4 2 5 1 5 0 5 2 6 0 3 4 4 4 3 0 4 1 8 1 5 7 0 2 0 4 4
11982ms98001 1 1 1 1 0 1 1 1 08 8 1 6 1 8 2 4 4 1 4 8 3 2 8 3 2 0 6 7 3 8 6 4 2 6 1 1 0 1 2 6 0 3 4 4 7 3 0 4 1 8 1 6 7 0 4 0 4 4
12978ms113641 1 1 1 1 0 0 0 1 18 8 1 9 3 8 2 4 4 1 9 8 3 2 8 3 2 0 9 4 3 8 9 4 2 2 1 1 0 1 2 9 0 3 9 4 4 3 0 4 1 8 1 2 4 0 2 0 4 4
131150ms96461 1 0 1 0 1 1 1 0 0 0 0 0 1 1 0 0 0 0 10 14 7 7 1 13 3 13 14 3 7 19 1 6 13 3 5 7 1 6 14 5 7 19 6 1 0 1 3 3 13 7 13 0 3 6 3 19 19 13 6 0 5 0 3 5 14 6 19 7
141123ms77110 0 0 1 0 0 1 1 0 0 1 0 1 1 0 1 1 1 0 116 12 10 10 19 12 17 13 12 17 7 19 19 6 13 3 15 10 17 6 12 15 15 19 6 17 16 17 3 17 13 7 13 16 3 10 3 19 19 13 6 16 15 16 3 13 12 10 19 7
151100ms97190 0 0 1 0 0 1 1 0 0 1 0 0 1 1 1 1 1 0 116 3 10 10 19 15 17 13 14 17 15 19 19 6 13 3 15 10 17 6 14 15 15 19 6 3 16 17 3 17 13 7 13 16 3 10 3 19 19 13 6 16 15 16 3 13 14 10 19 7
161111ms123891 1 0 1 0 0 0 1 0 0 1 0 1 1 0 1 0 0 0 10 12 10 10 1 15 19 13 12 3 15 19 1 7 13 3 15 7 1 3 12 15 15 19 10 1 0 3 1 3 13 7 13 7 3 10 3 19 19 13 10 0 0 0 3 15 12 10 19 7
171133ms95981 1 0 0 0 0 1 1 0 0 0 0 1 1 1 1 0 1 0 10 12 7 7 1 12 17 13 14 1 15 19 1 6 13 12 15 7 17 6 14 15 15 19 6 17 0 17 1 17 13 7 13 0 1 6 17 19 19 13 14 0 15 0 6 13 14 6 19 7
181156ms79281 1 0 0 0 0 1 1 0 0 1 1 0 1 1 0 0 1 0 10 1 10 10 1 13 17 13 14 17 7 19 1 6 13 11 14 10 17 6 14 7 7 19 6 17 0 17 1 17 13 7 13 0 1 10 11 19 19 13 6 0 0 7 11 13 14 10 19 7
191127ms105361 0 0 0 1 0 0 1 1 0 1 0 1 0 0 1 0 1 1 10 12 10 10 19 18 17 18 12 17 15 4 19 10 18 12 15 10 4 8 12 15 15 19 8 17 0 17 12 17 18 7 18 0 17 10 8 19 19 18 8 0 15 0 8 15 12 10 19 7
201112ms132360 0 1 0 1 1 0 1 0 1 1 0 0 0 1 0 1 0 1 116 14 10 10 19 18 4 18 14 4 7 19 19 10 2 14 5 10 4 9 14 5 7 2 9 4 16 4 19 4 2 7 2 16 19 10 9 19 19 2 10 16 5 16 9 5 14 7 19 7
211098ms105091 1 1 0 0 1 0 0 0 1 1 0 1 0 1 0 0 0 1 00 12 10 10 1 18 1 18 14 1 5 1 1 10 2 12 5 10 1 9 12 5 5 2 9 1 0 1 1 12 2 14 2 0 12 10 12 18 2 2 10 0 5 0 9 5 14 10 2 5
221095ms81811 1 0 1 0 1 1 1 0 0 1 0 0 1 0 0 0 1 0 10 1 10 10 1 13 17 13 7 17 7 19 1 6 13 3 5 10 17 6 1 5 7 19 6 17 0 17 1 17 13 7 13 0 3 10 3 19 19 13 6 0 5 0 3 5 7 10 19 5
231133ms103661 0 1 1 0 1 1 1 0 0 1 0 0 0 1 0 0 1 0 10 3 10 10 19 14 17 2 14 17 7 19 19 6 2 3 5 10 17 6 14 5 7 19 6 17 0 17 3 17 2 7 2 0 3 10 3 19 19 2 6 0 5 0 3 5 14 10 2 5
241106ms125730 0 0 0 0 1 1 0 0 0 0 1 0 0 1 1 1 0 1 116 14 16 16 18 18 11 18 14 11 15 19 19 6 18 11 15 14 11 6 14 15 15 19 6 19 16 11 19 19 18 15 18 16 11 6 11 19 19 18 6 16 5 16 11 5 14 6 19 5
257206ms159071 0 1 0 0 1 0 1 1 1 0 1 0 1 1 0 0 1 0 1 1 0 0 0 1 1 0 1 0 013 25 13 14 20 5 2 24 2 17 5 8 8 20 17 8 14 17 25 11 19 0 9 19 5 8 19 24 5 24 5 25 20 11 20 20 24 24 7 14 0 8 24 8 24 14 0 20 27 8 25 14 14 5 13 20 2 27 0 14 0 5 20 11 11 25 9 0 5 5 20 13 5 17 24 8 5 20 2 9 20 17 20 0 0 17 0 7 20 5 2 24 0 11 7 5 2 19 25 13 20 17 14 25 2 5 7 11 14 8 14 14 2 11 11 7 24 9 11 24 5 20 25 20 8 7 5 9 11 11 0 7 24 27 8 14 7 25 20 17 0 14 20 2 8 27 11 5 17 7
267187ms136601 0 1 0 0 1 0 1 1 1 0 1 0 1 1 0 0 1 0 0 1 0 0 0 1 0 0 1 0 18 11 13 2 20 5 2 5 14 17 24 20 8 20 17 14 14 17 5 0 2 27 2 17 24 8 2 24 5 9 29 11 13 27 20 20 24 24 7 14 0 14 24 8 24 14 7 20 27 8 5 14 14 5 13 20 14 27 0 14 0 5 20 11 0 11 9 0 29 9 20 20 11 17 24 8 24 20 14 9 20 17 20 0 7 17 17 0 20 29 2 24 17 11 7 24 2 14 29 13 20 17 14 0 2 29 7 11 14 8 14 14 0 11 11 27 24 24 24 24 5 20 11 20 20 11 5 24 7 5 0 11 24 29 8 14 0 5 20 0 0 8 20 2 20 11 11 11 14 7
277156ms166671 0 1 0 0 1 0 1 1 0 0 1 0 1 1 0 0 1 0 1 1 0 0 0 1 1 0 1 0 020 25 8 14 13 5 2 24 8 17 5 8 14 20 7 14 14 17 11 11 7 7 5 19 5 8 19 24 5 24 5 25 8 25 20 20 5 27 11 14 0 14 24 20 24 14 19 13 11 8 5 14 14 5 20 20 17 5 7 17 0 5 20 25 11 25 24 0 5 24 13 13 11 7 5 8 24 20 14 24 13 7 20 17 2 17 2 17 20 5 14 24 17 0 7 5 14 2 25 8 20 7 14 11 2 5 7 11 20 8 14 14 17 11 11 25 24 24 11 24 5 8 25 20 20 7 5 24 0 25 0 11 24 24 8 14 17 5 20 0 0 8 20 14 8 27 25 5 0 7
287124ms198171 0 1 0 0 1 0 1 1 1 0 1 0 1 1 0 0 1 0 1 1 0 0 0 1 1 0 0 1 013 11 13 17 13 5 19 24 14 0 25 8 8 20 19 14 14 17 0 11 19 2 5 2 5 8 2 24 24 24 25 11 13 25 20 20 24 24 7 14 0 14 24 8 24 14 11 20 11 8 25 14 14 5 20 20 14 11 0 20 0 5 20 0 11 11 24 0 5 24 13 13 11 0 24 8 9 20 14 9 13 0 20 17 2 17 0 7 20 9 2 24 7 25 7 5 14 14 25 20 8 0 14 25 2 11 17 11 14 28 17 2 17 11 11 5 24 9 24 5 5 28 25 20 8 11 5 9 17 5 0 11 24 9 28 14 7 5 20 17 0 8 20 14 8 5 25 5 2 7
297139ms181911 0 1 0 0 1 0 1 1 1 1 1 0 1 1 1 0 1 0 1 1 0 0 0 1 1 0 0 0 120 0 14 2 13 5 7 24 14 17 24 8 8 20 19 14 14 17 5 11 2 0 29 17 5 8 19 24 24 9 5 25 20 11 20 20 24 15 7 14 0 14 15 10 24 14 0 13 11 8 5 2 14 5 13 20 2 29 0 14 0 5 20 11 17 25 9 0 25 9 13 8 11 17 24 8 29 20 14 24 13 7 20 17 2 17 2 7 8 5 2 24 17 11 0 5 2 2 11 20 20 7 14 11 2 5 17 25 8 8 14 19 2 0 11 11 24 15 24 5 5 20 25 20 13 25 5 9 0 5 0 0 24 9 8 14 17 25 20 17 0 8 13 17 8 25 11 5 2 10
307165ms158811 0 1 0 0 1 0 1 1 1 1 1 0 1 1 0 0 1 0 1 1 0 0 0 1 1 0 1 1 013 11 13 14 13 5 2 24 17 17 24 8 8 20 17 8 14 0 25 11 2 7 5 17 25 8 19 24 9 9 25 25 13 25 20 20 24 9 11 14 0 14 9 28 24 14 7 20 27 8 27 19 14 5 20 20 2 0 11 14 0 5 20 0 11 11 9 0 24 9 20 13 0 17 24 20 24 20 19 24 13 7 13 17 19 17 7 2 20 25 17 24 17 27 0 9 2 2 25 13 8 7 14 25 19 11 0 11 14 28 14 2 2 11 11 27 24 24 24 24 5 28 25 13 8 17 11 9 0 5 0 11 5 5 8 14 17 25 13 17 0 8 20 14 8 11 11 5 17 10
317205ms186311 0 1 0 0 1 0 1 1 0 1 1 0 1 1 0 0 1 0 0 1 0 0 0 1 1 0 0 1 113 25 13 2 13 5 2 5 28 17 5 8 20 20 2 14 14 17 25 11 2 11 24 7 24 8 2 24 5 24 29 25 8 11 20 8 24 24 11 14 0 20 24 10 5 14 17 13 11 8 29 14 14 5 13 20 14 25 11 14 0 24 20 0 0 25 11 0 29 25 20 13 11 0 24 8 5 20 2 5 20 7 20 17 2 17 2 0 20 25 2 24 17 11 7 5 2 0 25 20 8 17 17 0 0 29 7 11 8 28 17 14 2 11 11 25 24 24 11 5 5 28 25 20 8 17 5 24 11 5 0 25 24 29 8 14 7 25 20 17 0 28 13 14 8 25 25 5 2 10
327131ms230581 0 1 0 0 1 0 1 1 1 1 1 0 1 1 0 0 1 0 0 1 0 0 0 0 1 0 1 1 113 0 13 0 13 5 17 11 14 17 9 20 8 8 17 8 14 17 5 11 14 7 9 2 9 8 2 11 25 9 25 11 8 25 20 20 0 9 17 14 0 14 9 10 9 14 11 13 27 8 29 28 14 5 8 20 14 11 11 14 0 5 20 11 11 25 9 0 9 29 8 13 11 0 9 20 9 20 2 9 20 7 8 17 2 17 2 0 20 25 14 9 17 11 17 5 2 28 27 28 28 7 14 0 2 25 11 11 8 28 14 14 2 11 25 27 5 9 5 5 5 28 11 20 13 25 5 5 7 27 0 11 5 29 28 14 17 29 20 17 0 8 20 14 8 27 0 5 17 10
337174ms147451 0 1 0 0 1 0 1 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 1 1 0 1 0 020 11 8 2 14 5 2 24 8 0 24 8 8 20 14 14 14 17 5 11 2 0 5 17 24 8 17 24 5 24 5 5 8 25 20 8 24 24 11 14 0 14 24 20 24 14 17 20 27 14 5 14 14 5 8 20 2 25 11 17 0 5 20 25 11 11 24 0 5 24 20 20 11 17 24 8 24 20 2 5 20 17 8 17 17 17 2 7 20 11 2 24 17 11 7 24 2 17 27 20 20 17 17 25 2 25 17 11 14 8 17 14 2 11 25 27 24 24 5 24 5 8 11 20 20 0 25 24 7 25 0 27 5 11 8 17 7 11 20 17 0 8 20 17 8 27 25 5 2 7
347095ms137011 0 1 0 0 1 0 1 1 0 0 1 0 1 1 1 0 1 0 0 1 0 0 0 1 1 0 1 1 08 11 13 2 13 5 2 24 28 17 5 8 8 20 7 14 17 17 5 11 14 0 5 17 5 8 2 5 5 24 5 11 13 25 20 20 24 15 17 14 17 14 15 28 24 14 0 20 27 8 5 14 14 5 13 20 17 27 11 14 0 5 20 0 11 25 24 0 5 24 20 13 11 17 24 8 15 20 14 24 13 7 20 17 17 17 17 17 20 5 17 24 17 11 7 24 2 17 25 20 8 17 14 11 0 5 17 11 14 28 14 17 2 11 11 25 24 15 24 24 11 14 27 20 20 7 5 15 0 27 0 11 24 5 8 14 7 5 8 0 17 8 20 14 8 25 5 5 0 7
357064ms166541 0 1 0 0 1 0 1 1 1 0 1 0 1 1 0 0 1 0 1 1 0 0 0 1 1 0 0 1 08 11 20 14 20 5 19 24 14 17 9 20 14 20 17 14 14 17 5 11 14 0 24 17 5 8 19 24 5 24 25 25 13 11 14 8 24 24 0 14 17 8 24 14 24 14 0 13 11 8 11 2 14 5 13 20 17 25 0 14 0 5 20 25 11 11 24 0 24 24 20 20 11 7 24 8 9 20 14 9 13 7 20 17 19 17 17 7 20 24 2 24 17 25 7 9 14 19 11 20 28 17 17 11 19 25 17 11 28 28 14 14 2 11 11 11 24 5 24 24 5 8 11 13 8 17 5 9 7 25 0 11 24 5 8 14 0 5 20 17 0 8 20 17 8 11 25 5 17 7
367085ms197221 0 1 0 0 1 0 1 1 1 0 1 0 0 1 0 1 1 0 1 1 0 0 0 1 1 0 1 0 020 25 8 2 20 5 17 24 8 17 9 20 8 20 19 14 14 0 5 11 2 17 24 17 5 8 2 24 24 24 25 11 16 25 20 20 24 24 25 14 0 8 24 8 24 2 0 20 27 8 27 2 17 5 16 20 17 11 0 14 0 5 20 11 11 11 24 0 9 5 20 20 11 17 24 8 24 20 19 24 20 7 20 17 0 17 17 7 20 5 2 9 17 11 17 24 2 2 25 16 8 17 17 11 2 25 7 11 2 14 14 2 2 11 11 27 24 24 5 24 5 16 25 20 20 0 5 9 0 27 0 27 24 5 8 14 7 25 20 17 0 8 20 14 14 25 25 5 2 7
377053ms160431 0 1 0 1 1 0 0 1 0 0 1 0 1 1 0 0 1 0 1 1 0 0 0 1 1 0 1 0 120 25 13 2 8 5 19 24 14 17 5 8 20 20 19 14 14 17 5 11 2 0 24 17 29 8 17 24 24 24 29 11 13 11 20 8 24 24 17 2 11 14 24 20 24 14 4 20 27 8 29 2 14 5 20 20 17 11 27 14 0 24 20 27 11 0 25 0 29 5 13 20 11 17 24 14 24 20 14 24 20 0 20 17 2 17 17 17 20 5 17 24 17 11 17 25 2 2 27 8 8 2 17 25 19 25 0 0 14 14 14 14 2 11 11 25 24 24 24 24 11 8 25 20 20 0 5 5 11 27 0 17 24 5 14 14 4 29 20 17 17 8 20 14 8 27 25 5 14 4
387077ms140911 0 1 0 1 1 0 0 1 0 0 1 0 1 1 0 0 1 0 0 1 0 0 0 1 1 0 1 1 120 27 13 2 20 11 2 24 14 17 5 20 8 20 0 14 17 17 25 11 14 0 29 17 5 8 2 24 5 5 5 25 13 27 20 13 5 5 17 14 0 14 24 8 24 14 11 13 27 8 5 14 14 5 13 20 17 27 11 14 0 24 20 27 0 11 24 0 27 24 20 20 5 17 24 20 5 20 28 24 20 17 13 17 17 17 2 0 20 5 2 24 2 27 2 5 14 2 27 13 28 17 17 11 2 25 17 17 28 14 14 17 2 11 11 29 5 24 24 24 5 8 25 20 8 11 5 24 0 5 0 0 24 29 28 14 4 5 20 17 0 28 20 14 8 11 25 5 2 4
397111ms170341 0 1 0 1 1 0 1 1 0 0 1 0 1 1 0 0 1 0 0 1 0 0 0 1 1 0 0 1 020 11 20 14 13 5 14 5 14 17 5 8 28 13 17 8 14 0 25 11 14 7 5 17 5 8 17 5 5 24 24 25 13 11 20 20 5 24 7 14 0 14 24 13 24 14 7 20 11 8 5 14 14 5 20 20 2 11 0 17 0 24 20 11 11 11 24 0 24 24 8 20 5 17 24 8 25 20 14 24 20 7 20 17 2 17 17 17 20 5 2 24 17 0 17 24 2 17 11 20 8 17 17 25 2 11 7 11 14 8 0 28 2 11 25 25 24 24 24 24 5 28 11 13 20 4 5 5 11 5 0 11 24 24 8 14 17 5 20 17 0 28 13 14 14 25 25 5 2 4
407167ms194471 0 1 0 1 1 0 1 1 0 0 1 0 1 1 0 0 1 0 0 1 0 0 0 1 1 0 1 0 020 25 13 2 20 5 17 24 14 17 5 20 8 20 17 14 14 17 25 11 2 7 24 2 25 8 2 5 25 24 25 11 14 25 20 8 24 24 0 14 0 14 24 8 24 14 11 13 27 8 5 14 14 5 13 20 17 11 0 14 17 5 20 25 11 11 5 0 5 5 13 20 5 0 24 8 24 20 14 24 20 7 20 17 17 17 17 0 20 5 2 24 17 0 17 24 2 4 27 13 20 17 17 25 2 11 7 25 17 8 14 14 2 11 25 2 24 5 24 24 5 20 11 13 13 7 5 24 0 25 0 11 24 5 8 14 4 5 20 17 0 8 20 2 8 27 25 5 0 4
412674ms71981 1 1 1 1 1 1 1 0 15 6 4 1 7 9 3 7 5 3 4 6 2 6 2 7 7 3 0 6 6 1 4 1 6 5 5 4 5 5 5 0 0 0 3 9 2 6 6 9 2 7 3 3 3 5 0 5 6 4 1 1 6 6 9 7 2 3 3 3 0 0 1 5 0 6 6 6 4 4 0 4 4 0 7 7 2 2 6 5 7 2 2 7 9 9 9 2 9 4
422289ms72561 1 0 1 1 0 0 0 1 0 1 0 1 0 1 0 0 0 1 112 10 3 14 19 18 1 3 1 1 8 18 19 10 19 0 0 12 14 14 10 4 14 8 12 8 4 12 12 4 1 19 19 8 14 10 10 0 0 0 1 3 3 8 8 14 8 19 0 19 1 1 1 4 3 14 3 10 14 14 3 3 4 3 3 3 0 0 19 19 10 18 19 19 19 18 18 18 19 4
432025ms72830 1 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 1 127 22 12 24 3 22 9 22 27 27 24 28 3 22 12 4 22 22 12 1 9 9 22 22 22 3 27 12 27 4 29 28 24 3 22 22 1 1 12 12 4 1 28 24 24 3 3 22 9 4 22 9 9 4 12 12 22 22 24 29 29 1 1 29 27 29 28 27 28 4
442688ms72361 1 1 1 1 1 1 1 1 14 4 4 4 4 4 4 4 0 0 6 0 0 0 0 0 1 1 1 7 6 1 1 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 4 0 1 1 2 8 7 5 9 7 7 6 5 5 8 8 7 7 9 5 5 5 9 3 0 6 6 8 1 0 4 9 9 7 7 8 6 6 5 8 7 9 7 9 9 9 6 5 7 4
452325ms73051 0 0 1 1 1 1 0 0 1 0 1 1 1 0 1 0 0 0 10 0 0 0 0 0 0 6 6 6 6 6 6 6 6 3 3 3 3 3 3 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 0 0 3 3 11 12 13 5 19 3 15 19 13 13 11 19 13 19 5 15 9 9 12 9 15 13 13 13 12 12 9 9 19 12 13 13 11 11 11 11 9 4
462064ms71611 0 0 1 1 0 1 0 1 0 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 1 00 0 0 0 0 0 0 11 11 11 11 11 11 11 11 3 3 3 3 3 3 4 4 6 6 6 6 8 16 8 8 16 16 8 0 3 3 6 14 28 28 12 3 28 14 14 14 26 16 28 16 26 8 11 3 26 16 28 26 14 12 12 28 28 26 14 14 26 12 4
472750ms66611 1 1 1 1 1 1 1 1 10 0 0 0 2 0 0 0 2 0 2 1 1 1 2 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 7 7 6 7 6 0 7 7 7 7 7 7 7 8 8 8 8 6 6 8 9 0 9 9 9 9 9 5
482275ms68021 1 1 0 1 1 1 0 1 1 0 0 0 1 0 1 0 1 0 00 0 0 0 1 0 0 1 1 2 2 2 2 2 2 4 4 5 5 4 5 5 5 5 6 6 6 6 6 6 6 8 8 9 8 9 8 8 9 9 9 9 9 13 8 8 9 9 13 13 13 13 13 13 13 15 15 13 15 13 0 15 15 15 15 17 17 17 17 17 17 17 17 17 17 17 0 17 0 4
492009ms75161 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 1 0 0 0 0 0 1 1 1 0 00 0 0 4 0 0 0 0 4 7 4 4 7 7 7 7 7 7 7 7 7 7 11 11 11 11 11 12 12 14 12 14 14 14 14 14 18 18 18 18 18 12 19 19 18 19 18 18 25 18 25 18 0 25 25 18 25 26 25 26 25 25 25 26 27 27 27 27 27 4
503161ms94711 1 1 1 1 1 1 1 0 13 6 3 0 2 1 5 5 3 7 7 4 6 9 0 9 2 2 5 3 6 6 0 4 0 0 7 4 4 7 7 7 3 3 3 5 9 9 0 6 6 9 9 9 5 5 5 5 5 3 3 5 6 0 0 0 6 6 1 2 2 7 7 7 3 3 0 4 7 7 3 6 6 0 0 4 3 3 3 4 3 5 2 2 2 2 9 7 2 7 9 1 1 2 1 1 1 1 1 4
513277ms103341 1 1 0 1 1 1 1 0 0 1 0 1 1 1 1 1 1 0 07 6 17 10 16 13 5 16 15 5 5 14 6 13 6 13 12 5 5 15 0 0 10 14 14 14 15 17 15 7 1 1 17 15 15 5 13 13 10 0 0 13 13 13 12 5 5 2 5 17 15 2 6 14 10 0 6 6 4 12 13 2 1 5 15 15 10 17 7 7 15 0 0 0 10 17 17 15 17 10 15 5 16 12 12 13 6 2 2 1 13 13 13 13 6 13 13 12 13 4
523307ms98820 1 0 1 1 1 1 1 1 17 7 7 7 7 7 7 7 3 4 4 4 3 4 4 4 4 8 8 8 8 3 3 8 3 5 9 9 9 9 5 5 9 9 6 6 6 6 6 6 6 6 6 6 7 7 4 3 8 5 5 3 4 6 7 5 3 3 3 4 6 9 5 5 3 3 9 7 4 7 6 6 4 3 3 5 3 4 7 1 6 3 8 5 5 3 3 7 5 3 9 5 9 1 5 1 3 4 3 5
533330ms105730 1 1 1 0 1 0 1 0 1 0 0 1 1 0 1 0 1 1 15 5 5 5 5 5 5 5 19 19 19 7 19 7 7 7 7 12 13 13 13 13 3 13 12 15 9 9 9 9 9 9 9 15 18 18 18 18 18 18 18 18 18 5 5 5 7 12 13 15 15 3 7 18 5 15 3 3 1 7 18 9 9 12 3 12 9 18 7 18 17 18 7 3 3 15 3 7 5 2 18 19 12 15 15 3 1 7 15 3 2 2 17 17 2 17 1 7 1 5
543434ms94701 0 1 1 1 1 1 0 1 19 2 2 9 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 2 3 3 2 3 3 3 3 3 3 3 3 3 3 3 3 3 6 8 8 8 6 8 8 6 8 8 6 3 3 6 6 6 6 6 6 8 6 6 5 5 6 5 5 5 6 6 0 0 6 0 5 9 0 0 0 0 0 0 0 0 4 4 4 4 4 4 4 4 4 4 9 9 9 4 9 9 6
553367ms93530 0 1 0 0 0 1 1 1 1 1 0 0 1 1 1 0 1 1 017 18 18 18 17 8 17 2 8 2 8 8 2 8 2 8 2 2 2 6 6 2 2 6 14 6 6 6 6 6 6 14 6 6 6 6 6 6 6 7 7 7 10 7 10 7 10 7 14 7 7 14 7 7 7 7 10 7 7 7 7 7 13 7 9 7 7 10 7 13 9 7 9 9 17 13 9 13 9 9 13 15 15 15 15 15 15 15 15 15 15 18 18 18 18 17 18 18 18 6
5611723ms278061 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 17 19 21 18 21 12 21 28 22 28 29 17 13 1 19 18 1 20 22 0 27 16 5 2 23 18 27 17 29 2 19 19 4 16 28 6 20 20 16 15 18 9 6 29 8 26 13 21 19 14 2 16 0 21 9 6 11 9 18 25 29 0 7 8 13 25 5 14 28 25 18 12 19 9 23 23 20 23 20 16 10 0 26 7 29 13 19 5 27 25 28 6 7 25 2 13 27 6 17 11 28 15 25 18 19 2 29 21 22 13 19 4 18 12 12 8 28 7 14 8 9 11 17 19 9 16 2 6 26 17 11 16 11 20 23 9 1 13 0 23 6 22 11 11 25 2 21 21 27 25 27 17 10 0 8 11 2 15 8 13 13 27 10 2 23 27 5 29 1 15 1 8 28 10 26 0 0 23 29 10 5 21 2 19 12 9 28 20 0 21 2 21 6 6 7 6 7 21 10 15
5711720ms339571 1 1 0 1 0 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 018 6 21 27 2 12 15 11 22 0 4 28 13 1 28 18 1 20 22 0 27 21 1 24 10 18 27 17 26 2 19 19 26 24 27 6 20 20 27 15 18 8 6 4 8 19 13 21 19 20 24 24 24 21 8 6 25 8 18 25 4 2 7 20 13 11 10 14 28 12 18 12 6 8 10 23 20 23 8 27 10 17 20 25 4 10 6 2 27 25 28 6 25 7 2 1 11 6 0 28 28 15 25 18 4 17 4 24 22 23 14 4 27 12 11 8 28 7 14 8 26 11 17 19 26 21 2 12 26 17 17 24 11 10 13 20 1 13 28 14 12 22 28 25 25 23 24 21 27 25 24 17 23 28 8 11 2 15 13 8 13 27 23 2 23 27 23 4 1 15 1 20 19 10 26 2 24 10 4 10 2 21 21 6 12 8 11 23 17 21 2 21 6 26 7 25 7 15 10 15
5811914ms487241 0 1 1 1 0 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 0 1 1 1 0 0 1 018 19 2 18 2 12 15 28 24 0 4 28 20 13 28 11 13 10 24 0 18 24 23 24 10 11 18 28 4 2 19 19 6 16 24 12 20 20 24 21 11 9 6 4 20 19 13 15 6 10 24 16 24 16 8 12 11 9 18 25 4 0 25 20 13 11 23 19 28 25 18 12 6 9 10 23 20 10 8 16 10 0 8 25 4 10 19 2 24 11 28 6 25 25 2 3 11 6 0 17 28 15 25 18 4 24 4 21 16 3 19 4 18 12 12 8 28 25 17 8 9 11 17 19 9 16 21 11 4 17 11 21 11 10 23 9 3 20 28 10 11 18 19 25 25 2 24 15 0 25 0 17 23 17 13 19 2 15 3 13 3 0 13 24 23 0 23 4 13 15 23 20 28 20 9 2 0 20 4 10 2 21 21 28 12 8 28 23 17 21 2 16 19 4 25 12 25 15 10 15
5911799ms367050 0 1 0 1 0 1 0 1 1 1 1 0 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 018 6 24 27 21 6 15 11 27 17 26 28 13 13 28 11 23 10 27 27 18 2 2 21 13 18 24 19 4 2 19 4 4 21 27 6 20 9 24 15 18 9 6 4 8 19 13 21 19 20 24 21 2 21 20 6 18 26 18 25 9 17 18 9 13 11 23 14 28 28 18 6 19 20 23 23 20 17 20 24 23 17 26 25 26 13 19 23 27 25 17 6 11 25 2 13 28 6 10 28 14 15 11 18 4 27 4 27 18 8 19 4 27 6 25 8 11 18 17 8 20 11 28 19 26 24 15 11 26 17 28 24 25 20 23 9 13 13 28 14 6 27 28 11 25 2 24 15 27 25 24 17 23 17 8 11 23 15 13 13 13 28 10 24 10 28 2 4 13 21 23 8 19 14 26 2 24 23 4 10 21 15 24 19 11 8 28 23 28 2 21 21 6 4 25 25 25 21 10 15
6011574ms266781 1 1 0 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 17 19 21 24 5 12 21 27 22 27 4 28 13 23 28 18 1 8 22 27 18 16 5 24 10 18 27 19 29 5 4 19 4 16 27 6 20 8 24 21 18 9 6 4 8 26 13 21 19 14 24 16 24 16 8 6 18 8 18 25 29 0 25 8 13 11 5 14 28 25 18 12 19 8 23 13 20 23 8 16 10 0 9 25 29 13 6 5 27 7 17 19 11 11 0 13 11 6 0 28 28 16 25 18 4 24 4 24 22 13 14 29 27 6 12 8 28 7 17 8 9 25 28 19 26 24 2 11 26 17 28 24 25 14 23 9 1 20 28 14 12 22 11 11 25 5 24 21 18 7 24 0 10 0 8 11 2 16 13 13 13 0 10 2 5 27 5 29 1 21 23 10 19 14 4 2 24 10 4 10 5 21 2 19 12 8 11 23 0 21 2 21 6 29 7 11 7 2 10 10
6111639ms333481 0 1 1 0 0 1 1 0 0 1 1 1 1 1 1 0 1 0 1 1 1 1 1 1 1 1 1 1 127 6 21 27 2 12 15 27 22 28 6 28 13 13 28 7 3 20 22 0 27 21 10 24 10 27 27 19 29 2 26 26 26 21 24 6 14 20 24 15 7 26 6 26 20 19 13 21 14 14 24 24 24 24 20 6 11 26 22 7 26 0 7 20 3 25 2 14 28 25 25 12 19 14 23 23 20 23 20 24 10 0 26 25 29 10 6 2 24 7 17 6 25 25 0 3 11 6 0 28 28 15 11 7 26 0 29 24 22 3 19 29 27 12 25 13 28 7 14 20 14 11 17 19 26 21 2 28 26 17 28 21 25 20 13 14 3 3 28 20 12 22 11 25 25 23 24 15 22 25 24 10 23 0 3 28 21 15 3 3 13 0 10 0 23 27 13 29 3 21 13 20 19 14 19 2 0 10 29 23 23 21 2 6 11 20 28 23 0 21 24 15 6 29 7 11 25 15 10 10
6211660ms491491 1 0 0 0 1 1 0 1 0 1 1 1 0 1 1 1 1 1 1 1 1 0 1 0 1 1 1 1 118 19 21 27 23 12 15 28 27 28 29 17 10 1 28 18 1 10 16 0 27 15 5 0 10 18 27 19 29 21 6 26 26 15 27 19 20 8 27 16 18 8 6 29 8 26 8 21 19 14 0 16 21 16 8 12 27 8 25 25 29 0 18 8 8 11 5 14 17 25 18 12 6 20 23 23 14 23 8 16 23 0 26 25 29 10 6 5 27 25 28 6 25 12 0 1 11 6 0 28 17 21 25 25 29 0 29 16 27 1 19 26 27 11 11 20 28 25 28 8 26 11 17 6 26 16 5 11 19 17 11 16 11 10 1 8 8 1 28 14 12 27 11 25 25 5 27 15 27 25 27 17 10 0 20 11 5 15 8 20 23 28 10 21 5 27 23 26 1 21 5 20 19 14 29 21 27 20 29 10 5 21 21 19 12 8 6 23 17 21 21 21 6 29 25 11 25 21 20 10
6311839ms375481 1 1 0 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 0 1 1 07 6 2 16 2 12 2 28 18 0 4 28 13 1 6 18 10 8 27 0 11 16 5 24 10 18 27 19 4 21 19 19 4 16 18 12 20 8 24 21 18 14 12 4 20 6 13 21 19 14 24 16 24 16 8 19 11 19 18 25 4 0 18 8 13 11 2 14 28 25 7 12 19 8 5 23 20 5 8 16 10 0 8 25 4 13 6 5 27 7 28 11 25 25 0 1 11 6 0 28 28 16 12 18 4 0 4 24 24 1 14 4 18 12 11 8 28 25 0 8 14 25 17 19 6 16 2 12 19 0 11 24 25 20 23 8 1 13 28 23 12 27 11 11 25 2 24 16 27 25 24 17 23 0 8 11 2 16 13 13 13 27 10 0 5 27 5 4 1 21 5 20 19 14 4 21 0 10 4 10 23 21 24 19 12 8 28 10 0 21 2 21 6 4 7 12 7 2 10 10
6411619ms267131 0 1 1 1 1 1 1 1 0 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 0 1 118 19 2 22 5 25 21 28 22 28 4 17 10 13 19 18 3 10 22 0 11 21 2 24 23 18 24 19 29 2 19 19 19 16 17 6 20 8 24 16 18 26 19 4 8 26 20 16 19 20 24 16 2 21 20 6 11 26 18 7 29 0 7 8 3 11 5 17 19 25 18 12 6 8 23 23 20 0 20 16 10 0 26 25 29 10 6 5 22 25 28 6 12 25 2 13 28 12 0 17 28 21 25 7 29 24 29 24 22 3 19 29 22 12 12 8 28 25 0 8 26 11 17 19 26 16 2 11 26 0 28 24 25 20 23 20 3 3 17 20 11 22 11 25 25 5 24 16 18 25 24 17 23 0 13 28 2 16 8 13 13 28 10 2 5 18 23 4 3 24 23 8 19 10 26 21 0 20 29 23 5 21 2 6 12 8 11 23 0 21 2 21 19 4 7 12 7 21 23 7
6511581ms342171 0 1 1 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 018 19 21 24 2 12 21 27 27 28 26 28 20 13 28 18 13 20 24 0 18 16 5 24 23 27 24 19 4 5 6 19 4 16 28 6 8 8 24 16 18 26 6 26 3 19 3 21 6 14 16 16 24 16 8 12 11 26 18 11 26 2 7 8 13 11 5 14 28 25 18 12 19 8 23 23 20 23 8 16 10 17 26 25 4 13 19 5 27 18 28 6 25 25 17 3 11 6 0 28 19 21 25 18 4 0 4 24 24 3 19 4 27 25 12 13 17 7 0 8 26 11 17 19 19 16 21 6 26 17 11 24 25 8 23 8 3 3 28 10 12 27 11 11 25 5 24 21 27 11 27 17 23 0 8 28 5 16 3 13 13 18 10 24 5 27 2 4 3 21 23 20 19 14 26 2 27 10 4 23 23 21 2 6 12 8 28 13 17 21 2 21 6 4 7 12 7 2 13 7
6611690ms508551 1 1 0 1 1 1 1 1 0 1 1 1 0 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 018 28 21 27 2 12 2 28 22 28 4 28 10 1 28 7 1 20 22 0 27 24 5 24 10 18 24 19 4 2 19 19 4 21 28 6 20 8 24 24 18 20 6 4 8 19 8 21 6 10 24 24 24 22 8 19 25 26 22 25 4 2 7 8 10 11 23 14 28 25 18 25 19 20 10 23 8 23 8 24 23 0 26 25 4 23 19 5 18 7 28 6 25 25 0 8 27 6 0 28 28 21 25 7 4 2 4 27 22 1 26 4 27 12 12 8 28 7 10 8 14 11 0 19 26 21 2 12 4 17 28 21 25 20 23 26 1 1 28 10 12 18 28 12 25 5 24 21 22 25 27 17 23 0 20 28 2 21 8 1 1 27 10 24 5 27 5 4 1 2 5 20 17 14 26 2 0 8 4 14 5 21 24 6 12 8 28 23 0 24 2 21 6 19 7 12 7 21 20 7
6711669ms376841 1 1 0 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 0 1 1 018 19 2 27 2 12 16 18 27 27 4 28 13 1 28 18 1 10 27 27 24 16 23 27 10 18 27 19 4 2 19 19 4 16 27 6 20 8 0 16 18 8 19 4 8 19 13 16 19 20 24 16 24 16 20 6 11 14 18 7 4 0 7 14 13 11 0 14 28 25 7 6 6 14 23 23 20 23 20 16 10 0 8 25 4 13 19 5 27 25 28 6 11 25 2 13 27 6 0 28 19 16 25 18 4 0 4 24 27 13 19 4 27 12 12 8 11 7 17 8 10 25 17 19 4 16 21 11 4 17 12 21 11 10 23 8 1 13 28 14 11 27 11 25 25 5 24 16 18 25 24 17 23 0 8 11 5 16 13 13 13 17 10 24 23 27 5 4 23 21 1 20 19 10 4 2 17 10 4 10 5 21 24 19 12 8 28 23 0 2 2 21 6 6 7 12 7 21 20 10
6811665ms267411 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 018 19 24 22 2 12 15 28 22 28 4 28 13 1 19 18 1 20 22 0 18 24 5 27 10 27 27 19 4 2 19 26 19 16 27 6 20 9 27 16 18 9 6 4 20 26 3 2 14 14 24 16 0 16 8 6 25 9 22 7 4 0 7 8 13 25 0 14 28 25 18 12 19 9 23 23 20 23 8 16 10 0 9 25 4 10 4 5 27 7 28 19 7 25 2 3 11 12 0 28 28 15 12 18 4 0 4 16 22 3 19 4 27 12 12 20 28 7 17 8 26 11 28 4 26 16 2 12 26 0 27 24 25 20 23 9 3 3 28 14 12 27 28 11 25 23 27 16 27 11 24 17 23 0 8 11 2 15 13 13 13 27 10 2 23 27 5 4 1 16 1 8 28 14 26 5 0 20 19 10 2 15 2 19 11 8 11 23 17 24 0 15 6 4 7 12 7 15 10 9
6912052ms339921 0 1 0 1 1 1 1 1 1 1 1 1 1 0 0 1 0 1 1 1 1 1 1 1 1 1 1 1 018 19 2 27 5 12 21 27 18 11 4 28 10 13 6 18 23 8 22 0 18 24 23 24 23 18 27 19 4 2 19 19 19 16 27 6 20 8 24 21 7 9 6 26 20 19 8 21 19 10 27 24 0 16 8 6 11 9 22 7 4 0 7 9 20 11 23 10 6 25 7 12 19 9 10 23 20 23 8 24 23 0 26 25 4 13 19 2 27 7 11 6 25 25 2 20 28 6 2 28 28 21 12 7 4 0 4 22 22 20 26 4 27 11 12 20 28 18 10 8 20 11 28 19 26 16 2 11 4 0 28 21 11 20 23 20 13 13 0 10 6 22 11 25 25 5 16 21 27 25 24 10 10 0 20 11 2 16 13 13 13 27 10 24 5 27 5 19 13 21 5 20 28 20 26 2 27 10 26 10 5 2 24 19 12 8 27 23 0 21 2 21 4 4 7 12 7 2 10 9
7011963ms478661 0 1 1 0 1 1 0 1 1 0 1 1 0 1 0 1 1 1 1 1 0 1 1 0 1 1 1 1 022 6 2 18 2 12 16 11 22 28 9 28 23 3 6 18 3 20 27 28 18 16 5 0 23 27 22 14 19 2 19 19 26 16 27 6 20 9 16 16 25 9 6 26 8 19 3 16 19 14 27 16 0 16 8 6 11 9 18 25 26 0 25 8 20 11 5 14 19 25 27 11 6 9 23 23 20 23 8 16 23 5 9 25 26 20 19 5 27 25 28 19 25 25 2 3 18 6 17 28 28 16 25 18 6 2 26 16 22 3 19 26 27 12 12 8 11 11 17 8 9 11 14 19 26 16 0 12 26 0 11 16 12 20 5 8 3 3 17 23 12 22 11 18 25 5 27 2 18 25 0 17 23 17 8 11 5 16 3 3 3 0 23 2 23 27 5 26 3 2 5 20 28 14 26 2 0 14 26 23 2 16 2 28 6 8 28 23 17 16 2 2 6 19 25 11 25 2 23 9
7111776ms375841 0 1 0 1 1 0 0 0 1 1 1 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 1 1 027 19 2 27 2 12 2 27 27 27 4 28 10 23 19 27 13 20 22 0 22 16 5 24 10 27 27 28 4 5 19 19 4 16 27 12 14 20 24 16 11 9 12 4 9 26 13 2 14 14 24 16 24 16 9 19 11 20 22 25 4 0 12 10 13 11 5 14 19 25 25 12 19 9 5 23 20 5 20 16 10 0 9 25 26 10 19 5 27 25 11 28 25 25 0 13 11 19 2 28 17 2 11 25 26 24 19 27 22 13 19 26 27 11 12 20 11 25 14 20 26 11 0 19 9 16 0 11 26 17 28 24 11 20 23 9 20 13 28 14 25 22 11 25 25 5 16 16 22 25 27 28 23 0 13 28 5 16 13 13 23 17 10 24 5 27 5 4 13 16 5 20 19 14 4 2 24 20 4 20 5 16 0 28 12 13 28 10 0 2 2 2 19 4 22 12 25 16 10 9

对比分析

由上述两种算法结果可知,相对而言,SA的算法效率更高,而且结果更加优异。但是由于这两种算法都未做贪心优化,所以表现不佳,之后在进行改进。
完整代码详见Github

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值