题意:
给定一个x,让你找出最小的y,使得:
x&y>0
x^y>0
思路:
一眼贪
极端化,让y尽可能小:y=0
要让x&y>0且y尽可能小:把它最低位的1变成0
要让x^y<0且y尽可能小:把它最低位的0变成1
Code:
- #include
- using namespace std;
- //#define low(x) (x&(-x))
- int x,y;
- void solve(){
- scanf("%d",&x);
- int p=0;
- for(int i=0;i<=30;i++){
- if((x>>i)&1==1){
- p=i;
- break;
- }
- }
- y=0;
- y=y|(1<
- if((x^y)>0){
- printf("%d\n",y);
- return;
- }else{
- int ansi=0;
- for(int i=0;i<=30;i++){
- if(((x>>i)&1)==0){
- ansi=i;
- break;
- }
- }
- y=y|(1<
- printf("%d\n",y);
- }
- }
- int main(){
- //ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
- int T;
- scanf("%d",&T);
- while(T--) solve();
- return 0;
- }
总结:
细节:
lowbit是最低位为1所对应的值!不是位数!
位运算能加括号就加括号,因为优先级很容易搞错!
-
相关阅读:
微服务框架 SpringCloud微服务架构 20 RestClient 操作索引库 20.2 hotel 数据结构分析
HashMap 、LinkedHashMap 和TreeMap
计数类dp,完全背包,900. 整数划分
java计算机毕业设计疫情下发热门诊管理系统MyBatis+系统+LW文档+源码+调试部署
【初识AI】(一):ASR和NLP
ArkTS - HarmonyOS服务卡片(创建)
ABAP Data Types 和XSD Type 映射关系以及XSD Type属性
Linux下部署worldPress
下载神器-IDM使用教程及下载
网络安全(黑客)自学
-
原文地址:https://blog.csdn.net/weixin_62528401/article/details/126987714