位运算#蓝桥杯

位运算#蓝桥杯

文章目录

  • 位运算#蓝桥杯
    • 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.mzph.cn/news/745840.shtml

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

相关文章

IO流(一)

前置知识&#xff1a;字符集 常见字符集 ASCII字符集:只有英文、数字、符号等&#xff0c;占1个字节GBK字符集:汉字占2个字节&#xff0c;英文、数字占1个字节UTF-8字符集:汉字占3个字节&#xff0c;英文、数字占1个字节 Unicode字符集(统一码&#xff0c;也叫万国码) Unicode…

【Redis】Redis常用命令之Hash

1.hset&#xff1a;设置hash中指定的字段&#xff08;field&#xff09;的值&#xff08;value&#xff09;。 HSET key field value [field value ...]时间复杂度&#xff1a;插⼊⼀组field为O(1),插⼊N组field为O(N)。 返回值&#xff1a;添加的字段的个数。 2.hget&#xf…

LUA语法复习总结

文章目录 简记变量数据类型运算符算术运算符关系运算符逻辑运算符杂项运算符 列表(表)表格操作表连接插入和删除排序表 模块元表__index 元方法实例 总结__newindex 元方法实例实例 为表添加操作符实例 __call 元方法实例 __tostring 元方法实例 简记 lua下标从1开始迭代器pai…

Linux学习笔记(一)Linux基本指令

文章目录 前言目录常见命令1. pwd 打印当前所在路径2. cd 改变路径、切换路径3. 家目录 回到顶级目录4. 当前路径和上一路径5. 上一次路径6. 绝对路径和相对路径7. ls 列出目录内容8. mkdir 创建目录9. rmdir 删除目录10. touch 创建文件11. mv 修改文件目录、移动路径12. cp 复…

一口吃掉Linux基础操作

一般在windows上面想要操作Linux系统就需要装软件搞一个虚拟机&#xff0c;我用的是Ubuntu22&#xff0c;就是Linux的发行版.安装Ubuntu的过程比较复杂&#xff0c;最重要的一点是安装时要断网&#xff0c;否则会很慢。 Ubuntu 配置指南 — 地震“学”科研入门教程 先介绍一个…

光伏便携式EL检测仪是什么?—科技助农

光伏便携式EL监测仪是一种专门用于检测光伏电池组件性能的高效、实用的设备。它利用电致发光&#xff08;Electroluminescence&#xff0c;EL&#xff09;原理&#xff0c;通过检测光伏板在受到光照后产生的电流所激发出的光线&#xff0c;来评估光伏板的性能。这种设备通常具有…

C++初阶:2_类与对象(上)

类与对象(上) 一.面向过程和面向对象初步认识 C语言是面向过程的&#xff0c;关注的是过程&#xff0c;分析出求解问题的步骤&#xff0c;通过函数调用逐步解决问题。 C是基于面向对象的&#xff0c;关注的是对象&#xff0c;将一件事情拆分成不同的对象&#xff0c;靠对象之…

【DAY10 软考中级备考笔记】数据结构 图

数据结构 图 3月11日 – 天气&#xff1a;晴 晚上无线网络突然不能用了&#xff0c;花费好久弄这个&#xff0c;耽误了一些时间 1. 图的定义 这里需要注意完全图的定义&#xff0c;以及完全图的边数 这里需要注意连通图和连通分量的概念。 2. 图的存储结构 图有两种存储结构&a…

ms office学习记录:Word㈣ 布局设计引用选项卡 对应配套作业㈤

⒈页面设置 &#xff08;主要考查页面设置对话框&#xff09; 页码范围&#xff1a;对称页边距/拼页&#xff08;在一张纸上从左往右打印两页内容&#xff09; 行号可在两个位置设置 若找不到规定纸张大小&#xff0c;则文件→打印→更换驱动打印机 ⒉页面背景 页面颜色&a…

Java操作Sql语句 出现迭代死循环 (Bug排查)

目录 1. 问题所示2. 原理分析3. 解决方法4. 彩蛋1. 问题所示 Java执行Sql语句来查询一些数据的时候 虽说数据量很大,但是查询过程中一直迭代查询 截图如下所示: 2. 原理分析 至于迭代死循环,可能是不满足的条件也进入查询(本身我的数据量就很大) 主要可能引起的两个原…

python使用词袋模型将句子向量化,使用KNN进行文本分类

要使用词袋模型将句子向量化&#xff0c;并使用KNN进行分类&#xff0c;你可以使用Python的sklearn库。以下是一个简单的例子&#xff1a; 加载数据集文本预处理&#xff08;如分词、去除停用词等&#xff09;使用词袋模型进行向量化使用KNN进行训练和分类 首先&#xff0c;确…

RockChip Android13 修改U盘挂载目录

环境:Android13 安卓默认U盘挂载目录为设备UUID,如下所示: /dev/block/vold/public:8,0 on /mnt/media_rw/1E46712C467105B5 type fuseblk (rw,dirsync,nosuid,nodev,noatime,user_id=0,group_id=0,default_permissions,allow_other,blksize=4096) /dev/fuse on /mnt/user/…

自动化运维技术与工具整合

以下这些自动化运维技术与工具覆盖了软件开发和运维的多个关键领域&#xff1a;自动化配置管理、容器化、容器编排、监控与可视化、自动化构建与部署、基础设施及应用配置管理、性能监控&#xff0c;以及日志分析。Ansible 简介: Ansible 是一个开源的自动化平台&#xff0c;用…

C++/CLI学习笔记7(快速打通c++与c#相互调用的桥梁)

3.11 操作符和表达式 操作符说明=赋值操作符 a=b=0;+,-,*,/,%,+=,-=,*=,/=,%=,++,--算术操作符 int a,b,c; a=b=c-0; b=++a; c=b-a+b*a; ... >,>=,<,<=,==,!=关系操作符 a > b // a大于b就返回true a >= b // a大于或等于b就返回true a < b //a小于b就返…

C#/WPF 清理任务栏托盘图标缓存

在我们开发Windows客户端程序时&#xff0c;往往会出现程序退出后&#xff0c;任务还保留之前程序的缓存图标。每打开关闭一次程序&#xff0c;图标会一直增加&#xff0c;导致托盘存放大量缓存图标。为了解决这个问题&#xff0c;我们可以通过下面的程序清理任务栏托盘图标缓存…

【C++函数速查】lower_bound和upper_bound使用方法详细解读

文章目录 1&#xff09;概述2&#xff09;函数使用3&#xff09;案例代码 1&#xff09;概述 l o w e r _ b o u n d ( ) lower\_bound() lower_bound() 和 u p p e r _ b o u n d ( ) upper\_bound() upper_bound() 都是基于二分查找在一个排好序的数组或容器&#xff08;如 …

【UE5】非持枪趴姿移动混合空间

项目资源文末百度网盘自取 创建角色在非持枪状态趴姿移动的动画混合空间 在BlendSpace文件夹中单击右键选择 动画(Animation) 中的混合空间(Blend Space) 选择SK_Female_Skeleton 命名为BS_NormaProne 打开BS_NormaProne 水平轴表示角色的方向&#xff0c;命名为Directi…

C 练习实例76-求倒数和

题目&#xff1a;编写一个函数&#xff0c;输入n为偶数时&#xff0c;调用函数求1/21/4...1/n,当输入n为奇数时&#xff0c;调用函数1/11/3...1/n(利用指针函数)。 代码 #include <stdio.h> void fun1(int n,double *ret) {for(int i1;i<n;i2)*ret1.0/i; } void fun…

SecureCRT出现乱码的解决方法

SecureCRT是一个商业终端连接工具&#xff0c;它支持多种自定义设置。默认设置下&#xff0c;通过SecureCRT连接SSH服务器可能出现中文乱码的情况。这是由于SecureCRT字符编码与服务器的字符编码不一致造成的。 当然解决这个问题也很简单&#xff0c;将SecureCRT字符编码设置成…

ACM记忆化DFS与基于优先队列的BFS

基本概念--记忆化DFS 使用数组保存已经算出来的值&#xff0c;在后续的计算中减少大量的重复计算&#xff0c;提高效率。&#xff08;用于dp不方便&#xff0c;但是搜索方便的情况&#xff0c;可以提升效率。&#xff09; eg. 记忆化dfs求解斐波那契数列 int dfs(int n) {if…