习题练习以

news2024/9/30 23:28:37

题意:求i&M的popcount的和,i属于0……N

主要思路还是变加为乘。

举个例子N=22,即10110

假设M的第3位是1,分析N中:

00110

00111

00100

00101

发现其实等价于

0010

0011

0000

0001

也就是左边第4位和第5位不变,右边第1位和第2位不变拼接起来,相当于0000~0011

01110

01111

01100

01101

等价于:

0110

0111

0100

0101

相当于0100~0111

10110

10111

10100

10101

相当于1000~1010

最后把3个部分合一起就是0000~1010

如果M的第3位是0,比如说10010(二进制),其实等价于求01110这个二进制数

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int mod=998244353;
ll ans,n,m;
int main(){
	cin>>n>>m;
	for(int i=0;i<60;i++){
		if((m>>i)&1){
			ll mask=(1ll<<i)-1;
			if((n>>i)&1){
				ll tmp=(n>>(i+1)<<i)|(n&mask);//左边拼接上右边
				ans=(ans+tmp+1)%mod;
			}	
			else {
				ll t=(n-(1ll<<i))|mask;//先把n更新一下,注意要把右边变成最大值
				ll tmp=(t>>(i+1)<<i)|(t&mask);//同样处理
				ans=(ans+tmp+1)%mod;
			}
		}
	}
	cout<<ans;
}

题意:共n把钥匙m次测试,至少k把钥匙才打开门,问满足所有测试条件的真钥匙的组合种类

位元枚举:用位元表示所有真钥匙的组合,然后保存每个测试的钥匙状态,满足所有测试就是答案组合

#include <bits/stdc++.h>
using namespace std;
int keys[20];
char r[105];
int f(int x){
	int ct=0;
	while(x){
		if(x&1)ct++;x>>=1;
	}
	return ct;
}
int main(){
	int n,m,k;cin>>n>>m>>k;//n把钥匙,m个测试,至少k把钥匙才能打开门
	for(int i=0;i<m;i++){
		int c;cin>>c;
		while(c--){
			int a;cin>>a;
			keys[i]|=1<<(a-1);//把i测试用的钥匙存起来
		}
		cin>>r[i];//最终门的状态
	}
	int ans=0;
	for(int s=0;s<(1<<n);s++){//枚举所有正确钥匙的组合情况
		bool er=0;
		for(int i=0;i<m;i++){//看看是否满足所有的测试用例
			if((f(keys[i]&s)>=k&&r[i]!='o')||(f(keys[i]&s)<k&&r[i]=='o')){
				er=1;break;
			}
		}
		ans+=!er;
	}cout<<ans;
}

不难发现:10101010101010101010 = 10*(1010101010101010101)

就是10*(10^0+10^2+10^4+10^6+10^8+10^10+10^12+10^14+10^16+10^18) 进行等比求和:

10*(10^20-1)/(10^2-1)

那么输入一个N,我们计算出其长度len

就是:N*(10^0+10^len+10^len*2+10^len*3+……+10^len*n-1)

就是N*(10^len*n)/(10^len-1)

然后知识点:a/b%mod=a*b^(mod-2)%mod

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MOD=998244353;
ll f(ll x,ll y){
	x%=MOD;
	ll res=1;
	while(y){
		if(y&1)res=res*x%MOD;
		y>>=1;x=x*x%MOD;
	}
	return res;
}
ll inv(ll x){
	return f(x,MOD-2);
}
int main(){
	ll n;cin>>n;
	int len=(to_string(n)).size();
	cout<<n%MOD * (f(f(10,n),len)-1)%MOD * inv(f(10,len)-1)%MOD<<'\n';
}

题意:一共有n个店,每个店有许多口味,问能尝到所有口味至少要去多少家店

位元枚举:用位元来表示所有店的组合,并保存每个店提供的口味状态,如果某个组合中可提供所有的口味就行

#include <bits/stdc++.h>
using namespace std;
int d[10];
int main(){
	int n,m;
	cin>>n>>m;//n个店,m种口味
	for(int i=0;i<n;i++){
		string s;cin>>s;
		for(char c:s){
			d[i]=(d[i]<<1)+(c=='o');//保存第i个店卖的口味状态
		}
	}
	int an=100;
	for(int i=0;i<(1<<n);i++){//枚举所有的店的组合
		int now=0,cnt=0;
		for(int j=0;j<n;j++){
			if((i>>j)&1)now|=d[j],cnt++;//把组合中的每个店卖的东西都合并起来
		}
		if(now==(1<<m)-1)an=min(an,cnt);//如果当好覆盖了所有口味,那就更新一次答案
	}
	cout<<an;
}

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

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

相关文章

数据库基础练习4

准备 create table dept (dept1 int ,dept_name varchar(11)) charsetutf8; create table emp (sid int ,name varchar(11),age int,worktime_start date,incoming int,dept2 int) charsetutf8;insert into dept values(101,财务),(102,销售),(103,IT技术),(104,行政);INSERT …

诸葛亮的连环计 责任链模式

“万事谋定而后动&#xff0c;一环扣一环&#xff0c;方能成大事。” 在三国时期&#xff0c;诸葛亮以其超凡的智慧闻名天下。在他众多的计策中&#xff0c;有一个鲜为人知却极具智慧的连环计&#xff0c;完美诠释了现代软件设计中的责任链模式。让我们一同探索这个巧妙的计策…

【安全设备】堡垒机

一、什么是堡垒机 安全运维审计与风险控制系统即堡垒机&#xff0c;前身为跳板机&#xff0c;跳板机是一个简单的管理设备&#xff0c;但缺乏对运维操作的控制和审计能力。堡垒机是一种特定的网络安全设备&#xff0c;用于在一个网络环境中保护数据和网络不受外部和内部用户的…

Python酷库之旅-第三方库Pandas(013)

目录 一、用法精讲 31、pandas.read_feather函数 31-1、语法 31-2、参数 31-3、功能 31-4、返回值 31-5、说明 31-6、用法 31-6-1、数据准备 31-6-2、代码示例 31-6-3、结果输出 32、pandas.DataFrame.to_feather函数 32-1、语法 32-2、参数 32-3、功能 32-4、…

Go语言入门之基础语法

Go语言入门之基础语法 1.简单语法概述 行分隔符&#xff1a; 一行代表一个语句结束&#xff0c;无需写分号。将多个语句写在一行可以用分号分隔&#xff0c;但是不推荐 注释&#xff1a; // 或者/* */ 标识符&#xff1a; 用来命名变量、类型等程序实体。 支持大小写字母、数字…

Golang | Leetcode Golang题解之第226题翻转二叉树

题目&#xff1a; 题解&#xff1a; func invertTree(root *TreeNode) *TreeNode {if root nil {return nil}left : invertTree(root.Left)right : invertTree(root.Right)root.Left rightroot.Right leftreturn root }

Python函数 之 模块和包

1.模块 1, 在Python 中, 每个以 .py 结尾的 Python 代码⽂件 都可以称为是⼀个模块。 2, 在模块中 别⼈书写好的功能(变量, 函数, 类)&#xff0c;我们可以拿来直接使⽤。 3, 我们自己写的代码文件&#xff0c; 想要作为模块让别⼈使⽤, 你的代码⽂件名(模块名) 满足标识符的规…

大话光学原理:4.散射:瑞利、拉曼、米氏和布里渊

这是一缕柔和的光&#xff0c;在空气的舞台上轻盈地跳跃。它悠然自得&#xff0c;在宁静的空间中缓缓前行。然而&#xff0c;一片细薄透明的介质挡住了它的脚步&#xff0c;它毫无预兆地撞上了这片障碍。在这短暂的接触中&#xff0c;它被分解成无数微小的粒子&#xff0c;被迫…

LabVIEW电滞回线测试系统

铁电材料的性能评估依赖于电滞回线的测量&#xff0c;这直接关系到材料的应用效果和寿命。传统的电滞回线测量方法操作复杂且设备成本高。开发了一种基于LabVIEW的电滞回线测试系统&#xff0c;解决传统方法的不足&#xff0c;降低成本&#xff0c;提高操作便捷性和数据分析的自…

前端面试题38(js原型与对象)

在JavaScript中&#xff0c;原型&#xff08;prototype&#xff09;是核心特性之一&#xff0c;它用于实现对象之间的继承和属性方法的共享。理解原型和对象的关系对于深入学习JavaScript至关重要。下面我会详细解释这两个概念以及它们是如何工作的&#xff0c;并给出一些示例代…

关于Python的类的一些理解

才发现python的类对象只能调用类方法 我想使用对类对象a使用系统调用的len方法就会报错 2.类对象a是什么&#xff1f; 答&#xff1a;是所有的带有self的成员变量 举例说明&#xff1a;红色的就是a里面的东西 class A:def __init__(self,data):self.datadataself.b1self.d{a…

详细分析@FunctionalInterface的基本知识(附Demo)

目录 前言1. 基本知识2. Demo 前言 Java的基本知识推荐阅读&#xff1a; java框架 零基础从入门到精通的学习路线 附开源项目面经等&#xff08;超全&#xff09;Spring框架从入门到学精&#xff08;全&#xff09; 1. 基本知识 FunctionalInterface 是 Java 8 引入的一个注…

理解负载组电路-EAK负载电路解释

负载组具有安全、可靠、操作方便、使用寿命长等特点。了解控制、冷却和负载元件电路的布局和功能对于理解负载组的运行、为应用选择负载组和维护负载组非常重要。以下各节将描述这些电路。 EAK负荷组运行概述 负载组接收来自电源的电力&#xff0c;将其转换为热量&#xff0c;…

【漏洞复现】通达OA v2017 video_file.php 任意文件下载漏洞

免责声明&#xff1a; 本文内容旨在提供有关特定漏洞或安全漏洞的信息&#xff0c;以帮助用户更好地了解可能存在的风险。公布此类信息的目的在于促进网络安全意识和技术进步&#xff0c;并非出于任何恶意目的。阅读者应该明白&#xff0c;在利用本文提到的漏洞信息或进行相关测…

数据结构之折半查找

折半查找的算法思想&#xff1a; 折半查找又称二分查找&#xff0c;它仅仅适用于有序的顺表。 折半查找的基本思想&#xff1a;首先将给定值key与表中中间位置的元素&#xff08;mid的指向元素&#xff09;比较。midlowhigh/2&#xff08;向下取整&#xff09; 若key与中间元…

字典树(Tire树)

字典树(Tire树) 字典树是一种多叉树&#xff0c;又称为前缀树。核心思想是利用字符串的公共前缀。 字典树的根节点为空&#xff0c;从根节点到某一节点路径上的字符连接起来构成字符串&#xff0c;完整的字符串在链上而非结点上&#xff0c;一个节点的所有子节点都具有相同公…

AMSR-E L2 降雨子集:GES DISC 的 CloudSat 轨道 V002 (AMSERR_CPR) 位于同一地点

AMSR-E L2 Rainfall Subset, collocated with CloudSat track V002 (AMSERR_CPR) at GES DISC AMSR-E L2 降雨子集&#xff0c;与位于 GES DISC 的 CloudSat 轨道 V002 (AMSERR_CPR) 位于同一地点 简介 这是沿云卫星视场轨迹的 AMSR-E 雨率产品子集。子集的目标是选择并返回…

英福康INFICON FabGuard传感器集成与分析系统PPT

英福康INFICON FabGuard传感器集成与分析系统PPT

14-65 剑和诗人39 - 打造你自己的 Devin

​​​​​ 绝密 Devin 架构 更具体地说,构建您自己的 AI 代理。 Devin 使用 GPT-4 ,而人们已经开始用 Claude-3-Opus 构建替代方案 Devin 的 UI 体验更好。 例如,它甚至看不到浏览器,但它确实存在于用户面前 此外,你可以随时与它“交谈”,就像与人交谈一样,它会在后…

使用linux的mail命令发送html格式的邮件

1、关闭本机的sendmail服务或者postfix服务 #执行下面的命令&#xff0c;各位大侠都对号入座吧 #sendmial service sendmail stop chkconfig sendmail off #postfix service postfix stop chkconfig postfix off#再狠一点就直接卸载吧.. yum remove sendmail yum remove postf…