USACO-1660. 社交距离 II

迷失的牛问题——分析算法——C++实现功能 迷失的牛(the Lost Cow Problem)是计算机界的一个大问题,定义为:你在x点上,你的奶牛同志在y点等着你来找,你需要计算你按照规则需要找几步。(我这样说可能有点不太清楚,我们来看一张图就清楚了)。 阅读详情

由于高传染性的牛传染病 COWVID-19 的爆发,Farmer John 非常担忧他的奶牛们的健康。

尽管他尽了最大努力使他的 N 头奶牛们践行“社交距离”,还是有许多奶牛不幸染上了疾病。

编号为 1…N 的奶牛们分别位于一条长直道路上的不同位置(相当于一维数轴),奶牛 i 位于位置 xi。

Farmer John 知道存在一个半径 R,任何与一头被感染的奶牛距离不超过 R 单位的奶牛也会被感染(然后会传染给与其距离 R 单位内的奶牛,以此类推)。

不幸的是,Farmer John 并不确切知道 R 的值。

他只知道他的哪些奶牛被感染了。

给定这个数据,求出起初感染疾病的奶牛的最小数量。

输入格式

输入的第一行包含 N。

以下 N 行每行用两个整数 x 和 s 描述一头奶牛,其中 x 为位置,s 为 0 表示健康的奶牛,1 表示染病的奶牛,并且所有可能因传播而染病的奶牛均已染病。

输出格式

输出在疾病开始传播之前已经得病的奶牛的最小数量。

数据范围

1 ≤ N ≤ 1000 1≤N≤1000 1≤N≤1000,
0 ≤ x ≤ 106 0≤x≤106 0≤x≤106

输入样例:
6
7 1
1 1
15 1
3 1
10 0
6 1
输出样例:

3

样例解释

在这个例子中,我们知道 R<3,否则位于位置 7 的奶牛会传染给位于位置 10 的奶牛。

所以,至少 3 头奶牛初始时已被感染:位于位置 1 和 3 的两头奶牛中的一头,位于位置 6 和 7 的两头奶牛中的一头,以及位于位置 15 的奶牛。

双指针+贪心

本题代码编写不难,需要理解题意
首先要求出满足题意的R的范围是多少
因为R值和所分区间的个数(已经得病的奶牛的最小数量,得病的小牛会传染<=R的牛,以此为一个区间)成反比(贪心思想)
所以取得范围的最大值时,就可以使区间个数最小。考虑到数据是一维的,采用双指针遍历一次


#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

typedef pair<int, int> PII;

const int N = 1010;
int n;
vector<PII> v, v2;

int main() {
    cin >> n;
    
    for (int i = 0; i < n; i++) {
        int a, b;
        cin >> a >> b;
        v.push_back({a, b});
    }
    
    sort(v.begin(), v.end());
    
    int rmin = 1e6 + 10;
    
    for (int i = 1; i < n; i++) {
        int x = v[i].first, y = v[i-1].first;
        int a = v[i].second, b = v[i-1].second;
        if (a == 0 && b == 1 || a == 1 && b == 0) 
            rmin = min(rmin, abs(x-y));
    }
    
    for (auto t: v) 
        if (t.second) v2.push_back(t);
    
    int rmax = rmin-1, j = 0, res = 0;
    
    for (int i = 1; i < v2.size(); i++) {
        while (j < i && (v2[i].first - v2[j].first) <= rmax) j++;
        if (v2[i].first - v2[j].first > rmax) {
            j++;
            res++;
        }
    }
    
    cout << res+1 << endl;
    
    return 0;
}


1660. 社交距离 II

2020 USACO OPEN--Sliver T1 题目描述 由于高传染性的牛传染病 COWVID-19 的爆发,Farmer John 非常担忧他的奶牛们的健康。 为了限制疾病的传播,Farmer John 的 N 头奶牛(2≤N≤10^5)(2≤N≤10 5 )决定践行“社交距离”,分散到农场的各处。农场的形状如一维数轴,上有 M 个互不相交的区间(1≤M≤10^5)(1≤M≤10 5 ),其中有可用来放牧的青草。奶牛们想要使她们位于不同... 阅读详情

相关推荐

SAP PS模块实战指南:从项目启动到结算的全流程解析

本文详细解析SAP PS模块在项目管理中的全流程应用,从项目启动到结算的关键操作与实战技巧。通过WBS设计、预算控制和资源调配等核心功能,帮助管理者高效协调项目进度与成本,特别适用于交付型和成本型项目管理。掌握PS模块能显著提升项目管理效率与精准度。

weixin_42553471的博客 448

【USACO 2020 US Open Bronze】Cowntact Tracing 题解

题目描述 由于高传染性的牛传染病 COWVID-19 的爆发,Farmer John 非常担忧他的奶牛们(编号为 1…N)的健康。最近,Farmer John 对他的所有奶牛进行了检测,发现有一部分奶牛对该疾病的检测结果呈阳性。利用牛棚内的视频监控,他得以查看最近的奶牛之间的互动行为,结果发现奶牛们互相打招呼时,她们会握蹄,不幸的是这是一种会将疾病从一头奶牛传播给另一头奶牛的行为。Farmer J...

zhy_Learn的博客 2866

【自用】吉林大学计算机系统结构第二章:缓存优化 曲冠南老师版 笔记

容量8KB,2的十三次方,块大小16B,一块用掉四位,剩余2的九次方是标志位,则有512行,每个元素8B,则一块两个元素,a数组150块,b数组152块,不出现容量失效。不管是否交换内容,在同一“伪相联”组中的两块都是用同一个索引得到的,因此失效率相同,即:失效率伪相联=失效率2路。伪相联cache的命中时间等于直接映象cache的命中时间加上伪相联查找过程中的命中时间*该命中所需的额外开销。(6) 由编译器控制的预取,硬件预取的替代方法,在编译时加入预取的指令,在数据被用到之前发出预取请求。

weixin_73587775的博客 1616

【题解】USACO 2020 OPEN Sliver(银组)

Social Distancing 题面 题目描述 由于高传染性的牛传染病 COWVID-19 的爆发,Farmer John 非常担忧他的奶牛们的健康。 为了限制疾病的传播,Farmer John 的 N 头奶牛(2≤N≤105)(2≤N≤10^5)(2≤N≤105)决定践行“社交距离”,分散到农场的各处。农场的形状如一维数轴,上有 M 个互不相交的区间(1≤M≤105)(1≤M≤10^5)(1...

_BOSS_的博客 3025

PCB板质量测试和PCB板

PCB板质量测试和板厂

weixin_51370842的博客 515

避开这些坑!医疗影像数据增强的6个安全操作指南(附PyTorch代码)

本文详细介绍了医疗影像数据增强的六大安全准则,包括解剖结构守恒、密度值物理意义保留和病灶特征保护等关键原则,并提供了PyTorch实战代码。通过具体案例和参数建议,帮助开发者在肺结节检测和MRI分割等医疗AI应用中实现安全有效的数据增强,避免因不当操作导致的诊断误差。

cola5的博客 555

1660 社交距离 II(贪心 + 双指针求解连续相等的区间)

1. 问题描述: 由于高传染性的牛传染病 COWVID-19 的爆发,Farmer John 非常担忧他的奶牛们的健康。尽管他尽了最大努力使他的 N 头奶牛们践行"社交距离",还是有许多奶牛不幸染上了疾病。编号为 1…N 的奶牛们分别位于一条长直道路上的不同位置(相当于一维数轴),奶牛 i 位于位置 xi。Farmer John 知道存在一个半径 R,任何与一头被感染的奶牛距离不超过 R 单位的奶牛也会被感染(然后会传染给与其距离 R 单位内的奶牛,以此类推)。不幸的是,Farmer John 并不确切知

二哈 411

手把手教你配置MAX96712解串器:从I2C地址分配到PWM帧同步

本文详细解析了MAX96712解串器在自动驾驶视觉链路中的核心配置流程。从I2C地址分配、GMSL2数据流映射到实现多摄像头精准同步的PWM帧同步触发,手把手指导工程师构建高可靠性的图像传输系统,并提供了实用的Linux调试技巧与问题排查思路。

weixin_29297127的博客 924

马拉松(春季每日一题 25)

农夫约翰对他的奶牛们的健康状况并不满意,于是给他的奶牛们报名了各种健身活动。 他最喜欢的奶牛贝茜被报名参加了一个跑步班。 在那里,她有希望在一场马拉松比赛中穿越约翰农场所在的城市的市中心。 马拉松线路由 NNN 个检查点(编号 1∼N1∼N1∼N)指定。 检查点 1 是起点,检查点 N 是终点,贝茜要按顺序经过每个检查点。 但是贝茜十分懒惰,所以她决定跳过其中一个检查点,以缩短她的整个行程。 但是,她不能跳过检查点 111 和检查点 NNN,因为这太容易被人发现了。 在她可以跳过一个检查点的情况下,请确定她

多思考🤔~ 1041

Ubuntu 24.04 部署 EMQX 5.8 开源版MQTT服务器:从零搭建到实战应用

本文详细指导如何在Ubuntu 24.04系统上部署EMQX 5.8开源版MQTT服务器。内容涵盖从环境准备、安装Erlang、下载安装包到启动服务的完整步骤,并提供了验证服务、配置网络防火墙以及通过WebSocket工具进行基础消息收发的实战方法,帮助用户快速搭建稳定、免费的物联网消息中间件。

weixin_29209825的博客 293

破局KS滑块验证码:从参数加密到轨迹生成,Python逆向全流程避坑实录

快手滑块验证码破解实战:从逆向分析到自动化实现 摘要:本文详细记录了破解快手滑块验证码(KS滑块)的完整过程。通过48小时的逆向分析,揭示了KS滑块的双重校验机制:不仅需要精准定位滑块缺口位置,还需满足参数加密和轨迹特征校验。文章从反爬逻辑分析入手,介绍了工具选型与环境配置的避坑要点,重点讲解了滑块缺口距离计算方法和核心加密参数slide_sign的逆向过程。通过OpenCV边缘检测和Frida动态调试技术,成功实现了滑块验证的自动化,准确率提升至99%。文中附有Python实现代码和实际操作踩坑记录,为开

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1662

题解 P6281 【[USACO20OPEN]Social Distancing S】

这道题是一个二分的模板,先讲一下二分。 二分是确定一个答案然后对其分析,而答案常常有这样一种情况: 或 题目通常会让我们找符合条件的最大值或最小值。 以这道题为例,就是要在可行的社交距离中找到最大值。 我们发现,社交距离比最优解大的都可以,不最优解小的都不可以。 这个我们叫左闭右开。 二分顾名思义,就是二分。 int l=0,r=INT_MAX/2; while(l+1<r){ ...

ZHK's blog 1900

MTK-Android12开机应用自启需求-自定义原生Launcher3 主界面布局图标

MTK平台 Android12 版本 上实现 开机应用自启需求-自定义原生Launcher3 主界面布局图标。添加一个属性定义即可,如下:这里自定义一个属性目的是为了在加载Launcher3启动时候从属性获取需要自启动应用的包名,可以扩展动态替换 自启动包名。这里有两种方案,要么在Launcher3里面实现,要么在系统服务里面在开机时候启动第三方一次。这里强烈建议在Launcher3中去实现,体验效果更好。// 第一步:定义属性,// 第二步:在onCreate 方法中获取属性并启动应用。

十年饮冰,难凉热血 1377

2020寒假【gmoj2414】【Social Distancing 2】

题目描述 由于高传染性的牛传染病 COWVID-19 的爆发,Farmer John 非常担忧他的奶牛们的健康。 尽管他尽了最大努力使他的 N 头奶牛们(1≤N≤1000)践行“社交距离”,还是有许多奶牛不幸染上了疾病。编号为 1…N 的奶牛们分别位于一条长直道路上的不同位置(相当于一维数轴),奶牛 i 位于位置 xi。Farmer John 知道存在一个半径 R,任何与一头被感染的奶牛距离不超过...

ssllyr 465

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

打卡信奥刷题(778)用C++信奥P9953[普及组/提高] [USACO20OPEN] Social Distancing II B

由于高传染性的牛传染病 COWVID-19 的爆发,Farmer John 非常担忧他的奶牛们的健康。尽管他尽了最大努力使他的N头奶牛们(1≤N≤1000)践行“社交距离”,还是有许多奶牛不幸染上了疾病。编号为1N的奶牛们分别位于一条长直道路上的不同位置(相当于一维数轴),奶牛i位于位置xi​。Farmer John 知道存在一个半径R,任何与一头被感染的奶牛距离不超过R单位的奶牛也会被感染(然后会传染给与其距离R单位内的奶牛,以此类推)。

Loge谈信奥--一个专注于信奥人的博客 5054

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

社交距离(奶牛感染)

题目描述 由于高传染性的牛传染病 COWVID-19 的爆发,Farmer John 非常担忧他的奶牛们的健康。 尽管他尽了最大努力使他的 N 头奶牛们践行“社交距离”,还是有许多奶牛不幸染上了疾病。 编号为 1…N 的奶牛们分别位于一条长直道路上的不同位置(相当于一维数轴),奶牛 i 位于位置 xi。 Farmer John 知道存在一个半径 R,任何与一头被感染的奶牛距离不超过 R 单位的奶牛也会被感染(然后会传染给与其距离 R 单位内的奶牛,以此类推)。 不幸的是,Farmer John 并不

weixin_55296581的博客 1231

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

AcWing每日一题 社交距离

每日一题

ACMtourist的博客 828

AcWing 1660. 社交距离 II

思路:排序后看牛直接是否感染判断距离R,然后根据R判断有几个感染区间 代码: #include <iostream> #include <cstring> #include <algorithm> #define x first #define y second using namespace std; const int N = 1100; typedef pair<int, int> PII; PII q[N]; int main() { .

Ray.C.L的博客 762

Farmer John的故事

从前有个农民,名字叫约翰,于是大家叫他Farmer John(FJ)。FJ养了很多奶牛,这些奶牛很聪明,它们很喜欢看自然科学和数学书,但是它们对书的ISBN码感到奇怪,于是就有了ISBN问题。渐渐的,奶牛们的书多了起来,于是它们决定买背包来放书,然后就有了背包问题。奶牛们又喜欢上了下棋,于是就有了过河卒与骑士巡游问题。奶牛们决定航海去增长见识,在途中它们参与了对一艘名叫铁达尼克号的船的营救。最后,...

tystrwor的博客 6957

2414. Social Distancing 2

2414. Social Distancing 2 题目描述 由于高传染性的牛传染病 COWVID-19 的爆发,Farmer John 非常担忧他的奶牛们的健康。 尽管他尽了最大努力使他的 N 头奶牛们(1≤N≤1000)践行“社交距离”,还是有许多奶牛不幸染上了疾病。编号为 1…N 的奶牛们分别位于一条长直道路上的不同位置(相当于一维数轴),奶牛 i 位于位置 xi。Farmer John ...

蒟蒻こんにゃく 1031

【USACO 2020 US Open Bronze】Social Distancing 2 题解

题目描述 由于高传染性的牛传染病 COWVID-19 的爆发,Farmer John 非常担忧他的奶牛们的健康。 尽管他尽了最大努力使他的 N 头奶牛们(1≤N≤1000)践行“社交距离”,还是有许多奶牛不幸染上了疾病。编号为 1…N 的奶牛们分别位于一条长直道路上的不同位置(相当于一维数轴),奶牛 i 位于位置 xi。Farmer John 知道存在一个半径 R,任何与一头被感染的奶牛距离不超过...

zhy_Learn的博客 2284

进击的奶牛(洛谷,C++,二分法)

实现思路:用二分法不断尝试符合distance的、更大的distance,遍历排序后的牛棚坐标来判断distance是否符合条件

m0_74036684的博客 1973

用C++写洛谷P1634禽兽的传染

题目背景 mxj 的启发。 题目描述 禽兽患传染病了。一个禽兽会每轮传染x个禽兽。试问n轮传染后有多少禽兽被传染? 输入格式 两个非负整数x和n。 输出格式 一个整数,即被传染的禽兽数。 输入输出样例 输入 #1复制 10 2 输出 #1复制 121 说明/提示 保证 x,n以及答案都在64位无符号整数的表示范围内。 思路:注意数字特别大的情况,要用long long型 AC代码如下: #include <iostream> usi...

weixin_51717063的博客 2425

2020.04.08【NOIP普及组】模拟赛C组24 总结

2020.04.082020.04.082020.04.08【NOIP普及组】模拟赛CCC组242424 总结 概述: 这次比赛我AKAKAK了,拿了300300300分——其实这次比赛的题目确实很简单,很多人都是想难了。 第一题:SocialSocialSocial DistancingDistancingDistancing 111 题目 题目描述 一种新型疾病,COWVID-19,开始在全世...

linweitong2020的博客 785

打卡信奥刷题(1546)用C++实现信奥 P6281 [USACO20OPEN] Social Distancing S

题目摘要:奶牛需要在数轴上的不重叠区间中选择N个整数位置,最大化最小间距D。给定N头奶牛和M个区间,区间端点不超过1e18。解法使用二分查找确定最大D值,检查能否在区间中合理放置奶牛。代码实现了区间排序和二分验证逻辑,输出可能的最大D。 算法思路:先排序区间,用二分法检查中间值mid是否满足放置条件。验证函数遍历奶牛位置,确保间距≥mid。复杂度为O(M log N),适用于大规模数据。样例输入输出展示了正确解法。

Loge谈信奥--一个专注于信奥人的博客 899

AC 马拉松(枚举 / 前缀和)

农夫约翰对他的奶牛们的健康状况并不满意,于是给他的奶牛们报名了各种健身活动。 他最喜欢的奶牛贝茜被报名参加了一个跑步班。 在那里,她有希望在一场马拉松比赛中穿越约翰农场所在的城市的市中心。 马拉松线路由 NN 个检查点(编号 1∼N)指定。 检查点 1 是起点,检查点 N 是终点,贝茜要按顺序经过每个检查点。 但是贝茜十分懒惰,所以她决定跳过其中一个检查点,以缩短她的整个行程。 但是,她不能跳过检查点 1 和检查点 N,因为这太容易被人发现了。 在她可以跳过一个检查点的情况下,请确定她需要行进

weixin_63914060的博客 372
上一篇: 重返天梯—L2-001 紧急救援 (25 分)
下一篇: leetcode-53.最大子数组和
CodeSlogan
博客等级 码龄6年 4227粉丝 130原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CodeSlogan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值