当前位置: 首页 > news >正文

题解:洛谷 P3029 [USACO11NOV] Cow Lineup S

【题目来源】

洛谷:[P3029 USACO11NOV] Cow Lineup S - 洛谷

【题目描述】

农民约翰雇一个专业摄影师给他的部分牛拍照。由于约翰的牛有好多品种,他喜欢他的照片包含每个品种的至少一头牛。

约翰的牛都站在一条沿线的不同地方, 每一头牛由一个整数位置 \(X_i\) 以及整数品种编号 \(ID_i\) 表示。

约翰想拍一张照片,这照片由沿线的奶牛的连续范围组成。照片的成本与规模相当,这就意味着,在一系列照片中的最大和最小 \(X\) 坐标的差距决定了照片的成本。

请帮助约翰计算最小的照片成本,这些照片中有每个不同的品种的至少一头牛,没有两头牛愿意站在同一个地点的。

【输入】

\(1\) 行:牛的数量 \(N\)

\(2..1+N\) 行:每行包含 2 个以空格分隔的正整数 \(X_i\)\(ID_i\);意义如题目描述;

【输出】

输出共一行,包含每个不同品种 \(ID\) 的照片的最低成本。

【输入样例】

6 
25 7 
26 1 
15 1 
22 3 
20 1 
30 1 

【输出样例】

4

【解题思路】

image

【算法标签】

《洛谷 P3029 Cow Lineup》 #单调队列# #离散化# #队列# #双指针,two-pointer# #USACO# #2011#

【代码详解】

#include <bits/stdc++.h>
using namespace std;// 奶牛结构体,存储位置和品种
struct cow 
{int pos, type;
} a[50005];  // 存储所有奶牛信息int n, m, head, x, ans = 2e9;  // n: 奶牛数量, m: 品种数, head: 滑动窗口左边界// x: 当前窗口包含的品种数, ans: 最小覆盖区间长度
map<int, int> s;  // 记录各品种在窗口中的出现次数// 比较函数:按位置升序排序
bool cmp(cow x, cow y)
{return x.pos < y.pos;
}int main()
{// 输入奶牛数量cin >> n;// 输入每头奶牛的位置和品种,并记录品种for (int i = 0; i < n; i++) {cin >> a[i].pos >> a[i].type;s[a[i].type] = 1;  // 标记该品种存在}m = s.size();  // 计算不同品种的总数// 按位置排序奶牛sort(a, a + n, cmp);// 滑动窗口算法寻找最小覆盖区间for (int i = 0; i < n; i++) {s[a[i].type]++;  // 当前品种计数增加// 如果该品种首次在窗口中出现两次,增加xif (s[a[i].type] == 2) {x++;}// 当窗口包含所有品种时,尝试收缩左边界while (x == m) {// 更新最小区间长度ans = min(a[i].pos - a[head].pos, ans);// 左边界移动,对应品种计数减少s[a[head].type]--;// 如果某个品种不再满足覆盖条件,减少xif (s[a[head].type] == 1) {x--;}head++;  // 移动左边界}}// 输出结果cout << ans;return 0;
}

【运行结果】

6 
25 7
26 1
15 1
22 3
20 1
30 1
4
http://www.jsqmd.com/news/392507/

相关文章:

  • 提示工程自动化测试:架构师的核心竞争力
  • 那个马云雷军的账号本质就是公共关系营销
  • 速看!2026年02月靠谱的保健品品牌推荐排行出炉,保健品/养胃颗粒/保健饮品,保健品品牌排行榜 - 品牌推荐师
  • 智能信用卡欺诈检测系统
  • 短视频虽然不能做广告但可以用来做公共关系
  • Diffusers 库介绍,它支持LTX-2模型
  • LTX-2 是一个基于 Transformer 的视频生成模型,能够根据文本描述生成高质量视频
  • 2026年二轮滚丝机厂家优选,这些品牌值得信赖,二轮滚丝机 /滚牙机 /滚丝机 /三轮滚丝机 ,二轮滚丝机供应商有哪些 - 品牌推荐师
  • 题解:洛谷 P1884 [USACO12FEB] Overplanting S
  • 锁相环电路(PLL) 工艺:smic13mmrf_1233 工作电压:3.3V 电路结构
  • 智慧校园服务承诺:让响应更快,让解决更高效
  • 7项高效AI辅助改写工具测评结果,帮助用户精准优化论文内容。
  • 题解:洛谷 P1083 [NOIP 2012 提高组] 借教室
  • 题解:洛谷 P3406 海底高铁
  • 深度解析7大智能降重工具核心功能,有效解决论文重复率过高问题。
  • 详细对比7款智能降重软件性能差异,找到最适合论文优化的工具。
  • 专业评测7种AI论文降重工具优缺点,大幅降低重复率提升原创性。
  • 基于7种主流AI降重工具的横向测评数据,优化论文内容通过率更高。
  • CSS3发光粒子背景动画特效实战设计 - 指南
  • 通过7款高效AI降重工具的深度测评分析,显著提升学术论文的查重通过率
  • mvn clean install -U
  • 禁律、本体与模型:AI元人文底层逻辑的闭环建构 ——兼论《意义的界面》对认知边界的越界性触碰
  • 实测7大人工智能降重软件效果对比,帮助论文轻松达到合格标准
  • 想高薪!0基础怎么转行做AI,收藏这篇文章就够了
  • 针对7类AI降重技术的实际效果分析,确保论文顺利通过系统检测。
  • 模型压缩新思路:Engram条件记忆模块,小白也能看懂的记忆扩展魔法(收藏版)
  • 小白程序员必看:AI大模型如何开启你的2026生产力革命?
  • ARM标准汇编(armasm)中的“定义”(Assembler Directive)
  • 这是一篇写给想入行AI大模型新手的建议和分享,小白程序员转型指南,收藏这份进阶路线!
  • 【Python】学生管理系统