欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 锐评 > D. Equalization【Educational Codeforces Round 176 (Rated for Div. 2)】

D. Equalization【Educational Codeforces Round 176 (Rated for Div. 2)】

2025/10/25 14:27:51 来源:https://blog.csdn.net/2303_79310336/article/details/146406797  浏览:    关键词:D. Equalization【Educational Codeforces Round 176 (Rated for Div. 2)】

D. Equalization

在这里插入图片描述

思路:

好逆天的题
由题意可以发现将x、y右移直到完全相等时符合条件。
d p [ i ] [ j ] dp[i][j] dp[i][j] x x x右移 i i i位、 y y y右移 j j j位所需的最小代价,可以预处理一个二维的01背包dp。

代码:

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define endl '\n'
#define int long long
#define pb push_back
#define pii pair<int, int>
#define FU(i, a, b) for (int i = (a); i <= (b); ++i)
#define FD(i, a, b) for (int i = (a); i >= (b); --i)
const int MOD = 1e9 + 7;
const int INF = 0x3f3f3f3f;int dp[65][65];
void init() {memset(dp, 0x3f, sizeof(dp));dp[0][0] = 0;for (int k = 1; k <= 60; k++) {for (int i = 60; i >= 0; i--) {for (int j = 60; j >= 0; j--) {if (i >= k)dp[i][j] = min(dp[i][j], dp[i - k][j] + (1ll << k));if (j >= k)dp[i][j] = min(dp[i][j], dp[i][j - k] + (1ll << k));}}}
}void solve() {int x, y;cin >> x >> y;int ans = 1e9;for (int i = 0; i <= 60; i++) {for (int j = 0; j <= 60; j++) {if (x >> i == y >> j) {ans = min(ans, dp[i][j]);}}}cout << ans << endl;
}signed main() {int T = 1;cin >> T;init();while (T--) {solve();}return 0;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词