We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Problem
给定一个正整数数组A。规定以下两种操作:
每一个操作可以执行任意次。问在若干次操作之后,max(A[]) - min(A[])的最小值。
max(A[]) - min(A[])
首先研究对A[i]的两种操作。
如果A[i]是偶数,那么它只能除2,直到结果为奇数为止。如果A[i]是奇数,它只能进行一次乘2操作,因为乘2之后A[i]就变成偶数了。
所以对于所有的数,其变化范围有:
因此数组变化后的上下界是确定的。 假设已经确定了变化后数组的最小值x。所以对于A[i] < x,则必须进行扩大操作,使其等于大于等于x的最小值。这样一来,我们确定了下界,同时使上界尽可能小,保证了解是最优的。
实现方法如下:
首先把A[i]化为其最小值,每次取出最小值做为下界,最大值做为上界,求当前上下界的差。 然后:
Code
The text was updated successfully, but these errors were encountered:
No branches or pull requests
Description
Problem
给定一个正整数数组A。规定以下两种操作:
每一个操作可以执行任意次。问在若干次操作之后,
max(A[]) - min(A[])
的最小值。Solution
首先研究对A[i]的两种操作。
如果A[i]是偶数,那么它只能除2,直到结果为奇数为止。如果A[i]是奇数,它只能进行一次乘2操作,因为乘2之后A[i]就变成偶数了。
所以对于所有的数,其变化范围有:
因此数组变化后的上下界是确定的。
假设已经确定了变化后数组的最小值x。所以对于A[i] < x,则必须进行扩大操作,使其等于大于等于x的最小值。这样一来,我们确定了下界,同时使上界尽可能小,保证了解是最优的。
实现方法如下:
首先把A[i]化为其最小值,每次取出最小值做为下界,最大值做为上界,求当前上下界的差。
然后:
Code
The text was updated successfully, but these errors were encountered: