当前位置: 首页 > news >正文

Codeforces Round 901 (Div. 1) B. Jellyfish and Math(思维题/bfs)

题目

t(t<=1e5)组样例,每次给出a,b,c,d,m(0<=a,b,c,d,m<2的30次方)

初始时,(x,y)=(a,b),每次操作,你可以执行以下四种操作之一

①x=x&y,&为与

②x=x|y,|为或

③y=x^y,^为异或

④y=y^m,^为异或

求将(x,y)=(c,d)的最小操作数,如果无法实现,输出-1

思路来源

乱搞AC & tanao学弟

题解

按位考虑每一位时,有如下转移图,

注意到,将m也考虑进去,会构成一个三元组,只有(0,0,0)到(1,1,1)八种可能

30位里只有这8种可能,由于每次操作相同的可能的转移是一样的,

所以,如果相同的(x>>i&1,y>>i&1,w>>&1)对应的(c>>i&1,d>>i&1)不同时,直接无解

然后,可以只留8位,将8位标号id=0-7

每个标号id都有出现和没出现两种情况,一共2的8次方,256种情况

所以,可以对于第i(0<=i<256)情况预处理,

初始的(a,b)和i是对应的,转化的(c,d)也都在[0,256)之间

最多有256种情况*256*256种(c,d)值,每次转移有四种情况

预处理之后,对于1e5组询问,O(1)回答即可

代码中用的是数组记忆化,和预处理的效果是等价的

复杂度O(256*256*256*4+1e5)

代码

#include<bits/stdc++.h>
// #include<iostream>
// #include<vector>
// #include<queue>
// #include<map>
using namespace std;
#define rep(i,a,b) for(int i=(a);i<=(b);++i)
#define per(i,a,b) for(int i=(a);i>=(b);--i)
typedef long long ll;
typedef double db;
typedef pair<int,int> P;
#define fi first
#define se second
#define dbg(x) cerr<<(#x)<<":"<<x<<" ";
#define dbg2(x) cerr<<(#x)<<":"<<x<<endl;
#define SZ(a) (int)(a.size())
#define sci(a) scanf("%d",&(a))
#define pb push_back
#define pt(a) printf("%d",a);
#define pte(a) printf("%d\n",a)
#define ptlle(a) printf("%lld\n",a)
#define debug(...) fprintf(stderr, __VA_ARGS__)
//std::mt19937_64 gen(std::chrono::system_clock::now().time_since_epoch().count());
//ll get(ll l, ll r) { std::uniform_int_distribution<ll> dist(l, r); return dist(gen); }
const int N=1e5+10,M=256,INF=0x3f3f3f3f;
int t,a,b,c,d,m,dp[M][M*M];
int f(int x,int y,int z){return x*4+2*y+z;
}
int g(int x,int y){return x*256+y;
}
int sol(){map<int,array<int,2>>p;rep(i,0,30){int u=a>>i&1,v=b>>i&1,w=m>>i&1,x=c>>i&1,y=d>>i&1,z=f(u,v,w);if(p.count(z)){if(p[z][0]!=x || p[z][1]!=y)return -1;}else{p[z]={x,y};}}int h=0,na=0,nb=0,nc=0,nd=0,nm=0;rep(i,0,7){if(p.count(i)){int u=i>>2&1,v=i>>1&1,w=i&1;h|=1<<i;nc=nc<<1|p[i][0],nd=nd<<1|p[i][1];//printf("i:%d u:%d v:%d w:%d x:%d y:%d\n",i,u,v,w,p[i][0],p[i][1]);na=na<<1|u,nb=nb<<1|v,nm=nm<<1|w;}}int s=g(na,nb),e=g(nc,nd);if(dp[h][s]==0){return dp[h][e];}//printf("h:%d na:%d nb:%d nc:%d nd:%d\n",h,na,nb,nc,nd);dp[h][s]=0;queue<int>q;q.push(s);while(!q.empty()){int z=q.front();q.pop();int x=z/M,y=z%M;//if(x==nc && y==nd)return dp[z];vector<array<int,2>> nex={{x&y,y},{x|y,y},{x,x^y},{x,y^nm}};for(auto &w:nex){int nz=g(w[0],w[1]);if(dp[h][nz]<0){dp[h][nz]=dp[h][z]+1;q.push(nz);}}}return dp[h][e];
}
int main(){// freopen("qiwang.in","r",stdin);// freopen("qiwang.out","w",stdout);memset(dp,-1,sizeof dp);sci(t);while(t--){sci(a),sci(b),sci(c),sci(d),sci(m);printf("%d\n",sol());}return 0;
}

相关文章:

Codeforces Round 901 (Div. 1) B. Jellyfish and Math(思维题/bfs)

题目 t(t<1e5)组样例&#xff0c;每次给出a,b,c,d,m(0<a,b,c,d,m<2的30次方) 初始时&#xff0c;(x,y)(a,b)&#xff0c;每次操作&#xff0c;你可以执行以下四种操作之一 ①xx&y&#xff0c;&为与 ②xx|y&#xff0c;|为或 ③yx^y&#xff0c;^为异或 …...

unity 鼠标标记 左键长按生成标记右键长按清除标记,对象转化为子物体

linerender的标记参考 unity linerenderer在Game窗口中任意画线_游戏内编辑linerender-CSDN博客 让生成的标记转化为ARMarks游戏对象的子物体 LineMark.cs using System.Collections; using System.Collections.Generic; using UnityEngine;public class LineMark : MonoBeh…...

解决mac pro 连接4k显示器严重发烫、卡顿问题

介绍个不用花钱的方法。其实mac自带的风扇散热能力还可以的&#xff0c;但是默认比较懒散&#xff0c;可以用一个软件来控制下&#xff0c;激发下它的潜能。 可以下个stats软件 打开传感器开关&#xff0c;以及同步控制风扇开关 以及cpu显示温度 点击控制台上的温度图标&…...

QT的ui设计中改变样式表的用法

在QT的ui设计中,我们右键会弹出一个改变样式表的选项,很多人不知道这个是干什么的。 首先我们来看下具体的界面 首先我们说一下这个功能具体是干嘛的, 我们在设置很多控件在界面上之后,常常都是使用系统默认的样式,但是当有些时候为了美化界面我们需要对一些控件进行美化…...

零基础Linux_10(进程)进程终止(main函数的返回值)+进程等待

目录 1. 进程终止 1.1 main函数的返回值 1.2 进程退出码和错误码 1.3 进程终止的常见方法 2. 进程等待 2.1 进程等待的原因 2.2 wait 函数 2.3 waitpid 函数 2.4 int* status参数 2.5 int options非阻塞等待 本篇完。 1. 进程终止 进程终止指的就是程序执行结束了&…...

【已解决】opencv 交叉编译 ffmpeg选项始终为NO

一、opencv 交叉编译没有 ffmpeg &#xff0c;会导致视频打不开 在交叉编译时候&#xff0c;发现在 pc 端能用 opencv 打开的视频&#xff0c;但是在 rv1126 上打不开。在网上查了很久&#xff0c;原因可能是 交叉编译过程 ffmpeg 造成的。之前 ffmpeg 是直接用 apt 安装的&am…...

rust生命期

一、生命期是什么 生命期&#xff0c;又叫生存期&#xff0c;就是变量的有效期。 实例1 {let r;{let x 5;r &x;}println!("r: {}", r); }编译错误&#xff0c;原因是r所引用的值已经被释放。 上图中的绿色范围’a表示r的生命期&#xff0c;蓝色范围’b表示…...

实现将一张图片中的目标图片抠出来

要在python中实现将一张图片中的目标图片裁剪出来&#xff0c;需要用到图像处理及机器学习库&#xff0c;以下是一个常用的基本框架 加载图片并使用OpenCV库将其转换为灰度图像 import cv2img cv2.imread(screenshot.jpg) gray cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)准备模…...

Rust 使用Cargo

Rust 使用技巧 Rust 使用crates 假设你正在编写一个 Rust 程序&#xff0c;要使用一个名为 rand 的第三方库来生成随机数。首先&#xff0c;你需要在 Cargo.toml 文件中添加以下依赖项&#xff1a; toml [dependencies] rand "0.7.3" 然后运行 cargo build&…...

【k8s】集群搭建篇

文章目录 搭建kubernetes集群kubeadm初始化操作安装软件(master、所有node节点)Kubernetes Master初始化Kubernetes Node加入集群部署 CNI 网络插件测试 kubernetes 集群停止服务并删除原来的配置 二进制搭建(单master集群)初始化操作部署etcd集群安装Docker部署master节点解压…...

10.1select并发服务器以及客户端

服务器&#xff1a; #include<myhead.h>//do-while只是为了不让花括号单独存在&#xff0c;并不循环 #define ERR_MSG(msg) do{\fprintf(stderr,"%d:",__LINE__);\perror(msg);\ }while(0);#define PORT 8888//端口号1024-49151 #define IP "192.168.2.5…...

几个好用的测试HTTP请求的网站

Reqres (https://reqres.in)&#xff1a;Reqres提供了一个模拟的REST API&#xff0c;您可以使用它来测试POST、GET、PUT等HTTP请求&#xff0c;并获得相应的响应结果。 JSONPlaceholder (https://jsonplaceholder.typicode.com)&#xff1a;JSONPlaceholder是一个免费的JSON测…...

kafka简易搭建(windows环境)

1&#xff0c;下载 Apache Kafka 查找 kafka_2.13-3.2.1.tgz 2&#xff0c;java版本需要17以上 3&#xff0c;配置server.properties的log.dirs目录、zookeeper.properties 的dataDir目录 windows反斜杠地址 4&#xff0c;启动 cd D:\app\kafka_2.13-3.2.1 .\bin\window…...

毕业设计选题uniapp+springboot新闻资讯小程序源码 开题 lw 调试

&#x1f495;&#x1f495;作者&#xff1a;计算机源码社 &#x1f495;&#x1f495;个人简介&#xff1a;本人七年开发经验&#xff0c;擅长Java、Python、PHP、.NET、微信小程序、爬虫、大数据等&#xff0c;大家有这一块的问题可以一起交流&#xff01; &#x1f495;&…...

Linux系统编程基础:进程控制

文章目录 一.子进程的创建操作系统内核视角下的父子进程存在形式验证子进程对父进程数据的写时拷贝 二.进程等待进程非阻塞等待示例: 三.进程替换内核视角下的进程替换过程:综合利用进程控制系统接口实现简单的shell进程 进程控制主要分为三个方面,分别是:子进程的创建,进程等待…...

选择和操作元素

上一篇文档我们介绍了DOM元素和DOM的获取&#xff1b;其实除了获取DOM&#xff0c;我们也可以去替换DOM元素中的文本 document.querySelector(.message).textContent "&#x1f389;Correct Number"● 除此之外&#xff0c;我们可以设置那个数字部分 document.que…...

消息中间件(二)——kafka

文章目录 Apache Kafka综述什么是消息系统&#xff1f;点对点消息类型发布-订阅消息类型 什么是Kafka?优点关键术语Kafka基本原理用例 Apache Kafka综述 在大数据中&#xff0c;会使用到大量的数据。面对这些海量的数据&#xff0c;我们一是需要做到能够收集这些数据&#xf…...

量化交易全流程(四)

本节目录 数据准备&#xff08;数据源与数据库&#xff09; CTA策略 数据源&#xff1a; 在进行量化分析的时候&#xff0c;最基础的工作是数据准备&#xff0c;即收集数据、清理数据、建立数据库。下面先讨论收集数据的来源&#xff0c;数据来源可分为两大类&#xff1a;免…...

idea 如何在命令行快速打开项目

背景 在命令行中从git仓库检出项目&#xff0c;如何在该命令行下快速用idea 打开当前项目&#xff0c;类似vscode 可以通过在项目根目录下执行 code . 快速打开当前项目。 步骤 以macos 为例 vim /usr/local/bin/idea 输入如下内容 #!/bin/sh open -na "IntelliJ IDE…...

YOLOV8-DET转ONNX和RKNN

目录 1. 前言 2.环境配置 (1) RK3588开发板Python环境 (2) PC转onnx和rknn的环境 3.PT模型转onnx 4. ONNX模型转RKNN 6.测试结果 1. 前言 yolov8就不介绍了&#xff0c;详细的请见YOLOV8详细对比&#xff0c;本文章注重实际的使用&#xff0c;从拿到yolov8的pt检测模型&…...

计算机毕业设计springboot基于云服务的在线教育平台 基于SpringBoot的云端智慧教学服务平台设计与实现 基于云计算技术的在线学习资源管理系统开发

计算机毕业设计springboot基于云服务的在线教育平台w5hvo444 &#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。随着互联网技术的飞速发展和全球教育需求的不断增长&#xff0c;传统…...

数据治理(一)

数据治理的介绍及作用 数据治理&#xff1a;是运用专业方法和技术手段理清企业的数据资产并开展治理工作&#xff0c;是围绕将数据作为企业资产而开展的一系列的具体化工作。 作用&#xff1a;保证数据的可信可靠可用&#xff0c;满足业务对数据质量和数据安全的系列举措。 框…...

架构师视角:达梦数据库CLOB字段写入性能深度调优实战

1. 从一次线上故障说起&#xff1a;CLOB写入为何成了性能瓶颈&#xff1f; 去年我们团队接手了一个内容发布平台的性能优化项目&#xff0c;这个平台每天要处理几十万篇自媒体文章的入库。刚接手时&#xff0c;系统一到晚高峰就频繁告警&#xff0c;数据库响应时间飙升&#xf…...

OpenFeign负载均衡策略深度定制:场景化方案与性能调优

1. 为什么默认的轮询策略不够用&#xff1f;从真实业务场景说起 大家好&#xff0c;我是老张&#xff0c;在微服务这行摸爬滚打十来年了。今天咱们不聊那些高大上的理论&#xff0c;就聊聊一个实实在在的问题&#xff1a;用Spring Cloud做微服务&#xff0c;OpenFeign调服务默认…...

第五章 C# Event(事件)完全解析:从基础到实战的发布 - 订阅模式

C# Event&#xff08;事件&#xff09;完全解析&#xff1a;从基础到实战的发布 - 订阅模式 事件&#xff08;Event&#xff09;是 C# 实现发布 - 订阅&#xff08;Publish-Subscribe&#xff09;模式的核心机制&#xff0c;作为委托&#xff08;Delegate&#xff09;的封装与约…...

别再瞎折腾了!这些Web渗透靶场让你从菜鸟变大神

最近有朋友问我&#xff0c;想学Web渗透测试但不知道从哪里下手&#xff0c;网上的教程看了一堆&#xff0c;理论倒是懂了不少&#xff0c;可一到实际操作就抓瞎。说实话&#xff0c;这种情况我见得太多了&#xff0c;就像学游泳一样&#xff0c;光看视频是永远学不会的&#x…...

实测对比后!倍受青睐的降AIGC软件 —— 千笔AI

在AI技术迅速渗透学术写作领域的当下&#xff0c;越来越多的本科生开始借助AI工具提升论文写作效率。然而&#xff0c;随着查重系统对AI生成内容的识别能力不断提升&#xff0c;如何有效降低AI率和重复率成为许多学生面临的难题。面对市场上五花八门的降AI工具&#xff0c;选择…...

智慧党建:让线上线下融合,真正激活基层党组织活力

信息化背景下&#xff0c;党建迎来数字化转型关键。智慧党建系统以技术为抓手&#xff0c;打破传统党建时空壁垒与效率瓶颈&#xff0c;破解“管理难覆盖、学习难常态、考核难量化”痛点&#xff0c;为基层党组织注入新动能。智慧党建系统通过整合核心功能&#xff0c;构建“线…...

毕业设计-基于Android的旅游系统

博主介绍&#xff1a;本人专注于Android/java/数据库/微信小程序技术领域的开发&#xff0c;以及有好几年的计算机毕业设计方面的实战开发经验和技术积累&#xff1b;尤其是在安卓&#xff08;Android&#xff09;的app的开发和微信小程序的开发&#xff0c;很是熟悉和了解&…...

天津市优秀的GEO生成式AI引擎优化的公司有哪些

最近和一个做内容电商的朋友聊天&#xff0c;他吐槽说&#xff1a;“花了50万买的生成式AI引擎&#xff0c;本想靠它批量写商品文案、做短视频&#xff0c;结果生成10条有8条要返工&#xff0c;服务器电费比人工工资还高&#xff01;”这不是个例。现在生成式AI火得一塌糊涂&am…...