【题解】CF1554 Mikasa
2021/7/30 23:10:14
本文主要是介绍【题解】CF1554 Mikasa,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
题意
给你两个整数 n
和 m
,求集合的 mex
。n,m<=1e9
。
Solution:
考点:二进制+模拟。
本人打的 数位 dp
。反正打着很恶心的模拟。
看了标算后豁然开朗:n^x=k <=> n^k<=m
。所以我们只需要检查第一个 n^k>m
的数即可。因为要 k
最小,所以从高到低枚举,取 n^k>=m+1
。
- 如果
n>=m+1
,那么k
取0
都能满足 ,直接break;
- 如果最高位上的数字相同,此时最高位取
0
满足n[i]>=p[i]
- 如果最高位
n[i]=0,p[i]=1
,此时最高位只能填1
- 如果最高位
n[i]=1,p[i]=0
,根据上述条件直接break;
看来还是缺乏思考。
#include<bits/stdc++.h> #define INF 0x3f3f3f3f #define ll long long #define PII pair<ll,int> #define All(a) a.begin(),a.end() using namespace std; ll n,m; int main() { ll T; cin>>T; while(T--) { cin>>n>>m; ll res = 0; m++; for(int i = 30; i >= 0 && n < m; i --) { ll t1 = (n>>i) & 1, t2 = (m>>i) & 1; if(t1 == t2) continue; if(t2) res += 1<<i, n |= 1<<i; } cout<<res<<endl; } }
这篇关于【题解】CF1554 Mikasa的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-23新能源车企如何通过CRM工具优化客户关系管理,增强客户忠诚度与品牌影响力
- 2024-12-23原创tauri2.1+vite6.0+rust+arco客户端os平台系统|tauri2+rust桌面os管理
- 2024-12-23DevExpress 怎么实现右键菜单(Context Menu)显示中文?-icode9专业技术文章分享
- 2024-12-22怎么通过控制台去看我的页面渲染的内容在哪个文件中呢-icode9专业技术文章分享
- 2024-12-22el-tabs 组件只被引用了一次,但有时会渲染两次是什么原因?-icode9专业技术文章分享
- 2024-12-22wordpress有哪些好的安全插件?-icode9专业技术文章分享
- 2024-12-22wordpress如何查看系统有哪些cron任务?-icode9专业技术文章分享
- 2024-12-21Svg Sprite Icon教程:轻松入门与应用指南
- 2024-12-20Excel数据导出实战:新手必学的简单教程
- 2024-12-20RBAC的权限实战:新手入门教程