AcWing 蓝桥杯集训·每日一题2025·密接牛追踪2

devtools/2025/2/27 18:31:19/

密接牛追踪2

农夫约翰有 N 头奶牛排成一排,从左到右依次编号为 1∼N。

不幸的是,有一种传染病正在蔓延。

最开始时,只有一部分奶牛受到感染。

每经过一个晚上,受感染的牛就会将病毒传染给它左右两侧的牛(如果有的话)。

一旦奶牛被感染,它就会一直被感染,无法自愈。

给定一个经过若干个夜晚后的奶牛的整体状态,其中哪些奶牛已经被感染,哪些奶牛尚未被感染统统已知。

请你计算,最开始时就受到感染的奶牛的最小可能数量。

输入格式

第一行包含整数 N。
第二行包含一个长度为 N 的 01序列,用来表示给定的奶牛的整体状态,其中第 i个字符如果是 1 则表示第 i 头奶牛已经被感染,如果是 0 则表示第 i 头奶牛尚未被感染。

输出格式

一个整数,表示最开始时就受到感染的奶牛的最小可能数量。

输入样例

5
11111

输出样例

4

题意 : 给定01字符串, 求最开始时, 01串中含1的数量,每天01串中的1都会扩散扩散方式如下:

  • 每天 1 会向俩端扩展,知道全部 0 变为 1 为止

解题思路:

将扩散转换为区间问题, 查找最大天数, 因为每个1 每天的扩展区间为 2r + 1 其中 r 为天数, 可以用一个变量cnt统计出每段去间1的数量, 然后套用公式计算出最大天数, 根据最大天数, 计算该段 1 的连续区间最少的 1 的数量。

AC Code

// Problem: 密接牛追踪2
// Contest: AcWing
// URL: https://www.acwing.com/problem/content/5441/
// Memory Limit: 64 MB
// Time Limit: 1000 ms
// 
// Powered by CP Editor (https://cpeditor.org)#include<bits/stdc++.h>
typedef long long ll; // 确保 ll 在使用前被定义
using namespace std;
using i64 = long long;
#define f for(int i = 0; i < n;++i)
#define ff for(int i = 1; i <= n;++i)
#define int long long 
#define pii pair<int,int>
#define In \ll n; \std::cin >> n;\

const int mod = 1e9 + 7, N = 1e7;void solve(){In; std::string s;std::cin >> s;int ans = 0;std::vector<pii> ss;// 遍历每段区间, 将每段区间记录for(int i = 0, j = 0; i < n; i = j) {while(s[i] == '0') i++;j = i;while(j < n and s[j] == '1') j++;if(j > i) ss.push_back({i , j - 1});}if(ss.size() == 0) {std::cout << 0 << "\n";return ;}// 计算最小天数int R = 1e9;for(auto &[l , r] : ss) {// 最后和首位要特判if(l == 0 or r == n - 1) R = std::min(r - l + 1, R);else R = min((r - l + 2) / 2, R);}// 最后根据答案计算最小感染牛for(auto &[l, r] : ss) {ans += (r - l) / (2 * R - 1) + 1;}std::cout << ans << "\n";
}signed main(){std::ios::sync_with_stdio(false);std::cin.tie(0); std::cout.tie(0);ll T = 1;//std::cin >> T;for(int i = 1; i <= T; ++i) solve();
}

http://www.ppmy.cn/devtools/163132.html

相关文章

seacmsv9注入管理员账号密码+orderby+limit

seacmsv9注入管理员账号密码 seacms介绍 海洋影视管理系统&#xff08;seacms&#xff0c;海洋cms&#xff09;是一套专为不同需求的站长而设计的视频点播系统&#xff0c;采用的是 php5.Xmysql 的架构&#xff0c;使用 fofa 搜索可以看到存在 400的记录&#xff1a; 因为sea…

Java注解的原理

目录 问题: 作用&#xff1a; 原理&#xff1a; 注解的限制 拓展&#xff1a; 问题: 今天刷面经&#xff0c;发现自己不懂注解的原理&#xff0c;特此记录。 作用&#xff1a; 注解的作用主要是给编译器看的&#xff0c;让它帮忙生成一些代码&#xff0c;或者是帮忙检查…

论文阅读笔记:Continual Forgetting for Pre-trained Vision Models

论文阅读笔记&#xff1a;Continual Forgetting for Pre-trained Vision Models 1 背景2 创新点3 方法4 模块4.1 问题设置4.2 LoRA4.3 概述4.4 GS-LoRA4.5 损失函数 5 效果6 结论 1 背景 出于隐私和安全考虑&#xff0c;如今从预先训练的视觉模型中删除不需要的信息的需求越来…

深入理解 Linux 中的 last 和 lastb 命令

在 Linux 系统中&#xff0c;last 和 lastb 命令是两个非常有用的工具&#xff0c;用于追踪用户登录和登出的历史记录。这两个命令可以帮助系统管理员了解用户的活动情况&#xff0c;以及系统的重启和关机事件。本文将详细介绍这两个命令的使用方法和选项。 last 命令 用法&am…

web安全——分析应用程序

文章目录 一、确定用户输入入口点二、确定服务端技术三、解析受攻击面 一、确定用户输入入口点 在检查枚举应用程序功能时生成的HTTP请求的过程中&#xff0c;用户输入入口点包括&#xff1a; URL文件路径 通常&#xff0c;在查询字符?之前的URL部分并不视为用户输入入口&am…

AI绘画软件Stable Diffusion详解教程(2):Windows系统本地化部署操作方法(专业版)

一、事前准备 1、一台配置不错的电脑&#xff0c;英伟达显卡&#xff0c;20系列起步&#xff0c;建议显存6G起步&#xff0c;安装win10或以上版本&#xff0c;我的显卡是40系列&#xff0c;16G显存&#xff0c;所以跑大部分的模型都比较快&#xff1b; 2、科学上网&#xff0…

WSL,Power shell 和CMD, Git bash的区别

在 Windows 系统中&#xff0c;WSL、PowerShell、CMD、Git Bash 和 Git Bash&#xff08;管理员&#xff09; 是不同的命令行工具和环境&#xff0c;它们各自有不同的用途和特点。以下是它们的详细关系和区别&#xff1a; 1. WSL&#xff08;Windows Subsystem for Linux&…

FPGA开发时序图绘制

开始的时候画时序图都是拿 visio 硬连&#xff0c;但是那个线宽太难统一了&#xff0c;丑不拉几的&#xff0c;遂学习 waveform 语法使用代码来画时序图。 开始 Vscode 中安装 waveform render 或者在 GitHub 搜索 wavedrom 安装即可。由于 vscode 是我常用的编辑器&#xff…