位运算#蓝桥杯

位运算#蓝桥杯

文章目录

  • 位运算#蓝桥杯
    • 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…

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…

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

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

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

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

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

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

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…

idea Springboot 数码商城系统LayUI框架开发mysql数据库web结构java编程计算机网页

一、源码特点 springboot 数码商城系统是一套完善的完整信息系统&#xff0c;结合mvc框架和LayUI框架完成本系统springboot spring mybatis &#xff0c;对理解JSP java编程开发语言有帮助系统采用springboot框架&#xff08;MVC模式开发&#xff09;&#xff0c;系统具有完整…

SpringMVC请求、响应和拦截器的使用

SpringMVC请求 RequestMapping注解 RequestMapping注解的作用是建立请求URL和处理方法之间的对应关系 RequestMapping注解可以作用在方法和类上 1. 作用在类上&#xff1a;第一级的访问目录 2. 作用在方法上&#xff1a;第二级的访问目录 3. 细节&#xff1a;路径可以不编写…

软件设计师:06-程序设计语言与语言处理程序基础

章节章节01-计算机组成原理与体系结构07 - 法律法规与标准化与多媒体基础02 - 操作系统基本原理08 - 设计模式03 - 数据库系统09 - 软件工程04 - 计算机网络10 - 面向对象05 - 数据结构与算法11 - 结构化开发与UML06 - 程序设计语言与语言处理程序基础12 - 下午题历年真题End -…

windows达梦安装

1.首先准备好windows安装系统&#xff0c;准备工作的做好&#xff0c;然后把素材包dm8_20230418_x86_win_64放进去&#xff0c;进行解压 解压完成之后&#xff0c;把dm8_20230418_x86_win_64再次进行解压&#xff0c;然后点击安装setup进行安装 然后点击接受进行下一步&#xf…

搭建Docker私有仓库registry

下载registry registry是Docker官方提供的仓库镜像 拉取镜像&#xff0c;不指定版本默认拉取最新版本镜像。 docker pull registry Using default tag: latest latest: Pulling from library/registry 79e9f2f55bf5: Pull complete 0d96da54f60b: Pull complete 5b27040df4…

ZooKeeper命令和监控详解

ZooKeeper监控命令详解 在分布式系统中&#xff0c;ZooKeeper作为一个非常重要的协调服务&#xff0c;它的健康状态直接影响到整个系统的可靠性和稳定性。因此&#xff0c;对ZooKeeper进行有效监控是非常必要的。本文将详细介绍ZooKeeper提供的命令行工具zkCli.sh&#xff0c;…

vue2之过滤器

过滤器 过滤器的实现类似Django的过滤器。 代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>过…

Mysql---库表操作

文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 一.Mysql数据库简介 MySQL是一种关系型数据库管理系统&#xff0c;是最流行的开源数据库之一。它是由瑞典MySQL AB公司开发的&#xff0c;后来被Sun Microsystems收购&#xff0c;之后又被Oracl…