zoukankan      html  css  js  c++  java
  • ZOJ 1539 L-Lot

    https://vjudge.net/contest/67836#problem/L

    Out of N soldiers, standing in one line, it is required to choose several to send them scouting. 
    In order to do that, the following operation is performed several times: if the line consists of more than three soldiers, then all soldiers, standing on even positions, or all soldiers, standing on odd positions, are taken away. The above is done until three or less soldiers are left in the line. They are sent scouting. Find, how many different groups of three scouts may be created this way.

    Note: Groups with less than three number of soldiers are not taken into consideration.

    0 < N <= 10 000 000

    Input

    The input file contains the number N.

    Process to the end of file.


    Output

    The output file must contain the solution - the amount of variants.


    Sample Input

    10
    4

    Sample Output

    2
    0

    时间复杂度:$O(n)$

     代码1:

    #include<bits/stdc++.h>
    using namespace std;
    
    const int maxn = 1e7 + 10;
    int num[maxn];
    
    int main()
    {
        for(int i = 1; i <= 10000000; i ++) {
            if(i < 3) num[i] = 0;
            else if(i == 3) num[i] = 1;
            else if(i % 2 == 0) num[i] = 2 * num[i / 2];
            else num[i] = num[i / 2] + num[i / 2 + 1];
        }
    
        int n;
        while (~scanf("%d", &n))
            printf("%d
    ", num[n]);
        return 0;
    }
    

     

  • 相关阅读:
    HDU_1242_Rescue
    HDU_1175_连连看
    HDU_1072_Nightmare
    HDU_2544_最短路
    POJ_2195_Going Home
    POJ_3565_Ants
    KM算法(Kuhn-Munkres)
    POJ_2536_Gopher II
    ODATA 云驱动 http://www.cdata.com/cloud/
    Wijmo 5 与Breeze 的组合,及与METRONIC 的集成
  • 原文地址:https://www.cnblogs.com/zlrrrr/p/9529244.html
Copyright © 2011-2022 走看看