zoukankan      html  css  js  c++  java
  • Codeforces Round #254 (Div. 2)D(预计)

    D. DZY Loves FFT
    time limit per test
    1 second
    memory limit per test
    256 megabytes
    input
    standard input
    output
    standard output

    DZY loves Fast Fourier Transformation, and he enjoys using it.

    Fast Fourier Transformation is an algorithm used to calculate convolution. Specifically, if ab and c are sequences with length n, which are indexed from 0 to n - 1, and

    We can calculate c fast using Fast Fourier Transformation.

    DZY made a little change on this formula. Now

    To make things easier, a is a permutation of integers from 1 to n, and b is a sequence only containing 0 and 1. Given a and b, DZY needs your help to calculate c.

    Because he is naughty, DZY provides a special way to get a and b. What you need is only three integers ndx. After getting them, use the code below to generate a and b.

    //x is 64-bit variable;
    function getNextX() {
        x = (x * 37 + 10007) % 1000000007;
        return x;
    }
    function initAB() {
        for(i = 0; i < n; i = i + 1){
            a[i] = i + 1;
        }
        for(i = 0; i < n; i = i + 1){
            swap(a[i], a[getNextX() % (i + 1)]);
        }
        for(i = 0; i < n; i = i + 1){
            if (i < d)
                b[i] = 1;
            else
                b[i] = 0;
        }
        for(i = 0; i < n; i = i + 1){
            swap(b[i], b[getNextX() % (i + 1)]);
        }
    }
    
    

    Operation x % y denotes remainder after division x by y. Function swap(x, y) swaps two values x and y.

    Input

    The only line of input contains three space-separated integers n, d, x (1 ≤ d ≤ n ≤ 100000; 0 ≤ x ≤ 1000000006). Because DZY is naughty, x can't be equal to 27777500.

    Output

    Output n lines, the i-th line should contain an integer ci - 1.

    Sample test(s)
    input
    3 1 1
    
    output
    1
    3
    2
    
    input
    5 4 2
    
    output
    2
    2
    4
    5
    5
    
    input
    5 4 3
    
    output
    5
    5
    5
    5
    4

    题意:RT

    思路:由于b序列一定仅仅含0或1,那么含0的是没有意义的

                直接for就好了,然后用一个数组is[]记录前多少个b序列为1的位置

                每次要找最大值的时候。假设is[]数组的个数小于一个常数。就枚举is数组

                否则直接从大到小枚举最大值就好了

  • 相关阅读:
    leetcode 175 Combine Two Tables join用法
    spark学习及环境配置
    html表格设计
    免费的论文查重网站
    php利用msqli访问数据库并实现分页,
    php利用href进行页面传值的正确姿势
    php+mysql时报错:Unknown column '' in 'field list'解决方案
    使用XMLHttpRequest解析json
    用自定义的函数将gps转换为高德坐标
    WeakHashMap回收时机
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/5205293.html
Copyright © 2011-2022 走看看