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

2023牛客暑期多校训练营7 CI「位运算」「根号分治+容斥」

C-Beautiful Sequence_2023牛客暑期多校训练营7 (nowcoder.com)

题意:

给定一个b序列,a序列满足 a [ i − 1 ] < = a [ i ] a[i-1]<=a[i] a[i1]<=a[i] a [ i ] ⊕ a [ i + 1 ] = b [ i ] a[i]\oplus a[i+1]=b[i] a[i]a[i+1]=b[i],求字典序第k大的满足条件的a序列,若不存在则输出-1。

思路:

我们对b数组求一个前缀和可以发现:

p r e [ 1 ] = 0 ⊕ b [ 1 ] = a [ 1 ] ⊕ a [ 2 ] pre[1]=0\oplus b[1]=a[1]\oplus a[2] pre[1]=0b[1]=a[1]a[2]

p r e [ 2 ] = p r e [ 1 ] ⊕ b [ 2 ] = a [ 1 ] ⊕ a [ 2 ] ⊕ a [ 2 ] ⊕ a [ 3 ] = a [ 1 ] ⊕ a [ 3 ] pre[2]=pre[1]\oplus b[2]=a[1]\oplus a[2]\oplus a[2]\oplus a[3]=a[1]\oplus a[3] pre[2]=pre[1]b[2]=a[1]a[2]a[2]a[3]=a[1]a[3]

……

依次类推,可以发现 p r e [ i ] = a [ 1 ] ⊕ a [ i + 1 ] pre[i]=a[1]\oplus a[i+1] pre[i]=a[1]a[i+1],对于每一组 p r e [ i ] pre[i] pre[i] p r e [ i + 1 ] pre[i+1] pre[i+1],考虑二进制从最高位开始查询,当某一位不同的时候一定是因为 a [ i + 1 ] a[i+1] a[i+1]的这位为1而 a [ i ] a[i] a[i]的这位为0,于是我们可以确定 a [ 1 ] a[1] a[1]的某一位,遍历完成后会发现可能有一部分位置(sum)的值并未确定,所以所有可能的a序列就有 1 < < s u m 1<<sum 1<<sum个,而字典序第k大的就是 a [ 1 ] a[1] a[1]的取值为第k大的,确定 a [ 1 ] a[1] a[1]后即可通过b数组求得答案。

AC代码:
#include <bits/stdc++.h>
using namespace std;
#define io ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
typedef long long ll;
#define int ll
#define pb push_back
#define eb emplace_back
#define m_p make_pair
const int mod = 998244353;
#define mem(a,b) memset(a,b,sizeof a)
#define pii pair<int,int>
#define fi first
#define se second
const int inf = 0x3f3f3f3f;
const int N = 1e6 + 50;
//__builtin_ctzll(x);后导0的个数
//__builtin_popcount计算二进制中1的个数
ll a[N],b[N],pre[N];
int numa[33];void work() {int n,k;cin>>n>>k;pre[0]=0;a[1]=0;for(int i=1;i<n;++i){cin>>b[i];pre[i]=pre[i-1]^b[i];}for(int i=0;i<=30;++i)numa[i]=-1;for(int i=n-1;i>=1;--i){for(int j=30;j>=0;--j){if(((pre[i]>>j)&1)!=((pre[i-1]>>j)&1)){numa[j]=((pre[i-1]>>j)&1);break;}}}ll num=0;for(int i=0;i<30;++i){if(numa[i]==-1)num++;}if((1<<num)<k){cout<<"-1\n";return;}k--;for(int i=30;i>=0;--i){if(numa[i]==-1){if((k>>num)&1) numa[i]=1;else numa[i]=0;num--;}}ll x=1;for(int i=0;i<=30;++i){if(numa[i]==1)a[1]+=x;x*=2;}for(int i=2;i<=n;++i){a[i]=a[i-1]^b[i-1];if(a[i]<a[i-1]){cout<<"-1\n";return;}}for(int i=1;i<=n;++i){cout<<a[i]<<" \n"[i==n];}
}signed main() {io;int t=1;cin >> t;while (t--) {work();}return 0;
}

I-We Love Strings_2023牛客暑期多校训练营7 (nowcoder.com)

题意:

给定n个01?字串,其中?可以是0也可以是1,询问有多少个01字串符合至少一个给定的正则串。

思路:

根号分治

在字串长小于20( s q r t ( 400 ) sqrt(400) sqrt(400))时dfs暴力找,总复杂度不会超过 2 21 2^{21} 221

大于20时,容斥:奇加偶减

AC代码:
#include <bits/stdc++.h>
using namespace std;
#define io ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
typedef long long ll;
#define int ll
#define pb push_back
#define eb emplace_back
#define m_p make_pair
const int mod = 998244353;
#define mem(a,b) memset(a,b,sizeof a)
#define pii pair<int,int>
#define fi first
#define se second
const int inf = 0x3f3f3f3f;
const ll N = 405;
//__builtin_ctzll(x);后导0的个数
//__builtin_popcount计算二进制中1的个数
ll ans=0;
vector<string>a[N];
string tmp;
int n;void small(int now,int len){if (now==len+1){for(auto x:a[len]){bool ok=1;for(int j=0;j<len;j++) {if(x[j]=='?') continue;if(x[j]!=tmp[j]){ok=0;break;}}if (ok) {ans++;break;}}return ;}tmp+='0';small(now+1,len);tmp.pop_back();tmp+='1';small(now+1,len);tmp.pop_back();
}void big(int len,int size){ll m=1<<size;//正则串随意组合的情况数for(int i=1;i<m;++i){//枚举所有可能int cnt=0,ok=1;tmp.clear();for(int j=0;j<len;++j)tmp+="?";for(int j=0;j<size;++j){//枚举每种正则串的组合方式if(i>>j&1){cnt++;for(int t=0;t<len;++t){//枚举每一位char x=a[len][j][t];if(tmp[t]=='?'){tmp[t]=x;}else if(x!='?'&&tmp[t]!=x){ok=0;break;}}if(!ok)break;}}if(!ok)continue;int p=1;for(int j=0;j<len;++j){if(tmp[j]=='?')p=p*2%mod;//计算有多少个未确定的字符,每个未确定代表两种可能}if(cnt&1){ans=(ans+p)%mod;}else ans=(ans-p)%mod;}
}void work() {cin>>n;for(int i=1;i<=n;++i){string s;cin>>s;a[s.size()].pb(s);}for(int i=1;i<N;++i){if(!a[i].size()){continue;}if(i<=20){tmp.clear();small(1,i);}else{big(i,a[i].size());}}ans%=mod;cout<<ans<<'\n';
}signed main() {io;int t=1;//cin >> t;while (t--) {work();}return 0;
}

相关文章:

2023牛客暑期多校训练营7 CI「位运算」「根号分治+容斥」

C-Beautiful Sequence_2023牛客暑期多校训练营7 (nowcoder.com) 题意&#xff1a; 给定一个b序列&#xff0c;a序列满足 a [ i − 1 ] < a [ i ] a[i-1]<a[i] a[i−1]<a[i]且 a [ i ] ⊕ a [ i 1 ] b [ i ] a[i]\oplus a[i1]b[i] a[i]⊕a[i1]b[i]&#xff0c;求字…...

YOLOv5算法改进(10)— 替换主干网络之GhostNet

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。GhostNet是一种针对计算机视觉任务的深度神经网络架构&#xff0c;它于2020年由中国科学院大学的研究人员提出。GhostNet的设计目标是在保持高精度的同时&#xff0c;减少模型的计算和存储成本。GhostNet通过引入Ghost模块…...

Android Canvas的使用

android.graphics.Canvas 一般在自定义View中&#xff0c;重写 onDraw(Canvas canvas) 方法时用到。 /*** Implement this to do your drawing.** param canvas the canvas on which the background will be drawn*/Overrideprotected void onDraw(Canvas canvas) {super.onDra…...

AI批量写文章伪原创:基于ChatGPT长文本模型,实现批量改写文章、批量回答问题(长期更新)

import traceback import openai import osopenai.api_key = ""conversation=[{"role": "system", "content": "You are a helpful assistant."}] max_history_len = 20 first_message = Nonedir = rJ:\ai\input #要改写的文…...

git常用场景记录 | 拉取远程分支A合并到本地分支B - 删除上一次的commit

文章目录 git常用场景记录拉取远程分支A合并到本地分支B本地分支B存在未add与commit的代码 删除上一次的commit已经push到远程库 git常用场景记录 doing&#xff0c;最后更新9.5 拉取远程分支A合并到本地分支B 需求描述 在团队合作时&#xff0c;我自己的本地分支B功能已经实现…...

源码角度解析SpringBoot 自动配置

文章目录 前言一、了解相关注解1.Condition注解2.Enable注解 二、SpringBoot自动配置1.SpringBootApplication注解2.SpringBootConfiguration注解3.EnableAutoConfiguration注解4.Conditional注解 总结 前言 Spring Boot 自动配置是 Spring Boot 的核心特性之一&#xff0c;它…...

【原创】H3C路由器OSPF测试

网络拓扑图 路由器配置&#xff1a; 路由器1上接了4跟线&#xff0c;分别为这四个接口配置IP地址。 # interface GigabitEthernet0/0/0port link-mode routecombo enable copperip address 2.1.1.2 255.255.255.0 # interface GigabitEthernet0/0/1port link-mode routecombo…...

计算机视觉:轨迹预测综述

计算机视觉&#xff1a;轨迹预测综述 轨迹预测的定义轨迹预测的分类基于物理的方法&#xff08;Physics-based&#xff09;基于机器学习的方法&#xff08;Classic Machine Learning-based&#xff09;基于深度学习的方法&#xff08;Deep Learning-based&#xff09;基于强化学…...

三维跨孔电磁波CT数据可视化框架搭建

三维跨孔电磁波CT数据可视化框架搭建 文章目录 三维跨孔电磁波CT数据可视化框架搭建1、三维CT可视化结果2、matlab代码2.1、CT数据格式整理并保存2.2、三维可视化 利用matlab实现对跨孔电磁波CT实测数据反演&#xff0c;并搭建了三维CT数据可视化框架&#xff0c;可装填实测CT反…...

OC和Swift混编,导入头文件‘xxx-Swift.h‘ file not found

在OC的项目里加入Swift代码&#xff0c;创建完桥接文件后&#xff0c;需要倒入Swift头文件&#xff0c;头文件的格式为“项目名-Swift.h”。 如下图&#xff0c;我在Xcode上看到我的项目名为YichangPark&#xff0c;导入 #import "YiChangPark-Swift.h" 之后提示 “Y…...

一文读懂HOOPS Native平台:快速开发桌面端、移动端3D应用程序!

HOOPS Native Platform是用于在桌面和移动平台以及混合现实应用程序上构建3D工程应用程序的首要工具包。它由三个集成良好的软件开发工具包(SDK)组成&#xff1a;HOOPS Visualize、HOOPS Exchange、HOOPS Publish。HOOPS Visualize 是一个强大的图形引擎&#xff0c;适用于本机…...

Scrum工作模式及Scrum工具

Scrum工作模式是一种敏捷软件开发方法&#xff0c;其核心是团队合作和自我组织&#xff0c;旨在通过短周期的迭代开发&#xff0c;实现快速反馈和持续改进。 Scrum工作模式包括以下角色和活动&#xff1a; 1、产品负责人&#xff08;Product Owner&#xff09;&#xff1a;负…...

[ros][ubuntu]ros在ubuntu18.04上工作空间创建和发布一个话题

构建catkin工作空间 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src catkin_init_workspace cd ~/catkin_ws/ catkin_make 配置环境变量 echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc source ~/.bashrc 检查环境变量 echo $ROS_PACKAGE_PATH…...

我的区块链笔记

区块链 中心化的账本&#xff0c;个人节点和中心节点的地位不对等&#xff0c;中心节点说了算。去中心化&#xff0c;个人节点就是公平的&#xff0c;根据一套规则&#xff0c;叫做公比机制。 区块链的本质&#xff0c;就是数据存储方式 区块链使用密码学算法产生的区块&…...

Spring事务(ACID特性、隔离级别、传播机制、失效场景)

一、事务的ACID特性 原子性&#xff08;Atomicity&#xff09; 原子性是指事务是一个不可分割的工作单位&#xff0c;事务中的操作要么都发生&#xff0c;要么都不发生。一致性&#xff08;Consistency&#xff09; 事务前后数据的完整性必须保持一致。隔离性&#xff08;Isola…...

机器学习笔记之最优化理论与方法(六)无约束优化问题——最优性条件

机器学习笔记之最优化理论与方法——无约束优化问题[最优性条件] 引言无约束优化问题无约束优化问题最优解的定义 无约束优化问题的最优性条件无约束优化问题的充要条件无约束优化问题的必要条件无约束优化问题的充分条件 引言 本节将介绍无约束优化问题&#xff0c;主要介绍无…...

E5061B/是德科技keysight E5061B网络分析仪

181/2461/8938产品概述 是德科技E5061B(安捷伦)网络分析仪在从5 Hz到3 GHz的宽频率范围内提供通用的高性能网络分析。E5061B提供ENA系列常见的出色RF性能&#xff0c;还提供全面的LF(低频)网络测量能力&#xff1b;包括内置1 Mohm输入的增益相位测试端口。E5061B从低频到高频的…...

2.4 PE结构:节表详细解析

节表&#xff08;Section Table&#xff09;是Windows PE/COFF格式的可执行文件中一个非常重要的数据结构&#xff0c;它记录了各个代码段、数据段、资源段、重定向表等在文件中的位置和大小信息&#xff0c;是操作系统加载文件时根据节表来进行各个段的映射和初始化的重要依据…...

Vue2项目练手——通用后台管理项目第五节

Vue2项目练手——通用后台管理项目 首页组件布局面包屑&tag面包屑使用组件使用vuex存储面包屑数据src/store/tab.jssrc/components/CommonAside.vuesrc/components/CommonHeader.vue tag使用组件文件目录CommonTag.vueMain.vuetabs.js 用户管理页新增功能使用的组件页面布局…...

软件工程学术顶会——ESEC/FSE 2022 议题(网络安全方向)清单、摘要与总结

总结 本次会议中网络安全相关议题涵盖区块链、智能合约、符号执行、浏览器API模糊测试等不同研究领域。 热门研究方向: 1. 基于深度学习的漏洞检测与修复 2. 基于AI的自动漏洞修复 3. 模糊测试与漏洞发现 冷门研究方向: 1. 多语言代码的漏洞分析 2. 代码审查中的软件安全 3. 浏…...

从C语言到C++_36(智能指针RAII)auto_ptr+unique_ptr+shared_ptr+weak_ptr

目录 1. 智能指针的引入_内存泄漏 1.1 内存泄漏 1.2 如何避免内存泄漏 2. RAII思想 2.1 RAII解决异常安全问题 2.2 智能指针原理 3. auto_ptr 3.1 auto_ptr模拟代码 4. unique_ptr 4.1 unique_ptr模拟代码 5. shared_ptr 5.1 shared_ptr模拟代码 5.2 循环引用 6.…...

C++信息学奥赛1187:统计字符数

#include <bits/stdc.h> using namespace std; int main() {string arr;cin >> arr; // 输入一个字符串int n, a, max; // 定义变量n, a, maxchar ArrMax; // 定义字符变量ArrMaxn arr.length(); // 获取字符串长度max a 0; // 初始化max和a为0// 外层循环&…...

计算机毕设 大数据商城人流数据分析与可视化 - python 大数据分析

文章目录 0 前言课题背景分析方法与过程初步分析&#xff1a;总体流程&#xff1a;1.数据探索分析2.数据预处理3.构建模型 总结 最后 0 前言 &#x1f525; 这两年开始毕业设计和毕业答辩的要求和难度不断提升&#xff0c;传统的毕设题目缺少创新和亮点&#xff0c;往往达不到…...

vscode上搭建go开发环境

前言 Go语言介绍&#xff1a; Go语言适合用于开发各种类型的应用程序&#xff0c;包括网络应用、分布式系统、云计算、大数据处理等。由于Go语言具有高效的并发处理能力和内置的网络库&#xff0c;它特别适合构建高并发、高性能的服务器端应用。以下是一些常见的Go语言应用开发…...

10.(Python数模)(预测模型二)LSTM回归网络(1→1)

LSTM回归网络&#xff08;1→1&#xff09; 长短期记忆网络 - 通常只称为“LSTM” - 是一种特殊的RNN&#xff0c;能够学习长期的规律。 它们是由Hochreiter&#xff06;Schmidhuber&#xff08;1997&#xff09;首先提出的&#xff0c;并且在后来的工作中被许多人精炼和推广。…...

mac常见问题(五) Mac 无法开机

在mac的使用过程中难免会碰到这样或者那样的问题&#xff0c;本期为您带来Mac 无法开机怎么进行操作。 1、按下 Mac 上的电源按钮。每台 Mac 电脑都有一个电源按钮&#xff0c;通常标有电源符号 。然后检查有没有通电迹象&#xff0c;例如&#xff1a; 发声&#xff0c;例如由风…...

WebSocket与SSE区别

一&#xff0c;websocket WebSocket是HTML5下一种新的协议&#xff08;websocket协议本质上是一个基于tcp的协议&#xff09; 它实现了浏览器与服务器全双工通信&#xff0c;能更好的节省服务器资源和带宽并达到实时通讯的目的 Websocket是一个持久化的协议 websocket的原理 …...

Qt鼠标点击事件处理:显示鼠标点击位置(完整示例)

Qt 入门实战教程&#xff08;目录&#xff09; 前驱文章&#xff1a; Qt Creator 创建 Qt 默认窗口程序&#xff08;推荐&#xff09; 什么是事件 事件是对各种应用程序需要知道的由应用程序内部或者外部产生的事情或者动作的通称。 事件&#xff08;event&#xff09;驱动…...

OpenCV:实现图像的负片

负片 负片是摄影中会经常接触到的一个词语&#xff0c;在最早的胶卷照片冲印中是指经曝光和显影加工后得到的影像。负片操作在很多图像处理软件中也叫反色&#xff0c;其明暗与原图像相反&#xff0c;其色彩则为原图像的补色。例如&#xff0c;颜色值A与颜色值B互为补色&#…...

HZOJ#237. 递归实现排列型枚举

题目描述 ​ 从 1−n这 n个整数排成一排并打乱次序&#xff0c;按字典序输出所有可能的选择方案。 输入 ​ 输入一个整数 n。&#xff08;1≤n≤8&#xff09; 输出 ​ 每行一组方案&#xff0c;每组方案中两个数之间用空格分隔。 ​ 注意每行最后一个数后没有空格。 样例…...

wordpress怎么添加其他页面/竞价排名的弊端

margin负值的应用 盒子边框111 margin-left:-1px; 鼠标经过显示&#xff0c;盒子没有定位用相对定位&#xff0c;有相对定位用z-index提高层级 文字围绕浮动元素 左侧盒子添加浮动&#xff0c;右侧紧贴显示 行内块的巧妙运用 使用行内块text-aign:center;可以实现居中对齐…...

海南在线人才在线/百度关键词排名优化

随着新的Amazon WorkSpaces的推出&#xff0c;用户除了Windows 7和Windows 10之外&#xff0c;还可以使用Amazon Linux 2。Amazon Linux 2 WorkSpaces提供了一些不同的使用方式&#xff0c;包括Amazon Machine Image。\\上个月&#xff0c;亚马逊推出了Amazon Linux 2 WorkSpac…...

保定小程序开发公司/安全优化大师

这篇文章会解释下不同类型的碎片。理解索引碎片的概念对有效检测和移除碎片非常重要。 什么是碎片 碎片可以定义为&#xff1a;任何情况下&#xff0c;在访问一个表时&#xff0c;造成比适量更多的磁盘IO操作或更长的磁盘IO操作。SELECT查询的最佳操作发生在&#xff0c;表的数…...

横沥网站设计/相似图片在线查找

编辑推荐:本文来自于CSDN&#xff0c;介绍了matlab自带的机器学习库、随机森林分类器、朴素贝叶斯等相关知识。自带的机器学习库meas:测试数据&#xff0c;一行代表一个样本&#xff0c;列代表样本属性&#xff0c;N*Mspecies:每个样本对应的类,N*1kfoldLoos:交叉验证:确定样本…...

上海海宏建设集团网站/网络营销主要是学什么的

问题描述 httpd: Could not reliably determine the server’s fully qualified domain name, using 106.14.23.215 for ServerName 解决方法 通过该命令查找Apache安装的路径 #find /etc/httpd/ -name *conf进入该目录 # cd /etc/httpd/conf 3.使用vi httpd.conf编辑该文件…...

wordpress电影资讯/螺蛳粉营销策划方案

1.游戏介绍拼图游戏将一幅图片分割咸若干拼块并将它们随机打乱顺序&#xff0c;当将所有拼块都放回原位置时&#xff0c;就完成了拼图(游戏结束)。本人物拼图游戏为3行3列&#xff0c;拼块以随机顺序排列&#xff0c;玩家用鼠标单击空白块四周的交换它们位置&#xff0c;直到所…...