2023.12.4

race\牛客\多校\广西师范大学训练赛\雾锁山头山锁雾.cpp

#include<bits/stdc++.h>
#include<iostream>
#include<algorithm>
#include<map>
#include<set>
#include<queue>
#include<cstring>
#include<math.h>
#include<map>
#include<vector>
#include<stack>
#include<unordered_map>
#include<unordered_set>
#include<bitset>
#include<array>
using namespace std;#define endl '\n'#define ios ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr)
#define int long long
#define int128 __int128_t
#define ll long long
#define ld long double
typedef unsigned long long ull ;
#define fr(i,l,r) for(int i=l;i<=r;i++)
#define fer(i,x)   for(int i=e.head[x];i;i=e.next[i])
#define ufr(i,n,z) for(int i = n;i >= z; i--)
#define pb(x) push_back(x)
#define all(a) a.begin(),a.end()
#define fi first
#define se second
typedef pair<int,int> pr;
const int N = 1e6+10;
const int mod=998244353,inf=1e18;
//hash板子
typedef pair<int,int> hashv;
const static int Mod1 = 1000000033;
const static int Mod2 = 1000000103;
const static hashv bas = make_pair(10331,100313);
hashv operator+ (const hashv &a,const hashv &b)
{int c1 = a.first + b.first,c2 = a.second + b.second;if(c1 >= Mod1) c1 -= Mod1;if(c2 >= Mod2) c2 -= Mod2;return make_pair(c1,c2);
}hashv operator- (const hashv &a,const hashv &b)
{int c1 = a.first - b.first,c2 = a.second - b.second;if(c1 < 0) c1 += Mod1;if(c2 < 0) c2 += Mod2;return make_pair(c1,c2);
}hashv operator* (const hashv &a,const hashv &b)
{int c1 = (ll)a.fi * b.fi % Mod1,c2 = (ll) a.se * b.se % Mod2;return make_pair(c1,c2);
}
struct Hash {hashv hs[N],pw[N];inline void prepare() {pw[0] = {1,1};hs[0] = {0,0};for(int i = 1;i < N;i ++) {pw[i] = pw[i - 1] * bas;}}inline void init(int n,char s[]) {for(int i = 1;i <= n;i ++) {hs[i] = hs[i - 1] * bas + make_pair(s[i],s[i]);}}inline hashv query(int l,int r) {if(l > r) return {0,0};return hs[r] - hs[l - 1] * pw[r - l + 1];}
}T[2];
//题意:给定一个字符串串,可以将子串反转,能否成为回文串//思路:hash,回文的比较为:定义反串,比较原串翻转[l,r]后的hash与反串翻转对应的hash
int n,m;char s[N],t[N];hashv strfz(int pos, int l, int r) {    //翻转l,r,三部分(1~l-1),(r+1,n)不动,(l,r)为反串     hashv ans = T[pos].query(1, l - 1) * T[pos].pw[n - l + 1];hashv res = T[pos ^ 1].query(n - r + 1, n - r + 1 + r - l) * T[pos].pw[n - r];ans = ans + res + T[pos].query(r + 1, n);//cout<<l<<' '<<r<<' '<<1<<' '<<l-1<<' '<<n - r + 1<<' '<<n - r + 1 + r - l<<' '<<r+1<<' '<<n<<'\n';return ans;
}
void solve()
{cin>>(s+1);int l=1,r=strlen(s+1);n=r;while(l<=r&&s[l]==s[r]) l++,r--;// cout<<l<<' '<<r<<'\n';if(l>=r){         //本身回文cout<<"Yes"<<'\n';return ;}fr(i,1,n){t[i]=s[n-i+1];}T[0].init(n,s);                    T[1].init(n,t);      //定义反串for (int i = l; i <= n; i++) {if (strfz(0, l, i) == strfz(1, n - i + 1, n - i + 1 + i - l)) {   //翻转[l,i]//cout<<l<<' '<<i<<'\n';                          //比较原串翻转[l,r]后的hash与反串翻转对应的hash//cout<< n - i + 1<<' '<< n - i + 1 + i - l<<'\n';cout << "Yes\n";return;}}for (int i = r; i >= 1; i--) {if (strfz(0, i, r) == strfz(1, n - r + 1, n - r + 1 + r - i)) {cout << "Yes\n";return;}}cout << "No\n";}signed main()
{T[0].prepare();T[1].prepare();ios;int t=1;cin>>t;while(t--) solve();return 0;
}

race\牛客\多校\广西师范大学训练赛\福佑柔泽

#include<bits/stdc++.h>
#include<iostream>
#include<algorithm>
#include<map>
#include<set>
#include<queue>
#include<cstring>
#include<math.h>
#include<map>
#include<vector>
#include<stack>
#include<unordered_map>
#include<unordered_set>
#include<bitset>
#include<array>
using namespace std;#define endl '\n'#define ios ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr)
#define int long long
#define int128 __int128_t
#define ll long long
#define ld long double
typedef unsigned long long ull ;
#define fr(i,l,r) for(int i=l;i<=r;i++)
#define fer(i,x)   for(int i=e.head[x];i;i=e.next[i])
#define ufr(i,n,z) for(int i = n;i >= z; i--)
#define pb(x) push_back(x)
#define all(a) a.begin(),a.end()
#define fi first
#define se second
typedef pair<int,int> pr;
const int N = 2e5+10;
const int mod=998244353,inf=1e18;//题意:n个数,选定x使得max(ai^x)最小//思路:01字典树
//01字典树板子
struct Tree_01 {int n, idx;vector<vector<int>> tr;Tree_01(int _n) : n(_n), tr((_n + 1) * 31, vector<int>(2, 0)), idx(0) {}//构造器inline void insert(int x){int p = 0;for(int i=29;i>=0;i--){int nxt = x >> i & 1;if(!tr[p][nxt]) tr[p][nxt] = ++ idx;p = tr[p][nxt];}}/*  inline int query(int u, int x, int k)           //求出min(ai^x){if (k == -1) return 0;int bit = x >> k & 1;if (tr[u][bit ^ 1]) return query(tr[u][bit ^ 1], x, k - 1) + (1 << k);//先找相等的,求出的为与x异或后最小值else return query(tr[u][bit], x, k - 1);} */inline int query(int p,int f){            //求出最小的max(ai^x)if(f == -1) return 0;if(tr[p][0] && tr[p][1]){          //异或:相同为0,相异为1,最大一定会得到当前数return (1 << f) + min(query(tr[p][0],f - 1),query(tr[p][1],f - 1));} else if(tr[p][0]) return query(tr[p][0],f - 1);else if(tr[p][1]) return query(tr[p][1],f - 1);return 0;}
};
Tree_01 tr(100010);//定义一个字典树
int a[N];
int n,m;void solve()
{cin>>n;fr(i,1,n){cin>>a[i];tr.insert(a[i]);}cout<<tr.query(0,29)<<'\n';
}signed main()
{ios;int t=1;//   cin>>t;while(t--) solve();return 0; 
}

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

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

相关文章

uniapp中进行地图定位

目录 一、创建map 二、data中声明变量 三、获取当前位置信息&#xff0c;进行定位 四、在methods中写移动图标获取地名地址的方法 五、最终展示效果 一、创建map <!-- 地图展示 --><view class"mymap"><!-- <view class"mymap__map"…

LangChain(0.0.340)官方文档五:Model

LangChain官网、LangChain官方文档 、langchain Github、langchain API文档、llm-universe 文章目录 一、Chat models1.1 Chat models简介1.2 Chat models的调用方式1.2.1 环境配置1.2.2 使用LCEL方式调用Chat models1.2.3 使用内置Chain调用Chat models 1.3 缓存1.3.1 内存缓存…

如何调用 API | 学习笔记

开发者学堂课程【阿里云 API 网关使用教程:如何调用 API】学习笔记&#xff0c;与课程紧密联系&#xff0c;让用户快速学习知识。 课程地址&#xff1a;阿里云登录 - 欢迎登录阿里云&#xff0c;安全稳定的云计算服务平台 如何调用 API 调用 API 的三要素 要调用 API 需要三…

Oracle的回收站

Oracle的回收站 一、什么是oracle的回收站二、oracle的回收站相关操作1、设置Oracle回收站的状态2、回收站功能的使用3、查看回收站的状态和内容4、回收站具体应用案例&#xff1a; 一、什么是oracle的回收站 Oracle的回收站是一种功能&#xff0c;它允许用户在删除表中的数据…

Linux系统检查是以虚拟机还是物理机形式运行

平时工作中使用Linux大部分是通过ssh远程连接到服务器上,比如应用安装部署和系统维护等。那么,对于没有进过机房的人,如何知道自己使用的Linux服务器是虚拟机还是物理机呢? 1、dmidecode命令 dmidecode命令可以获取有关系统硬件的详细信息,包括制造商信息, 虚拟机通常会…

Hive 安装部署

文章目录 Hive 安装部署部署模式嵌入模式安装下载安装配置环境启动 Hive 客户端工具 本地模式安装下载安装 MySQL登录 MySQL安装 Hive Hive 命令行交互 Hive 安装部署 部署模式 Hive 有3种部署模式&#xff0c;分别是嵌入模式、本地模式和远程模式。关于这 3 种部署模式的具体…

【软件测试学习】—软件质量需求(四)

【软件测试学习】—软件质量需求&#xff08;四&#xff09; 1 软件质量需求的分类 软件质量需求用于确定测试目标。测试目标包括&#xff1a;功能、性能、界面、易用性、兼容性、安全性、可用性/可靠性、可维 护性、可扩展性等。功能以外统称非功能 2 功能  软件能做什么…

【JavaScript手撕代码】数组去重

利用Set function getUnRepeatArr(arr){return [...new Set(arr)] }利用filter function getUnRepeatArr(arr){return arr.filter((item, index) > {// 过滤的方法&#xff0c;如果说数组中最后一个元素的索引当前遍历到的元素的索引// 那么我们认为它是唯一的return arr.…

组网技术-交换机

交换机&#xff1a; 分类&#xff1a; 根据交换方式划分&#xff1a; 1.存储转发交换&#xff1a;交换机对输入的数据包先进行缓存、验证、碎片过滤&#xff0c;然后进行转发。 时延大&#xff0c;但是可以提供差错校验&#xff0c;并支持不同速度的输入、输出端口间的交换…

Python读取二进制文件:深入解析与技术实现

目录 一、引言 二、二进制文件的基础 1、二进制文件的组成 2、二进制文件的编码 三、Python读取二进制文件的方法 1、使用内置函数open() 2、使用numpy库 四、处理读取的二进制数据 1、解析数据 2. 转换数据类型 五、总结与展望 1、高效读取二进制文件 2、处理复杂…

ssm医药进出口交易系统源码和论文

ssm医药进出口交易系统源码和论文726 首先,论文一开始便是清楚的论述了系统的研究内容。其次,剖析系统需求分析,弄明白“做什么”,分析包括业务分析和业务流程的分析以及用例分析,更进一步明确系统的需求。然后在明白了系统的需求基础上需要进一步地设计系统,主要包罗软件架构…

电源自动切换初识

【前提&#xff1a;这里以一般的单片机产品为例&#xff0c;使用3.3V的供电系统&#xff0c;常见的USB供电、外接电源设配器供电和电池供电】 一、经典二极管切换电路 这是最简单的电源切换电路&#xff1a;二极管并联&#xff0c;理论上支持无数个电源切换&#xff0c;缺点是…

C++基础 -36- 模板之模板函数

模板函数格式 template <class T> void allexchange(T a,T b) {T c;c*a;*a*b;*bc; }模板函数可以增强函数的通用性 举例说明&#xff0c;使用一个模板函数实现了两个的函数的功能 #include "iostream"using namespace std;void myexchangeint(int* a,int* …

C语言图书管理系统的代码,包括图书录入、查询、插入、修改和删除功能。

以下是一个简单的C语言图书管理系统的代码&#xff0c;包括图书录入、查询、插入、修改和删除功能。 #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_BOOKS 100 // 最大图书数量 // 图书结构体 typedef struct { int id; //…

linux作业管理_jobs

4.2 作业管理 是指控制当前正在运行的进程的行为&#xff0c;也称为进程控制。 是shell的一个特性&#xff0c;使用户能在多个独立进程间进行切换。 例如&#xff0c;用户可以挂起一个正在运行的进程&#xff0c;稍后再恢复其运行。当用户使用vim编辑一个文本文件&#xff0c…

【Python百宝箱】《AI之道:自动化机器学习与智能决策的终极指南》

代码之梦&#xff1a;探索Python AI库的奇妙世界 前言 在当今数字时代&#xff0c;人工智能和自动机器学习已成为推动科技创新的关键力量。本文深入探讨了多个强大的Python库&#xff0c;涵盖了从自动化模型选择、特征工程到模型解释性的全方位工具&#xff0c;为读者提供了丰…

java TrueLicense实现 实现License授权许可和验证

文章目录 简述License 生成License 客户端部署 简述 可用于项目交付项目部署到甲方以及包括代码防止泄露&#xff0c;经常会出现公司内部代码被已离职人员在下家公司使用&#xff0c;底层代码的封装增加license部分&#xff0c;杜绝这块的问题。定期更换license文件可进行续期…

Blast使用

makeblastdb注意事项makeblastdb及blastn的使用使用Blast本地数据库获得PSSM特征矩阵BLAST Database error: No alias or index file found for protein database报错BLAST Database error: No alias or index file found for nucleotide database[db] in search path的可能原因…

Linux命令(141)之sar

linux命令之sar 1.sar介绍 linux命令sar是用来从各个方面对系统的活动进行监控报告&#xff0c;包括&#xff1a;CPU使用率&#xff0c;内存使用&#xff0c;磁盘I/O等 2.sar用法 sar [参数] [ <时间间隔> [ <次数> ] ] sar参数 参数说明-A显示系统所有资源设备…

python scipy.spatial.distance.pdist学习详记——(待完善)

1.Python scipy.spatial.distance.pdist用法及代码示例