字典树模板+位运算

news2024/7/8 1:43:32

P3879 [TJOI2010] 阅读理解 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

trie树板子题,稍微有一丢丢不一样,套用字典树模板稍加修改就能过

手搓字典树代码:

char ch[1010][26], cnt[1010], idx;
void insert(string s)//插入
{
	int p = 0;
	for (int i = 1; s[i]; i++)
	{
		int j = s[i] - 'a';
		if (!ch[p][j])
		{
			ch[p][j] = ++idx;
		}
		p = ch[p][j];
	}
	cnt[p]++;
}
int query(string s)//查询
{
	int p = 0;
	for (int i = 1; s[i]; i++)
	{
		int j = s[i] - 'a';
		if (!ch[p][j])
		{
			return 0;
		}
		p = ch[p][j];
	}
	return cnt[p];
}

题解代码:

#include<bits/stdc++.h>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<vector>
#include<math.h>
using namespace std;
typedef long long ll;
char s[50010];
char ch[500010][26], idx;
char w[500010][1010];
int n, m;
inline int read()
{
	int k = 0, f = 1; 
	char ch = getchar();
	while (ch < '0' || ch>'9')
	{
		if (ch == '-')
			f = -1;
		ch = getchar();
	}
	while (ch >= '0' && ch <= '9')
	{
		k = k * 10 + ch - '0';
		ch = getchar();
	}
	return k * f;
}
void insert(int x)
{
	scanf("%s", s + 1);
	int l = strlen(s + 1);
	int p = 0;
	for (int i = 1; i<=l; i++)
	{
		int j = s[i] - 'a';
		if (!ch[p][j])
		{
			ch[p][j] = idx++;
		}
		p = ch[p][j];
	}
	w[p][x] = 1;
}
void check()
{
	scanf("%s", s + 1);
	int l = strlen(s + 1);
	int p = 0;
	int flag = 1;
	for (int i = 1; i<=l; i++)
	{
		int j = s[i] - 'a';
		if (!ch[p][j])
		{
			flag = 0;
			break;
		}
		p = ch[p][j];
	}
	if (flag)
	{
		for (int i = 1; i <= n; i++)
		{
			if (w[p][i])
			{
				cout << i << " ";
			}
		}
		cout << endl;
	}
}
int main()
{
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	n = read();
	for (int i = 1; i <= n; i++)
	{
		int x = read();
		for (int j = 1; j <= x; j++)
		{
			insert(i);
		}
	}
	m = read();
	for (int i = 1; i <= m; i++)
	{
		check();
	}
	return 0;
}

位运算:

左移:

1<<n=2^n,n<<1=2n

右移:

n>>1=n/2

取出n在二进制下的第k位:(n>>k)&1

取出n在二进制下的第0~k-1位(后k位):n&((1<<k)-1)

把n在二进制下的第k位取反:n xor(1<<k)

对n在二进制下的第k位赋值1:n|(1<<k)

对n在二进制下的第k位赋值0:n&(~(1<<k))

来两道位运算的题目练练手(算法竞赛进阶指南)

P1226 【模板】快速幂 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

思路:

解决这道题有两种方法:

1.分治思想:n为偶数时把2^n分成a^(n/2),n为奇数时分为a^(n/2)*a

2.倍增思想:稍微有一点难理解(

从头开始。若当前 p 为偶数,咱们不着急,只需把 x 自乘,然后 p/=2 (即考虑下一层,下几层会帮我们乘上 (x2)p/2的)。

若当前 p 为奇数,说明 p=x∗(x2)(p−1)/2 中前面那个 x 的存在,ans∗=x。然后继续考虑下一层(下几层会帮我们乘上(x2)(p−1)/2的)

)

代码1(分治):
#include<bits/stdc++.h>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<vector>
#include<math.h>
#include <stdio.h>
using namespace std;
typedef long long ll;
inline int read()
{
	int k = 0, f = 1; char ch = getchar();
	while (ch < '0' || ch>'9')
	{
		if (ch == '-')
			f = -1;
		ch = getchar();
	}
	while (ch >= '0' && ch <= '9')
	{
		k = k * 10 + ch - '0';
		ch = getchar();
	}
	return k * f;
}
int solve(ll a, ll b, ll p)
{
	if (b == 0)
		return 1;
	ll ans = solve(a, b / 2, p) % p;
	if (b % 2 == 0)
	{
		return ans * ans % p;
	}
	else
	{
		return ans * ans % p * a % p;
	}
}
int main()
{
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	ll a, b, p;
	cin >> a >> b >> p;
	cout << a << "^" << b << " mod " << p << "=" << solve(a, b, p) << endl;
	return 0;
}
代码2(倍增):
#include<bits/stdc++.h>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<vector>
#include<math.h>
#include <stdio.h>
using namespace std;
typedef long long ll;
inline int read()
{
	int k = 0, f = 1; char ch = getchar();
	while (ch < '0' || ch>'9')
	{
		if (ch == '-')
			f = -1;
		ch = getchar();
	}
	while (ch >= '0' && ch <= '9')
	{
		k = k * 10 + ch - '0';
		ch = getchar();
	}
	return k * f;
}
void solve(ll x, ll y, ll p)
{
	ll ans = 1 % p;
	for (; y; y >>= 1)
	{
		if (y & 1)
		{
			ans = ans * x % p;
		}
		x = x * x % p;
	}
	cout << x << "^" << y << " mod " << p << "=" << ans << endl;
}
int main()
{
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	ll a, b, p;
	cin >> a >> b >> p;
	solve(a, b, p);
	return 0;
}

P10446 64位整数乘法 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

代码:

#include<bits/stdc++.h>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<vector>
#include<math.h>
#include <stdio.h>
using namespace std;
typedef long long ll;
inline int read()
{
	int k = 0, f = 1; char ch = getchar();
	while (ch < '0' || ch>'9')
	{
		if (ch == '-')
			f = -1;
		ch = getchar();
	}
	while (ch >= '0' && ch <= '9')
	{
		k = k * 10 + ch - '0';
		ch = getchar();
	}
	return k * f;
}
void solve(ll x, ll y, ll z)
{
	ll ans = 0;
	for (; y; y >>= 1)
	{
		if (y & 1)
			ans = (ans + x) % 5;
		x = (x * 2) % z;
	}
	cout << ans;
}
int main()
{
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	ll a, b, p;
	cin >> a >> b >> p;
	solve(a, b, p);
	return 0;
}

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

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

相关文章

精准畜牧业:多维传感监测及分析动物采食行为

全球畜牧业呈现出一个动态且复杂的挑战。近几十年来&#xff0c;它根据对动物产品需求的演变进行了适应&#xff0c;动物生产系统需要提高其效率和环境可持续性。在不同的畜牧系统中有效行动取决于科学技术的进步&#xff0c;这允许增加照顾动物健康和福祉的数量。精准畜牧业技…

【C++ | 继承】|概念、方式、特性、作用域、6类默认函数

继承 1.继承的概念与定义2.继承的方式2.1继承基本特性2.2继承的作用域2.2.1隐藏赋值兼容 派生类的创建和销毁构造函数拷贝构造赋值重载 1.继承的概念与定义 继承是面向对象编程中的一个重要概念。它的由来可以追溯到软件开发中的模块化设计和代码复用的需求。 在软件开发过程…

山西车间应用LP-LP-SCADA系统的好处有哪些

关键字:LP-SCADA系统, 传感器可视化, 设备可视化, 独立SPC系统, 智能仪表系统,SPC可视化,独立SPC系统 LP-SCADA&#xff08;监控控制与数据采集&#xff09;系统是工业控制系统的一种&#xff0c;主要用于实时监控、控制和管理工业生产过程。 在车间应用LP-SCADA系统&#xf…

【项目日记(四)】搜索引擎-Web模块

❣博主主页: 33的博客❣ ▶️文章专栏分类:项目日记◀️ &#x1f69a;我的代码仓库: 33的代码仓库&#x1f69a; &#x1faf5;&#x1faf5;&#x1faf5;关注我带你了解更多项目内容 目录 1.前言2.前端模块2.1页面设计2.2后端交互 3.部署到云服务器4.总结 1.前言 在前面的文…

25届最近5年华北电力大学自动化考研院校分析

华北电力大学&#xff08;北京保定&#xff09; 目录 一、学校学院专业简介 二、考试科目指定教材 三、近5年考研分数情况 四、近5年招生录取情况 五、最新一年分数段图表 六、初试大纲复试大纲 七、学费&奖学金&就业方向 一、学校学院专业简介 二、考试科目指…

论文导读 | knowledge-based VQA

背景介绍 传统的视觉问答&#xff08;Visual Question Answering, VQA&#xff09;基准测试主要集中在简单计数、视觉属性和物体检测等问题上&#xff0c;这些问题不需要超出图像内容的推理或知识。然而&#xff0c;在knowledge-based VQA中&#xff0c;仅靠图像无法回答给定的…

DA-LSTM多输入分类|蜻蜓算法-长短期神经网络|Matlab

目录 一、程序及算法内容介绍&#xff1a; 基本内容&#xff1a; 亮点与优势&#xff1a; 二、实际运行效果&#xff1a; 三、算法介绍&#xff1a; 四、完整程序下载&#xff1a; 一、程序及算法内容介绍&#xff1a; 基本内容&#xff1a; 本代码基于Matlab平台编译&am…

大疆2025校招内推

需要内推码的请留言哦 期待你的加入

哪个麦克风唱歌效果好,哪个麦克风好,无线麦克风十大排名分享

​在数字化时代的背景下&#xff0c;声音的传播与记录变得日益重要。无论是会议室、教室还是户外场所&#xff0c;无线领夹麦克风凭借其便携性和稳定的连接性能&#xff0c;成为人们沟通表达的首选工具。面对众多选择&#xff0c;我为你精选了几款性能卓越且性价比高的无线领夹…

DVWA sql手注学习(巨详细不含sqlmap)

这篇文章主要记录学习sql注入的过程中遇到的问题已经一点学习感悟&#xff0c;过程图片会比较多&#xff0c;比较基础和详细&#xff0c;不存在看不懂哪一步的过程 文章目录 靶场介绍SQL注入 lowSQL注入 MediumSQL注入 HighSQL注入 Impossible 靶场介绍 DVWA&#xff08;Damn…

巴图自动化Modbus协议转Profinet协议网关模块连智能仪表与PLC通讯

一、现场要求:PLC作为控制器&#xff0c;仪表设备作为执行设备。执行设备可以实时响应PLC传送的指令&#xff0c;并将数据反馈给PLC&#xff0c;从而实现PLC对仪表设备的控制和监控&#xff0c;实现对生产过程的精确控制。 二、解决方案:通过巴图自动化Modbus协议转Profinet协议…

C++ 智能指针内存泄漏问题

shared_ptr相互嵌套导致循环引用 代码示例 #include <iostream> #include <memory> using namespace std;class B;class A { public:std::shared_ptr<B> b_ptr;~A() { std::cout << "A destroyed\n"; } };class B { public:std::shared_pt…

明星代言6个提升企业形象的杀手锏-华媒舍

在当今竞争激烈的商业世界中&#xff0c;企业形象的塑造对于品牌的发展至关重要。而明星代言作为一种常见的营销手段&#xff0c;被广泛使用来提升企业形象和产品销售。本文将介绍明星代言的六个杀手锏&#xff0c;帮助您了解如何通过明星代言来提升企业形象。 1. 拥有广泛的影…

PCB设计时,信号走线要先过ESD/TVS管,这是为什么?

目录 为什么有上面这个问题&#xff1f; 问题的原因——走线电感 走线电感的阻抗 电感的影响 小结 都说接口处的信号要先过ESD/TVS管&#xff0c;然后拉到被保护器件&#xff0c;为什么不这样做效果就不好&#xff1f;那如果受板子实际情况限制&#xff0c;必须这样layout…

专题二:Spring源码编译

目录 下载源码 配置Gradle 配置环境变量 配置setting文件 配置Spring源码 配置文件调整 问题解决 完整配置 gradel.properties build.gradle settiings.gradel 在专题一&#xff1a; Spring生态初探中我们从整体模块对Spring有个整体的印象&#xff0c;现在正式从最…

经典卷积神经网络 LeNet

一、实例图片 #我们传入的是28*28&#xff0c;所以加了padding net nn.Sequential(nn.Conv2d(1, 6, kernel_size5, padding2), nn.Sigmoid(),nn.AvgPool2d(kernel_size2, stride2),nn.Conv2d(6, 16, kernel_size5), nn.Sigmoid(),nn.AvgPool2d(kernel_size2, stride2),nn.Flat…

Android EditText的属性与用法

EditText 是编辑框控件&#xff0c;可以接收用户输入&#xff0c;并在程序中对用户输入进行处理。EditText在App里随处可见&#xff0c;在进行搜索、聊天、拨号等需要输入信息的场合&#xff0c;都可以使用 EditText。 图1 编辑框示意图 EditText 是TextView的子类&#xff0c…

吴恩达深度学习笔记:机器学习策略(2)(ML Strategy (2)) 2.5-2.6

目录 第三门课 结构化机器学习项目&#xff08;Structuring Machine Learning Projects&#xff09;第二周&#xff1a;机器学习策略&#xff08;2&#xff09;(ML Strategy (2))2.5 数据分布不匹配时的偏差与方差的分析&#xff08;Bias and Variance with mismatched data di…

下载安装MySQL

1.软件的下载 打开官网下载mysql-installer-community-8.0.37.0.msi 2.软件的安装 mysql下载完成后&#xff0c;找到下载文件&#xff0c;双击安装 3.配置环境变量 4.自带客户端登录与退出

CSS filter(滤镜)属性,并实现页面置灰效果

目录 一、filter&#xff08;滤镜&#xff09;属性 二、准备工作 三、常用的filter属性值 1、blur(px) 2、brightness(%) 3、contrast(%) 4、grayscale(%) 5、opacity(%) 6、saturate(%) 7、sepia(%) 8、invert(%) 9、hue-rotate(deg) 10、drop-shadow(h-shadow v…