【JZOJ100046】收集卡片【模拟】

卡片收集问题 卡片收集问题问题春节产品设计了一个集卡活动,有45张卡片,共有53次抽卡机会,问我集齐卡片的概率是多大?集齐卡片的抽卡次数期望是多少?解答 一般性的,设卡片有m张,抽取机会有n次,那么n次集齐的概率 P(n,m)=m!⋅S(n,m)mn=∑mi=0(−1)i⋅Cim(m−i)nmn P(n,m)=\frac{m! \cdot S(n,m)}{m^n}=\frac{\sum_{i=0}^m(-1)^ 阅读详情

题目大意:

题目链接:https://jzoj.net/senior/#main/show/100046
题目图片:
http://wx3.sinaimg.cn/mw690/0060lm7Tly1fy7ghcpx5gj30j50fc0t4.jpg
http://wx4.sinaimg.cn/mw690/0060lm7Tly1fy7ghcpmnaj30j605dt8m.jpg
给出一个长 n n n的字符串,求最短连续子串包含了原串中含有的所有字母。


思路:

很明显的双指针模拟。
每次往前移指针 i i i,那么自然的可能需要后移指针 j j j。
用 n u m [ x ] num[x] num[x]表示字母 x x x在 s [ k ] ( k ∈ [ i , j ) ) s[k](k\in[i,j)) s[k](k∈[i,j))中出现的次数。 s u m sum sum表示两个指针之间不同字母的个数。
当 s u m = sum= sum=总字母数时,那么 [ i , j ) [i,j) [i,j)就是一个符合要求的子串,长度 j − i + 1 j-i+1 j−i+1。
否则后移指针 j j j。
实际上为了简便,可以把字母转换成数字, 1 ∼ 26 1\sim 26 1∼26分别表示 a ∼ z a\sim z a∼z, 27 ∼ 52 27\sim52 27∼52分别表示 A ∼ Z A\sim Z A∼Z。


代码:

#include <cstdio>
#include <iostream>
using namespace std;

const int N=500010;
int n,ans,sum,num[100],a[N],maxn;
char c;
bool vis[100],ok;

int main()
{
	scanf("%d",&n);
	for (int i=1;i<=n;i++)
	{
		c=getchar();
		while ((c<'a'||c>'z')&&(c<'A'||c>'Z')) c=getchar();
		if (c>='a'&&c<='z') a[i]=c-'a'+1;
			else a[i]=c-'A'+27;  //转换成数字
		if (!vis[a[i]])
		{
			maxn++;
			vis[a[i]]=1;
		}
	}
	int i=0,j=0;
	ans=2147483647;
	num[0]=23333;
	while (j<=n)
	{
		num[a[i]]--;
		if (!num[a[i]]) sum--;  //该数子不在区间[i,j)内了
		i++;
		while (sum<maxn&&j<=n)  //没有包含所有字母
		{
			j++;
			if (j>n)
			{
				ok=1;
				break;
			}
			if (!num[a[j]]) sum++;  //新字母
			num[a[j]]++;
		}
		if (ok) break;
		ans=min(ans,j-i+1);
	}
	printf("%d\n",ans);
	return 0;
}

题外话

也可以用前缀和+二分做,时间复杂度 O ( n   l o g n ) O(n\ logn) O(n logn)。

NKOJ 2127 搜集卡片 (数学期望+状态压缩+递推) P2127【概率】搜集卡片问题描述 童年时代,你是否热衷于搜集零食里的卡片呢?比如你集齐了108张水浒英雄的卡片,你会感到非常有成就感,而且还可以去兑换奖品。 作为一个聪明的小孩,你注意到如果你要赢得奖品,你必须买很多很多的零食才能搜集齐卡片。要赢得奖品,你估计要买多少袋零食才能成功? 输入格式 第一行,一个整数N(1 <= N <= 20), 表示总共有N种不同的卡片。 第 阅读详情

相关推荐

HDU 4336 集齐方便面卡片的期望-期望dp 或 容斥原理 -(二进制压缩辅助)

题意:要集齐n种卡片,现已知每打开一袋方便面得到每种卡片的概率Pi,Pi的和小于等于1,求集齐这n种卡片需要买的方便面的期望。 分析: 一、期望dp,这题要用二进制压缩,这是很显然的。 状态:dp[i]现在已经收集了i种卡片到达收集所有卡片的期望。这个状态能转移到的状态有:1).dp[i](下次打开的方便面得到的卡片是已经收集过的);2).dp[i|(1 所以方程:dp[i]=Pi * d

关于学习本身 2977

CCF-CSP-202109-4-收集卡牌

原题链接 满分代码 #include <iostream> #include <cstring> #include <algorithm> #include <cmath> #define x first #define y second using namespace std; typedef double LL; const int N = 1<<16,M = 6; int n,k; LL a[16]; LL f[N][16*6]; /

yunfeng 1829

10分钟上手YOLOv11:最强姿态估计模型来了,代码开源,效果炸裂!

【10分钟玩转YOLOv11实时姿态估计】🚀 YOLOv11作为YOLO家族最新成员,在速度、精度和易用性上全面升级,尤其适用于姿态估计等复杂视觉任务。本文带您快速掌握: 1️⃣ 核心概念:姿态估计即识别人体17个关键点(如关节部位)并连接成数字骨架,是智能健身、体感游戏等应用的基础。 2️⃣ 技术优势: 超轻量级(最小仅2.9M参数) 极速推理(GPU仅1.7ms) 高精度(COCO mAP@50-95达50%) 3️⃣ 三步实操: ① 安装:pip install ultralytics ② 准备人物

weixin_41246802的博客 1787

202109-4收集卡牌100pts

#include<bits/stdc++.h> using namespace std; const int N=16,M=1<<16; double f[M][90]; double p[N]; int n,m; double dp(int s,int c,int r){ if(f[s][c]) return f[s][c]; if(c>=r*m) return 0; for(int i=0;i<n;i++) if(s>>i&

qq_47121395的博客 370

Gazebo仿真环境下的强化学习实现

实际上利用Gazebo进行强化学习无非是环境获取上的不同,Gazebo的环境控制需要使用ROS服务进行控制,状态可以通过Gazebo进行获取,同时某些必要数据需要从话题中获取,最重要的是组织获取 的数据(通过话题等)与控制Gazebo的仿真步骤之间的组合。强化学习的手段与传统算法无异,强化学习方法最重要的是要确定动作空间、状态空间、奖励空间,这三个空间是work的前提。在笔者自己的环境中,将获取里程计的话题以及获取激光点的数据替换成为了自己的本机的仿真环境匹配的话题。

Moresweet 猫甜 6450

域自适应的理解与想法(Domain Adaptation)

这幅图是域适应非常有名的一篇论文中的插图,被很多文章转载。 什么是领域自适应? Domain Adaptation是迁移学习中很重要的一部分内容,目的是把分布不同的源域和目标域的数据,映射到一个特征空间中,使其在该空间中的距离尽可能近。于是在特征空间中对source domain训练的目标函数,就可以迁移到target domain上,提高target domain上的准确率。 上面的图主要的思想来源于GAN,上图由三部分组成:特征映射网络 标签分类网络和和域判别网络 其中,source domain的数.

yuanxue18的博客 5982

CCF CSP 202109-4 收集卡牌

再刷CCF历年题,主要目标在于攻克历年3,4题

OTS_14的博客 802

GAMES104:02引擎架构分层-学习笔记

用户层工具层(Tool Layer):编辑器、工具界面功能层(Function Layer):渲染Rendering、动画Animation、物理Physics、相机Camera和实现游戏性的脚本Script、状态机FSM、AI等功能模块资源层(Resource Layer):各类图片、动画、音频资源加载核心层(Core Layer):核心功能如内存管理、容器分配、数据计算、多线程处理等平台层(Platform Layer):对接不同游戏平台、主机和硬件。

噗噗噗的博客 1267

c++数字卡片题目

已知小猴现在盒子中的卡片分别是 a1​,a2​,…,an−1​,请你帮助小猴找出缺少的是那一张数字卡片,并输出对应卡片上的数字。因为小猴家的猫咪贪玩,打翻了装着数字卡片的盒子,经过千辛万苦小猴终于把卡片捡起来装到盒子,但是发现少了一张数字卡片。小猴收集了 n 张数字卡片,每一种数字卡片小猴恰好只有一张且都在 1~n 的范围内。第二行包含 n−1 个整数 a1​,a2​,…一行一个整数,表示缺少的是那一张数字卡片。第一行包含一个整数 n。【输入输出样例#1】

m0_72019193的博客 543

第4篇:使用 NModbus 库快速搭建 Modbus TCP 通信(从零开始用 C# 开发 Modbus 上位机)

本文介绍了如何使用 NModbus 库快速搭建 Modbus TCP 上位机通信程序。通过安装 NModbus4 NuGet 包,开发者可以轻松实现 Modbus TCP 连接,无需手动处理底层协议细节。文章详细演示了核心功能实现: 创建 TCP 客户端连接设备 读取保持寄存器(功能码0x03) 写入单个寄存器(功能码0x06) 关闭连接释放资源 提供完整C#示例代码,包含初始化连接、数据读写等关键操作,帮助开发者快速构建Modbus TCP通信应用。相比手动实现,NModbus库大幅简化了开发流程,特别适

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1045

GEE APP:时间序列影像批处理工具:按月筛选与智能导出解决方案出工具

本文介绍了一个基于Google Earth Engine(GEE)开发的智能时序影像处理工具,可高效处理遥感影像时间序列数据。该工具采用三栏式交互布局,包含控制面板、地图显示和缩略图预览区域。核心功能包括:1)灵活的时间筛选机制,支持年度范围选择和月份批量选择;2)智能影像筛选算法,基于云量、空间覆盖等条件自动选择最佳影像;3)交互式缩略图预览,支持点击加载完整影像;4)自动化批量导出系统,实现标准化命名和统一存储。工具可广泛应用于农业监测、城市扩张研究、生态环境评估等领域,显著提高遥感数据预处理效率,确保

此星光明博客 113

202109-4 收集卡牌

csp

qikik的博客 438

YOLOv8中的可变形卷积改进 | 从DCNv1到DCNv3的多位置替换可变形卷积保姆级实操

可变形卷积(Deformable Convolution)最早由Dai等人在2017年提出,其核心思想是在标准卷积操作的基础上,引入可学习的偏移量(offsets),使卷积核能够自适应调整其采样位置,从而增强模型对目标变形的感知能力。return x本文通过深入探讨可变形卷积在YOLOv8中的应用,详细介绍了DCNv1、DCNv2和DCNv3的原理和实现,并通过实验验证了其在目标检测任务中的有效性。未来,我们将继续探索更多优化策略和技术,提升YOLOv8模型的性能,以应对更复杂的目标检测任务。

一键难忘的博客 4049

2018.12.15【NOIP提高组】模拟B组 JZOJ 100046 收集卡片

指针,桶

Ajwallet 388

AI Agent开发第82课-手把手教你把paddleocr-vl做成mcp使其在DIFY里运行

本文详解如何将国产顶尖多模态 OCR 模型 PaddleOCR-VL 封装为标准 MCP(Model Calling Protocol)服务,并通过自研的 HTTP-based MCP Client 接入 Dify 1.10,实现 AI Agent 在对话中自动识别并调用 OCR 能力。该方案已在某头部保险公司真实业务流程中落地,使用了当前最先进的“Agentic AI 原生”设计思想。

打造全国最全的AI Agent开发知识领域的博客 1625

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

JZOJ100046. 【NOIP2017提高A组模拟7.14】收集卡片

DescriptionStar 计划订购一本将要发行的周刊杂志,但他可不是为了读书,而是—— 集卡。 已知杂志将要发行 N 周(也就是 N 期),每期都会附赠一张卡片。Star 通 过种种途径,了解到 N 期杂志附赠的卡片种类。Star 只想订购连续的若干期, 并在这些期内收集所有可能出现的种类的卡片。现在他想知道,他最少需要订 购多少期。分析首先,我们需要满足收集齐N期,然后再求这些的最小值。

lijf2001的博客 492

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

JZOJ 100046. 【NOIP2017提高A组模拟7.14】收集卡片

JZOJ 100046. 【NOIP2017提高A组模拟7.14】收集卡片 DescriptionStar 计划订购一本将要发行的周刊杂志,但他可不是为了读书,而是—— 集卡。 已知杂志将要发行 N 周(也就是 N 期),每期都会附赠一张卡片。Star 通 过种种途径,了解到 N 期杂志附赠的卡片种类。Star 只想订购连续的若干期, 并在这些期内收集所有可能出现的种类的卡片。现在他想知道,他最少需要订 购多少期。I

Felix-Lee的博客 637

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

jzoj 100046. 【NOIP2017提高A组模拟7.14】收集卡片{模拟}

题目 Description Star 计划订购一本将要发行的周刊杂志,但他可不是为了读书,而是—— 集卡。 已知杂志将要发行 N 周(也就是 N 期),每期都会附赠一张卡片。Star 通 过种种途径,了解到 N 期杂志附赠的卡片种类。Star 只想订购连续的若干期, 并在这些期内收集所有可能出现的种类的卡片。现在他想知道,他最少需要订 购多少期。 Input 第一行一个整数 N; 第二行一个长度...

Nowed 357

2018.12.15【NOIP提高组】模拟B组

解题报告JZOJ 100046 收集卡片题目分析代码JZOJ 100047 基因变异题目分析代码JZOJ 100044 abcd题目分析代码 JZOJ 100046 收集卡片 题目 询问一段字母种类最多的最短区间 分析 扫描每一个结尾,找到最适合的开头,统计最短长度 代码 #include &lt;cstdio&gt; #include &lt;cctype&gt; #define rr re...

lemondinosaur的博客 234

2018.12.15【NOIP提高组】模拟B组总结

jzoj 100046. 【NOIP2017提高A组模拟7.14】收集卡片{模拟} jzoj 100047. 【NOIP2017提高A组模拟7.14】基因变异 jzoj 100044. 【NOIP2017提高A组模拟7.13】abcd {二进制优化多重背包} 总结 总的来说,这也是值得庆幸的,因为毕竟我有所改变了——这一个星期。 虽然对于OI的态度有所缓和,但是我的成绩还是不怎么样。 因为我的...

Nowed 426

算法搜集

1.1000瓶药水,其中至多有1瓶剧毒,现在给你10只小狗在24小时内通过小狗试药的方式找出哪瓶药有毒或者全部无毒(小狗服完药X小时后才会毒发。19 答案: 把狗从0-9编号; 把药水按1-1000编号; 把药水编号按二进制,如果第i位(因为最大1000,所以bit位为0-9)bit位为1,则分给编号为i的狗狗喝; 最后得一二进制数,如果编号为i的狗狗死了,该数的第i bit位为1,

Just do it! 1148

礼券、卡片收集者问题

有一套卡片共有n种卡,集齐n种卡就能中奖,每次抽卡会随机获得一张,已知n,求恰好收集一套的时候期望抽卡多少次? 类似于方便面有12星座卡片,期望买多少包才能集齐一套? # 假设有一套卡片,每次收集会随机获得一张,那么期望什么时候能正好集齐一套呢,均等概率没有稀有卡片不能与别人换牌 import random def fn(size): ''' :param size: 这套卡片的规模 :return: 期望 ''' tries = 1000 total =

spbrother19的博客 969

HDU 4336 Card Collector 状态压缩 概率DP

自己挂的概率DP第一部分的题终于做完了... 题目大意: 就是现在告诉你有n个不同的物品在买东西的时候搜集到的概率, n 大致思路: 很明显基础的状压dp, 没什么难点, 具体细节和状态转移式见代码注释吧 代码如下: Result  :  Accepted     Memory  :  9316 KB     Time  :  327 ms /* * Au

Gatevin的专栏 772

【概率】搜集卡片

Description 童年时代,你是否热衷于搜集零食里的卡片呢?比如你集齐了108张水浒英雄的卡片,你会感到非常有成就感,而且还可以去兑换奖品。 作为一个聪明的小孩,你注意到如果你要赢得奖品,你必须买很多很多的零食才能搜集齐卡片。要赢得奖品,你估计要买多少袋零食才能成功? Input Format 第一行,一个整数N(1 <= N <= 20), 表示总共有N种不同的卡片。 第二行,N个空格间隔的实数p1, p2, …, pN, (p1 + p2 + … + pN <= 1), 表示零食

jvruo_shabi的博客 1600

卡片问题

#include #include int main(void) {     char pos1='A',pos2='B',pos3='C',pos4='D',pos5='E';     char tmp;     //把第一张插入第三和第四之间     tmp=pos1;     pos1=pos2;     pos2=pos3;     pos3=tmp;   

ljl696的博客 610

ZOJ3825(2014年牡丹江现场赛G题)

比赛时读这题一开始感觉并不难,思路好像蛮容易想的,但是现场没有一支队过了这题……最后一小时上机打了这题,在终场前十秒提交,可惜结果自然是WA…… 比完赛这几天好好想了下这题,WA了好多次,期间还尝试用JAVA来写,结果都没有成功…… 最后特么终于用C++把这题AC了……虽然是用Mathematica打了个对拍查了很久错误,不算是完全自己做出来的…… 这题题意大致可以转化为:给定一个圆x^2+

sysuyudx的专栏 1003
上一篇: 【洛谷P1198】最大数【分块】
下一篇: 【JZOJ100047】基因变异【BFS】
stoorz1023
博客等级 码龄9年 101粉丝 595原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值