题目链接:[KSN2021] Binary Land


我们可以发现,如果一个数字最高位之后有一个0,那么是可以连向某个对应位置最高位为1的数字。

然后这个不难想到可以对每一个二进制位建立虚点。

我们发现如果这个虚点有作用,那么一定是某个数字最高位是这个,并且某个数字最高位之后某个0是这个。然后并查集维护连通性即可。


AC代码:

#pragma GCC optimize("-Ofast","-funroll-all-loops")
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=2e5+10;
int n,a[N],b[N],f[N],vis[N];
int find(int x){return x==f[x]?x:f[x]=find(f[x]);}
void merge(int x,int y){x=find(x),y=find(y);if(x!=y) f[x]=y,b[y]+=b[x];
}
signed main(){cin>>n;for(int i=1;i<=n;i++) cin>>a[i];for(int i=1;i<=n;i++) cin>>b[i];for(int i=1;i<N;i++) f[i]=i;for(int i=1;i<=n;i++){int mx=0;for(int j=0;j<=30;j++) if(a[i]>>j&1) mx=j;vis[mx]|=1;for(int j=0;j<mx;j++) if(!(a[i]>>j&1)) vis[j]|=2;}  for(int i=1;i<=n;i++){int mx=0;for(int j=0;j<=30;j++) if(a[i]>>j&1) mx=j;if(vis[mx]==3) merge(i,n+mx+1);for(int j=0;j<mx;j++) if(!(a[i]>>j&1)&&(vis[j]==3)) merge(i,n+j+1);}for(int i=1;i<=n;i++) printf("%lld\n",b[find(i)]);return 0;
}

[KSN2021] Binary Land相关推荐

  1. [KSN2021] Binary Land题解(位运算应用)

    P7973 [KSN2021] Binary Land [KSN2021] Binary Land 题目描述 给定一张 N N N 个点的图,每个点有权值 A i A_i Ai​ 和价值 B i B_ ...

  2. P3855 [TJOI2008]Binary Land

    难度:4 知识点:广度优先搜索 又解决一道,这道题首先状态很好想,就是一个四维数组,两个点的坐标共四个数来组成一个状态,起点状态终点状态也显而易见,然后是蜘蛛网,这个东西有点迷惑性,题目说的是如果踩了 ...

  3. 【HDU - 5050 】Divided Land (Java大数,大数进制转换,大数gcd)

    题干: It's time to fight the local despots and redistribute the land. There is a rectangular piece of ...

  4. HDU 5050 Divided Land (二进制上的最大公约数)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5050 题面: Divided Land Time Limit: 8000/4000 MS (Java/ ...

  5. 107. Binary Tree Level Order Traversal II

    题目 Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from l ...

  6. 102. Binary Tree Level Order Traversal

    题目 Binary Tree Level Order Traversal 层次遍历二叉树 链接 Given a binary tree, return the level order traversa ...

  7. Binary XML file line #8: Error inflating class android.support.v7.widget.RecyclerView

    今天创建了一个 demo ,然后就是复制RecyclerView 过去, 到最后完成运行的时候发现 系统奔溃了, 然后 提示 Binary XML file line #8: Error inflat ...

  8. Android运行时候报错:android.view.InflateException: Binary XML file line #19: Binary XML file lin

    Android运行时候报错:android.view.InflateException: Binary XML file line #19: Binary XML file lin 这个问题自己大致在 ...

  9. android.view.InflateException: Binary XML file line #7: Binary XML file line #7

    错误如下 11-21 08:19:44.040 3608-3608/com.leon.oldrecyclerview E/AndroidRuntime: FATAL EXCEPTION: main   ...

最新文章

  1. 【FFmpeg】AVPacket的使用详解
  2. GraLSP | 考虑局部结构模式的GNN
  3. metaProdigal:宏基因组序列中的基因和翻译起始位点预测
  4. android学习之-简单对话框
  5. 为什么每个程序员都要学C语言的五个理由
  6. LinkedList源码分析(基于Java8)
  7. vector 和 list 的区别,应用
  8. openwrt信号弱掉线_斐讯 FIR151M 频繁掉线(OpenWRT解决方案)
  9. 旧知识打造新技术--AJAX学习总结
  10. JAVA写同步栈_tomcat实现的同步队列和同步栈
  11. ffmpeg添加到环境变量_Windows + MSVC环境编译ffmpeg
  12. pandas 使用把dataframe变为series
  13. CF1152 F. Neko Rules the Catniverse (dp)
  14. 【书籍推荐】深入解析Windows操作系统(第4版)
  15. 开源项目工时系统_工时统计系统 - 服务端
  16. 信息与通信的数学基础——Mathematic入门
  17. 网页打印怎样去掉网址
  18. vscode 编写html 浏览器显示 空白 白屏
  19. 程序员编程艺术第一 三十八章集锦与总结,及Github地址 PDF下载
  20. POJ3107 Godfather 树形dp+模拟vector

热门文章

  1. FSM学习笔记20210905
  2. 递归——迭代法求平方根
  3. 【Python入门】文件创建
  4. 计算机教案word格式模板,Word 教案
  5. Gitee多人协作进行项目开发的详细流程(创建多人仓库)
  6. For、While循环语句
  7. GeniE 实用教程(五)荷载与边界
  8. ABAP开发关键字总结
  9. python命令打印word文档_使用DOS命令如何打印Word文档
  10. 周记From 2016/8/17 to 2016/8/23