【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

AirSim中图像API的应用

解析Airsim图像获取保存的api

fegxg的博客 1605

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

分享通达信破解交易接口的使用!

那其实通达信破解交易接口的使用方法比较复杂,这里以MA均线指标为例子,只要理解了这些操作步骤,就可以很容易地使用其他指标包括自己编写的指标来进行交易。委托结果(包含委托编号), 需要分配 1024*1024 字节的空间。委托结果数组, 每项结果需要分配 1024*1024 字节的空间。0: 买入, 1: 卖出, 2: 融资买入, 3: 融券卖出,4: (市价委托)上海五档即成剩撤, 深圳五档即成剩撤。4: 买券还券, 5: 卖券还款, 6: 现券还券。0: 上海限价委托, 深圳限价委托。

1841085904的博客 2359

手把手教你用VCS+Verdi在Linux下仿真蜂鸟E203 RISC-V核(附波形调试技巧)

本文详细介绍了在Linux环境下使用VCS和Verdi工具链对蜂鸟E203 RISC-V核进行仿真验证的完整流程。从环境配置、工程结构解析到VCS编译优化和Verdi波形分析技巧,提供了实战性强的调试方法和性能优化策略,帮助工程师高效完成数字IC验证工作。

weixin_42531163的博客 416

CCF CSP 202109-4 收集卡牌

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

OTS_14的博客 802

stm32h743 FM25CL64铁电存储器踩坑记录

调试FRAM经验总结: 1、跑完FRAM读写代码之后,逻分仪发现总线上只有简单、短暂的电平变化,明显不是SPI的通信数据。 (经提醒发现连片选拉高拉低都没有执行到位) 后来发现是因为片选引脚没有初始化,所以直接拉高拉低是无效的。 2、引脚成功初始化后发现CLK、MISO、MOSI数据仍不正常。通过加打印的方式发现跑到HAL_SPI_Transmit中之后还没有执行到写SPI数据寄存器的那一步就return了。 后来经提醒发现: 上图中的指针使用方式错误 后来又发现: 打印出来发现

kuniqiw的博客 3844

c++数字卡片题目

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

m0_72019193的博客 543

【漏洞复现】Apache Tomcat远程代码执行漏洞(CVE-2024-56337)

CVE-2024-56337是一个存在于Apache Tomcat中的TOCTOU(Time-of-Check Time-of-Use)竞争条件漏洞。此漏洞源于对先前漏洞(CVE-2024-50379)的不完整修复。若默认servlet是可写的(参数readonly设置值为false,该设置为非默认设置)表示不区分大小写文件系统,在负载下并发读取和上传同一文件可以绕过Tomcat的大小写检查。攻击者可以通过构造恶意请求上传含恶意JSP代码的文件,使其触发解析并执行这些文件,从而导致远程代码执行。

李同學AI安全 3196

SAP Fiori Elements 扩展实战:UI 层扩展、OData 服务扩展、CDS 视图增强及全流程案例

UI 层扩展主要关注在不修改标准生成界面的基础上,自定义用户界面元素和交互逻辑。典型需求包括:在现有 Fiori Elements 界面上添加新的字段(如表格列或表单项)、增加自定义按钮并绑定操作、以及通过控制器扩展加入事件处理等。无论在 RAP 还是传统 BOPF 架构下,前端 UI 扩展通常采用 SAPUI5 提供的**扩展点(Extension Points)和控制器扩展(Controller Extension)**机制来安全地插入自定义代码。下面分别说明两种后端架构下 UI 扩展的实现方式。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 902

202109-4 收集卡牌

csp

qikik的博客 438

手把手教你学Simulink--移动机器人多轮协同场景实例:基于Simulink的双轮差速PMSM轮毂电机协同驱动仿真

本文介绍了基于Simulink的双轮差速PMSM轮毂电机协同驱动仿真系统。针对移动机器人存在的电机参数不一致、负载分配不均等问题,提出主从同步+力矩补偿的协同控制策略。通过搭建包含运动学模型、PMSM电机模型和矢量控制器的仿真系统,实现了速度同步误差<0.005m/s、轨迹跟踪误差<0.8cm、能耗降低12.5%的优化效果。文章详细阐述了建模步骤、核心算法实现和性能验证,为移动机器人动力系统设计提供了实用参考方案。

MHD0815的博客 133

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

指针,桶

Ajwallet 388

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

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

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

lijf2001的博客 492

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

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

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

Felix-Lee的博客 637

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

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、付费专栏及课程。

余额充值