这道题就是按位贪心 关键在于三点: 1.设置两个初始变量,全1 n1 和 全0 n2,然后遍历所有的操作(全1 用 -1表示) 2.从高位往低位判断,如果这一位n1有1,再判断代价是否小于m,如果n2有1,则直接加 3.要使尽可能大,优先考虑n2中有1的情况 plus:不知道为什么i不能从32开始遍历而是从30开始遍历(多几位会有影响吗? ">void gkd() { std::ios::sync_with_stdio(0); std::cin.tie(0);std::cout.tie(0);} #define int long long void solve(){ int n,m; std:...