当前位置: 首页 > news >正文

(应该写的比较清晰)D2. Max Sum OR (Hard Version)

自己写的时候码力不足,比较痛苦,但是没找到写的简单清晰的代码可以参考
于是憋了一下午写了一份,供他人参考

#include<iostream>
#include<vector>
#include<queue>
#include<tuple>
#include<map>
#include<array>
#include<algorithm>
#include<stack>
#include<bitset>
#include<set>
using namespace std;
#define ffp(x,y,z) for(int (x)=(y);(x)<=(z);(x++))
#define ll long long int
#define q_ read()
#define pii pair<int,int>
const ll MOD = 998244353;
const ll lINF = 0x3f3f3f3f3f3f3f3f;
const int iINF = 0x3f3f3f3f;
inline ll read()
{ll x = 0, f = 1;char ch = getchar();while (ch < '0' || ch>'9'){if (ch == '-')f = -1;ch = getchar();}while (ch >= '0' && ch <= '9')x = x * 10 + ch - '0', ch = getchar();return x * f;
}void solve()
{ll l = q_;ll r = q_;//递归求解//从大到小来填数字ll base = l-1;vector<ll>ans(r - base +1, 0);ffp(i, 1, r - base){ans[i] = i + base;}auto find = [&](auto&& find, ll L, ll R, ll bit)->void{if (R <= L) { return; }//查看bit是否在L和R之内 数字为连续,即判断,当前位在L到R是否符合一半一半的特征/* ll va = 1ll <<bit;while(check(L,R,bit) != 1){bit--;}va += 1ll << bit;*/ll va = 0;for (ll i = 32; i >= 0; i--){ll b = 1ll << i;if (((b & L) == 0) && ((b & R) != 0)){va |= b;break;}if (((b & L) != 0) && ((b & R) != 0)){va |= b;}}//查看左边和右边的数量ll cnt = min(R - va + 1,va - L);ffp(i, 1, cnt){swap(ans[va + i - 1 - base], ans[va - i - base]);}find(find, L, va - cnt - 1, bit - 1);find(find, va + cnt, R, bit - 1);};find(find, l, r, 33);ll res = 0;ffp(i, 1, r - l + 1){res += (ans[i] | (i + base));} cout << res << endl;ffp(i, 1, r - l + 1){cout << ans[i] << ' ';}cout << endl;return;
}int main()
{int t = 1;t = q_;while (t--){solve();}return 0;
}
http://www.hskmm.com/?act=detail&tid=13701

相关文章:

  • Linux运维
  • day001
  • 第一次编程作业
  • 7
  • Xilnx FPGA 资源结构
  • 2025年录音转文字技术解析与实用工具评测 - 指南
  • CF2147H Maxflow GCD Coloring 题解
  • Uiverse.io 2.0 震撼发布:新增 3000+ 动效组件!适配 React、Vue
  • 问题及解决方法
  • 2025.9.22
  • 第一天
  • (1-10-2)MyBatis 进阶篇 - 教程
  • 联想拯救者无法登录当前账户
  • WPF二合一平板电脑上屏幕旋转时获取屏幕宽高问题
  • 代码中的善意:构建人性化的软件开发文化
  • 超级恶心的题面 [USACO21OPEN] Portals G
  • 如何隐藏一个元素
  • 昆仑通态触摸屏保存参数到内部存储器并读取的方法成都控制器开发提供
  • helloword
  • 使用reCAPTCHA提升WordPress网站安全性 - 指南
  • 软工9.22
  • 在控制台执行可列出所有placeholder样式
  • 今日总结
  • 9/22
  • 对于一门古老东欧玄学的初步研究的简要报告
  • Codeforces 2127 D(图论,组合数学,DFS,分类讨论)
  • Java学习笔记:从三个实验看编程思维的锤炼
  • 题解:AT_arc068_d [ARC068F] Solitaire
  • Codeforces Round 1051 (Div. 2) D1D2题解
  • JSP