小编Nik*_*nia的帖子

两个球员网格遍历游戏

给出M * N两个球员p1p2网格的网格和位置.有n个球放在网格上的不同位置.让这些球的位置B(1), B(2), B(3) ..., B(n).

我们需要计算选择所有球所需的最小曼哈顿距离.球应该在如果即升序采摘B(i)的前采摘B(j)如果i < j.

考虑下面的示例情形:
p1 = (1, 1) p2 = (3, 4) 让我们考虑球的位置作为 B(1) = (1, 1), B(2) = (2, 1), B(3) = (3, 1), B(4) = (5, 5)
输出5因为p1会先选择B(1), B(2), B(3)p1将选择B(4)

我的方法
,我做了贪婪的 方法和计算距离p1,并p2从给定的球B(i)(从开始i = 1 to …

java algorithm math dynamic-programming greedy

7
推荐指数
1
解决办法
511
查看次数

需要帮助来理解此代码以找到给定数字中1的位置

以下代码帮助我们找到给定数字中一位的位置:

    int n = in.nextInt();
    for (int d = 30; d >= 0; d--){
        if (n << ~d < 0){
            System.out.print(d + " ");
        }
    }
Run Code Online (Sandbox Code Playgroud)

例如:如果n = 5,则其二进制表示为101,并且1s位于第0和第2位置,因此输出将为2 0.

更多例子:

n        Output
8        3
149      7 4 2 0
Run Code Online (Sandbox Code Playgroud)

我无法理解此代码的含义:

n << ~d < 0.
Run Code Online (Sandbox Code Playgroud)

我知道右移和恭维的概念,但想知道当n位置设置有位时,这个特定表达式如何评估为负数d.

java math bit-manipulation bit-shift

1
推荐指数
1
解决办法
137
查看次数

java中获取输入的快速方法有哪些?

在Java中,我使用标准ScannerBufferedReader类进行输入,例如:

Scanner sc=new Scanner(System.in);
int a=sc.nextInt();
Run Code Online (Sandbox Code Playgroud)

或者

BufferedReader br=new BufferedReader(new InputStreamReader(System.in));

int a=Integer.parseInt(br.readLine());
Run Code Online (Sandbox Code Playgroud)

但是像这样获取输入需要大量的运行时间。我想知道更快的获取输入的方法。提前致谢

编辑:我见过像 uwi 这样的顶级 java 程序员,他们以非常不同的方式接受输入。他们有点创建自己的读者类别。我不明白他们的程序如何在运行时变得更快。

java bufferedreader java.util.scanner inputstreamreader

0
推荐指数
1
解决办法
3470
查看次数

求一个数字的最小绝对差值,其形式为b ^ x,其中b,x> 1

考虑一个70最接近的数字是64ie 的例子2^6.所以最小绝对差异是6.
什么是解决此类问题的好方法(lg n时间复杂度)?
编辑:bxintegers
编辑:1 < n < 10^9这里n是它的最小绝对差已经被发现的数量.假设q查询即将到来1 < q < 10^5

algorithm math

0
推荐指数
1
解决办法
238
查看次数