位运算#蓝桥杯

位运算#蓝桥杯

文章目录

  • 位运算#蓝桥杯
    • 1、小蓝学位运算
    • 2、异或森林
    • 3、位移
    • 4、笨笨的机器人
    • 5、博弈论

1、小蓝学位运算

在这里插入图片描述

#include<bits/stdc++.h>
using namespace std;
using LL = long long;
const LL N = 1e9+7; 
template<int kcz>
struct ModInt {
#define T (*this)int x;ModInt() : x(0) {}ModInt(int y) : x(y >= 0 ? y : y + kcz) {}ModInt(LL y) : x(y >= 0 ? y % kcz : (kcz - (-y) % kcz) % kcz) {}inline int inc(const int &v) {return v >= kcz ? v - kcz : v;}inline int dec(const int &v) {return v < 0 ? v + kcz : v;}inline ModInt &operator+=(const ModInt &p) {x = inc(x + p.x);return T;}inline ModInt &operator-=(const ModInt &p) {x = dec(x - p.x);return T;}inline ModInt &operator*=(const ModInt &p) {x = (int) ((LL) x * p.x % kcz);return T;}inline ModInt inverse() const {int a = x, b = kcz, u = 1, v = 0, t;while (b > 0)t = a / b, std::swap(a -= t * b, b), std::swap(u -= t * v, v);return u;}inline ModInt &operator/=(const ModInt &p) {T *= p.inverse();return T;}inline ModInt operator-() const {return -x;}inline friend ModInt operator+(const ModInt &lhs, const ModInt &rhs) {return ModInt(lhs) += rhs;}inline friend ModInt operator-(const ModInt &lhs, const ModInt &rhs) {return ModInt(lhs) -= rhs;}inline friend ModInt operator*(const ModInt &lhs, const ModInt &rhs) {return ModInt(lhs) *= rhs;}inline friend ModInt operator/(const ModInt &lhs, const ModInt &rhs) {return ModInt(lhs) /= rhs;}inline bool operator==(const ModInt &p) const {return x == p.x;}inline bool operator!=(const ModInt &p) const {return x != p.x;}inline ModInt qpow(LL n) const {ModInt ret(1), mul(x);while (n > 0) {if (n & 1)ret *= mul;mul *= mul, n >>= 1;}return ret;}inline friend std::ostream &operator<<(std::ostream &os, const ModInt &p) {return os << p.x;}inline friend std::istream &operator>>(std::istream &is, ModInt &a) {LL t;is >> t, a = ModInt<kcz>(t);return is;}static int get_mod() {return kcz;}inline bool operator<(const ModInt &A) const {return x > A.x;}inline bool operator>(const ModInt &A) const {return x < A.x;}
#undef T
};
using Z=ModInt<N>;
int main(){ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);int n;cin>>n;if(n>8192){cout<<"0\n";return 0;}vector<int> a(n),sum_xor(n+1,0);for(auto &x:a)cin>>x;/*为什么使用前缀异或和? 快速计算任意区间的异或结果有了前缀异或和,如果要计算区间 [l, r] 的异或结果只需要通过 sum_xor[r+1] ^ sum_xor[l] 即可得到结果因为在l之前的数据包都是一样的,异或结果都是0 */Z ans = 1;for(int i=1;i<=n;i++)sum_xor[i]=sum_xor[i-1]^a[i-1];for(int i=1;i<=n;i++){for(int j=i;j<=n;j++){ans*=sum_xor[i-1]^sum_xor[j];}} cout<<ans;return 0;
}

2、异或森林

在这里插入图片描述

#include<bits/stdc++.h>
using namespace std;
int main(){ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);int n;cin>>n;vector<int> a(n),sum_xor(n+1,0);for(auto &x:a)cin>>x;for(int i=1;i<=n;i++)sum_xor[i]=sum_xor[i-1]^a[i-1];/*是需要咱们找到连续子数组的数量n * (n + 1) / 2 表示长度为1的子数组有 n 个长度为2的子数组有 n-1 个,以此类推最终得到总共 n * (n + 1) / 2 个子数组所以,n(n+1)/2 = 连续子数组个数 */int ans = n * (n + 1) / 2;// 记录每个前缀异或和的次数 vector<int> cnt(4 * n + 1);cnt[0] = 1;/*n  x|n  n/x|n if x=n/x,那么说明这个n的因数就是奇数个了,因为这两个数一样所以·判断条件就是 x^2=n因为 奇数 个好判断,所以我们列举出来所有可能的数量就是ans让 ans 减去奇数个的就行了 */ for (int r = 1; r <= n; r++) {for (int i = 0; i * i <= 2 * n; i++) {ans -= cnt[sum_xor[r] ^ (i * i)];}cnt[sum_xor[r]]++;}cout << ans << '\n';return 0;
}

3、位移

在这里插入图片描述

#include<bits/stdc++.h>
using namespace std;
int main(){ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);int n;cin>>n;while(n--){unsigned int a,b;cin>>a>>b;while(!(a&1))a>>1;while(!(b&1))b>>1;if(a<b){cout<<"No\n";return 0;} // 因为输入的是10进制,所以我们要转化这两个数的二进制状态vector<int> A,B;while(a>0){A.push_back(a&1);a=>>1;}while(b>0){B.push_back(b&1);b=>>1;}  //判断 b 是否在 a 里面int n = (int) A.size(), m = (int) B.size();// 字符串匹配 for (int i = 0; i + m - 1 < n; i++) {int fl = 0;for (int j = 0; j < m; j++) {// 对于 A 来讲 肯定是 每次移动,B 从头开始的 if (A[i + j] != B[j]) {fl = 1;break;}}}if (!fl) {cout << "Yes\n";return 0;}cout << "No\n";} return 0;
}

4、笨笨的机器人

在这里插入图片描述

#include<bits/stdc++.h>
using namespace std;
int main(){ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);int n;cin>>n;vector<int> a(n);for(auto &x:a)cin>>x; int cnt = 0;// 枚举集合,此时 S 的每一位表示第 i 个数是加还是减// 为了生成长度为 n 的二进制数的所有可能情况// 通过这种方法来穷举所有的子集合for (int S = 0; S < 1 << n; S++) {int p = 0;// 求第 i 位是加还是减for (int i = 0; i < n; i++) {// S >> i & 1 的意思是先做 S >> i,再 & 1,含义是 S 的第 i 位是不是 1// S >> i 等价于 S / 2 ^ i 下取整,意味着去除了最后的 i 位,此时个位数 (二进制) 是原数第 i 位// x & 1 等价于与 1 取 and,也就是只有 x 的个位与 1 做了 and,即 x 的个位数是不是 1if (S >> i & 1)p += a[i];else p -= a[i];}if (p % 7 == 0)cnt++;}double ans = (double)cnt/(1<<n);ans = round(ans * 1e4) / 1e4;cout<<fixed<<setprecision(4)<<ans;return 0;
}

在这里插入图片描述

5、博弈论

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/540718.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小程序(H5)连接微信公众号

报错信息 配自定义菜单 微信公众号没有配“白名单” 配业务域名

echats柱状图\折线图:数量级自动调整;动态设置多维度

通过构造echarts返回体EchartsData.class&#xff0c;在返回体内开发功能代码&#xff0c;实现echarts数据的改动。 特点&#xff1a; 1、y轴数据的数量级自动调整&#xff0c;使图表变化趋势更明显&#xff1b; 2、支持多维度数据【可以有1-N多个维度】 // EchartsData对象构…

Yolo系列算法-理论部分-YOLOv5

0. 写在前面 YOLO系列博客&#xff0c;紧接上一篇Yolo系列算法-理论部分-YOLOv4-CSDN博客 1. YOLOv5-美而全的产品 YOLOv5的诞生&#xff0c;直接将目标检测算法向终局推进&#xff0c;Ultralytics团队在COCO数据集上预训练的目标检测架构和模型直接开源&#xff0c;其中包含了…

世纪互联版Microsoft 365应用无法跳转正确登录门户

很多购买世纪互联&#xff08;国内版&#xff09;Microsoft 365&#xff08;Office 365&#xff09;的用户有时候会遇到在Office应用登录账号时&#xff0c;登陆页面跳转到国际版Microsoft Entra ID&#xff08;Azure AD&#xff09;页面&#xff08;没有备案号&#xff09;&am…

Supervisor,一个超酷的 Python 库!

大家好&#xff0c;今天为大家分享一个超酷的 Python 库 - supervisor。 Github地址&#xff1a;https://github.com/Supervisor/supervisor 在大型项目中&#xff0c;经常需要管理多个进程&#xff0c;确保它们能够稳定运行并协同工作。Python提供了许多工具和库来帮助实现进…

LeetCode438题(无敌双指针——滑动窗口)

找到字符串中所有字母异位词 给定两个字符串 s 和 p&#xff0c;找到 s 中所有 p 的 异位词 的子串&#xff0c;返回这些子串的起始索引。不考虑答案输出的顺序。 异位词 指由相同字母重排列形成的字符串&#xff08;包括相同的字符串&#xff09;。 示例 1: 输入: s "…

HTML案例-2.标签综合练习

目录 效果 知识点 1.图像标签 2.链接标签 3.锚点定位 4.base标签 源码 页面1 页面2 效果 知识点 1.图像标签 <img src="图像URL" /> 单标签 属性 属性值 描述 src URL 图像的路径 alt 文本

如何实现固定公网地址远程SSH连接Linux Deepin系统

文章目录 前言1. 开启SSH服务2. Deppin安装Cpolar3. 配置ssh公网地址4. 公网远程SSH连接5. 固定连接SSH公网地址6. SSH固定地址连接测试 前言 Deepin操作系统是一个基于Debian的Linux操作系统&#xff0c;专注于使用者对日常办公、学习、生活和娱乐的操作体验的极致&#xff0…

(网络安全)一款强大的逆向分析工具,开源!

工具介绍 Ghidra 是由美国国家安全局&#xff08;NSA&#xff09;研究部门开发的软件逆向工程&#xff08;SRE&#xff09;套件&#xff0c;用于支持网络安全任务。包括一套功能齐全的高端软件分析工具&#xff0c;使用户能够在各种平台(Windows、Mac OS和Linux)分析编译后的代…

Unity PS5开发 天坑篇 之 申请开发者与硬件部署01

腾了好几天终于把PS5开发机调试部署成功, 希望能帮到国内的开发者, 主机游戏PlayStation/Nintendo Switch都是比较闭塞的&#xff0c;开发者账号是必须的。 开发环境有两个部分&#xff0c;一是DEV Kit 开发机, TEST Kit测试机两部分组成&#xff0c;二是Unity的支持库(安装后…

高并发缓存策略大揭秘:面试必备的缓存更新模式解析

在高并发场景中&#xff0c;缓存能抵挡大量数据库查询&#xff0c;减少数据库压力&#xff0c;对于缓存更新通常有以下几种模式可以选择&#xff1a; cache asideread/write throughwrite behind caching cache aside模式 Cache-aside模式是一种常用的用于管理缓存的模式。它…

【Python】进阶学习:一文了解NotImplementedError的作用

【Python】进阶学习&#xff1a;一文了解NotImplementedError的作用 &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程&#x1f448; 希望…