CF1903D1 题解
思路
若 的与结果中第 位是 ,则必须每个 的第 位都是 。然后我们只需要从高位开始枚举 ,如果次数足够那就操作,否则就不操作。
代码
# include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair <int, int> pii;
int n, q;
ll k, a[100005], b[100005], c[100005], s, ans;
int main () {
ios::sync_with_stdio (0);
cin.tie (0);
cout.tie (0);
cin >> n >> q;
for (int i = 0; i < n; ++ i)
cin >> a[i];
while (q --) {
cin >> k;
for (int i = 0; i < n; ++ i)
b[i] = a[i];
for (int i = 60; ~i; -- i) {
s = 0;
for (int j = 0; j < n; ++ j)
if (b[j] >> i & 1)
c[j] = b[j];
else {
c[j] = (b[j] >> i) + 1 << i;
s += c[j] - b[j];
if (s > k)
goto end;
}
k -= s;
for (int j = 0; j < n; ++ j)
b[j] = c[j];
end:
;
}
ans = b[0];
for (int j = 1; j < n; ++ j)
ans &= b[j];
cout << ans << '\n';
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】