【USACO】2008 Jan Haybale Guessing 猜数游戏

P7988-[USACO21DEC] HILO G【set,线段树】 正题 题目链接:https://www.luogu.com.cn/problem/P7988 题目大意 给出一个长度为nnn的排列,开始有一个数字xxx,第一次询问回答x<a1x<a_1x<a1​(记为LOLOLO)或者x>a1x>a_1x>a1​(记为HIHIHI),然后继续往后问,如果aia_iai​不在范围内就不询问,求对于每个k∈[0,n],x=k+0.5k\in [0,n],x=k+0.5k∈[0,n],x=k+0.5时回答串中HILOHILOHILO的个数。 阅读详情

Haybale Guessing 猜数游戏


  • Description

为了提高智商,锻炼思维能力,奶牛设计了一个猜数游戏。游戏开始前,贝西会在牛棚后面摆上N个数字。所有数字排成一条直线,按次序从1到N编号。每个数字在1到10^9之间,没有两个数字是一样的。
游戏开始后,其他奶牛将会轮流询问贝西Q个问题,每个问题的格式都是一样的:
“位置在Ql到Qr的数字中,最小的数字是多少?”
对每个问题,贝西都会回答一个数字A,不过,她的回答可能是不正确的。请你帮助其他奶牛判断一下,贝西从哪里开始已经出现矛盾了。

  • Input Format

第一行:两个用空格分开的整数:N和Q,1 ≤ N ≤ 10^6,1 ≤ Q ≤ 25000
第二行到第Q + 1行:每行三个用空格分开的整数,Ql,Qr和A,表示一个查询,1 ≤ Ql ≤ Qh ≤ N

  • Output Format

第一行:如果完全没有矛盾,输出0,否则输出最先造成矛盾的查询编号

  • Sample Input

20 4
1 10 7
5 19 7
3 12 8
11 15 12

  • Sample Output

3

  • Hint

前两个问题的回答可以推出5到10之间最小数量是7,这和第三个回答矛盾


  • 分析

首先答案可以二分,因为若前面已经不不合法了,那后面肯定也不合法。
对于二分出来的Lim,我们把所有序号小于等于Lim的边按权值从大到小排序。对于一个区间,如果他已经完全被前面的区间覆盖了,那就说明不合法。对于相同权值的且相交的边,由性质可得我们只需判断这些区间的交是否被覆盖过即可,但是我们应该把这些区间的并全部覆盖。(就这里比较麻烦)
然后就是区间覆盖问题。我们可以用线段树(模板),这里介绍SGG大神的并查集的方法。
对于每一段区间[ll,rr],我们把这段区间都指向ll-1的祖先方向。至于判断一个区间[l,r]是否被覆盖过,只需看看r是否指向了l之前。因为并查集可以压缩路径,所以复杂的降为logn。(这里可能解释的不太清楚,读者可以自行把代码拿下了调试一下)


#include <queue>
#include <stack>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int n,m,ans,Father[1000006];
struct Data{int s,t,d,id;}a[1000006];
inline bool cmp(const Data&a,const Data&b){
    if (a.d!=b.d) return a.d>b.d;
    if (a.s!=b.s) return a.s<b.s;
    return a.t<b.t;
}
int GetFather(int x){return x==Father[x]?x:Father[x]=GetFather(Father[x]);}
bool Work(int l,int r,int ll,int rr){
    if (GetFather(r)<l) return false;
    for (int i=rr;i>=ll;i=GetFather(i-1)) Father[i]=i-1;
    return true;
}
bool check(int lim){
    for (int i=1;i<=n;i++) Father[i]=i;
    int l,r,ll,rr,p=0;
    for (int i=1,last=0;i<=m+1;i++){
        if (a[i].id>lim) continue;
        if (!p){
            l=ll=a[i].s,r=rr=a[i].t,p=1,last=i;
            continue;
        }
        if (a[i].d==a[last].d && a[i].s<=r) l=a[i].s,ll=min(ll,a[i].s),rr=max(rr,a[i].t);
        else{
            if (!Work(l,r,ll,rr)) return false;
            l=ll=a[i].s; r=rr=a[i].t;
        }
        last=i;
    }
    return true;
}
int main(){
    freopen("in.txt","r",stdin);
    freopen("out.txt","w",stdout);
    scanf("%d%d",&n,&m);
    for (int i=1;i<=m;i++){
        scanf("%d%d%d",&a[i].s,&a[i].t,&a[i].d);
        a[i].id=i;
    }
    sort(a+1,a+1+m,cmp);
    for (int l=1,r=m,mid=(l+r)>>1;l<=r;mid=(l+r)>>1){
        if (check(mid)) ans=mid,l=mid+1;
        else r=mid-1;
    }
    if (ans==m) printf("0");
    else printf("%d",ans+1);
    fclose(stdin); fclose(stdout);
    return 0;
}
[USACO15DEC] Counting Haybale P 题解(线段树) 题目链接 题目描述 题目简单来说就是,给你n个数,并可以对其中任意一个区间进行如下操作: 给定一个连续区间,在该区间内的每个数都加上某个数 给定一个连续区间,找出该区间的最小数 给定一个连续区间,求出该区间的和 其实,把题目理解透彻之后,基本上就知道要求什么了。 没错,这是一道蓝题(提高+/省选-),但其实没有那么的难,只是代码实现上可能会有问题。 我个人感觉应该是绿题(晋级+/提高-)的难度。 解题思路 直接把线段树糊上去就行了,注意取最小值时懒标记的更新方法,还有就是开long lon 阅读详情

相关推荐

[Usaco2008 Jan]猜数游戏

另一头参与游戏的奶牛会问那头摆干草的奶牛 Q(1

aqfcca的博客 172

1594: [Usaco2008 Jan]猜数游戏

题目链接题目大意:N个数排成一列,有q个询问,每个询问告诉你区间[l,r]的最小值是多少(这N个数各不相同)。问你这q个询问有没有矛盾,有的话从哪里开始有矛盾题解:二分答案,现在检验前mid个询问是否有矛盾 Orz并查集神奇做法我的收获:并查集强啊#include <stdio.h> #include <stdlib.h> #include <string.h> #include <algorit

蒟蒻的Bzoj记录 430

USACO试题精选.pdf

这个是USACO题库中选出来的一些题,覆盖了多方面的知识点,利于锻炼C++学者的算法,里面还有部分题解

洛谷 P4188 [USACO18JAN]Lifeguards (线段树)

#Problem 给 nnn 个区间,请你删去一个区间,问剩下区间并集最长为多少 #Solution 线段树维护区间覆盖长度… 然后每次删去一个区间看剩下的并集长度,再加上那个这个区间… 注意: 线段树求区间长度,要把区间定义为左闭右开,这样好做 只会插入线段,删去原有线段,因此不需要下放标记什么的 updateupdateupdate 时要判断此节点是不是被完全覆盖,而不能直接用左加右。因为没...

生活不易,多才多艺 536

以太网详解(一)-MAC/PHY/MII/RMII/GMII/RGMII基本介绍

网络设备中肯定离开不MAC和PHY,本篇文章将详细介绍下以太网中一些常见术语与接口。 MAC和PHY结构 从硬件角度来看以太网是由CPU,MAC,PHY三部分组成的,如下图示意: 上图中DMA集成在CPU,CPU,MAC,PHY并不是集成在同一个芯片内,由于PHY包含大量模拟器件,而MAC是典型的数字电路,考虑到芯片面积及模拟/数字混合架构的原因,**将MAC集成进CPU而将PHY留在片外,这种...

sternlycore的博客 13万+

Transformer在量化交易中的应用:从时序预测到策略生成

Transformer模型凭借其强大的自注意力机制,在自然语言处理领域取得了革命性突破。其核心原理是通过并行计算和动态权重分配,有效捕捉序列数据中的长距离依赖关系。这一特性使其在金融时间序列分析中展现出巨大技术价值,能够处理市场数据中的复杂非线性模式和长期关联。在量化交易场景下,Transformer可将价格、成交量等连续数据通过离散化分桶处理,转化为类似文本的序列,进而进行预测或直接生成交易信号。本文以QuantGPT项目为例,探讨了如何将这一前沿AI架构迁移应用于金融领域,涵盖了从数据作为“语言”的编码

weixin_26757949的博客 367

[USACO08NOV] Light Switching G(线段树)

线段树 区间取反、区间查询。

zhujiangyuan2027的博客 1068

HarmonyOS开发第一步:Dev Eco Studio4.0保姆级安装配置指南(含Node.js环境)

本文提供HarmonyOS开发环境搭建的保姆级教程,重点详解Dev Eco Studio 4.0的安装与配置,并攻克Node.js环境与Ohpm包管理器的关键设置难点。通过清晰的步骤指引,帮助开发者从零开始,高效完成开发环境部署,顺利迈出鸿蒙应用开发的第一步。

lake5的博客 570

bzoj1594[Usaco2008 Jan]Haybale Guessing猜数游戏

题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1594 题目大意: N个数排成一列,有q个询问。每个询问告诉你区间[l,r]的最小值是多少(这N个数各不相同)。问你这q个询问有没有矛盾,有的话从哪里开始有矛盾。 题解: 二分+线段树 有人用神奇姿势の并查集来代替线段树来搞..但是我不懂QwQ 于是我就打了线段...

178

求无向图中所有的环 C++ python

求无向图中所有的环

random_repick的专栏 1152

OmniDrive(2):环境搭建

项目中使用的是全量的数据集(full dataset v1.0), 数据量比较大,训练验证(trainval) + test 总计200多G的数据,单独一个个下载会比较慢。参数,否则安装的时候会自动卸载已安装好的torch,重新安装最新版本的torch,这是不允许的。在cuDNN官网下载,默认下载的是最新版本的cuDNN,我们这里点击。,== 博文中详细介绍了完整的cuda和cudnn的安装过程==分析: 这是因为yapf 安装的版本不对,需要安装特定的版本。出现训练的loss变化,就说明可以正常训练了。

@bangbang的博客 623

【洛谷 2898】 [USACO08JAN]haybale猜测Haybale Guessing

题目描述The cows, who always have an inferiority complex about their intelligence, have a new guessing game to sharpen their brains.A designated ‘Hay Cow’ hides behind the barn and creates N (1 ≤ N ≤ 1,000

LOI_Sherlock 583

从零开始学 PyTorch 7天路线图(完整可运行代码版)

本文提供了5天PyTorch入门教程的完整代码,涵盖从基础到实战的核心内容。Day1测试环境并介绍张量基础;Day2讲解常用张量操作;Day3演示自动求导机制;Day4实现完整线性回归模型;Day5构建MNIST手写数字识别全连接网络。所有代码可直接运行,包含GPU检测、梯度计算、模型训练和可视化等关键环节,帮助新手快速掌握PyTorch核心概念和典型应用场景。

IT老农民的博客 314

【POJ3657】【USACO 2008 Jan Gold】 1.Haybale Guessing 二分答案,并查集check

题意: 输入n、m表示数列长度为n,有m条有序的限制{l,r,x}。 限制:l~r间所有数最小值为x。 问到第几条限制开始出现矛盾,都不出现输出"0"。 题解: 首先这题比较厉害,正常解有点难,不妨转化成二分答案。 我们二分“答案”,也就是第ans条出现矛盾。 考虑到若一条限制S所在区间被另一个限制Seg包含,且Seg这条限制的x又比S.x大, 那么也就是意为 ①

辗转山河弋流歌 2457

【DRAM存储器六十八】DDR5介绍--DQS Interval Oscillator—动态时序校准利器

DDR5内存采用DQS间隔振荡器(DQSIntervalOscillator)技术应对高速数据传输中的时序漂移问题。该技术通过测量DQS信号在可编程时间窗口内的振荡次数(16位计数值),动态监测温度/电压变化导致的DQS-DQ延迟偏移。控制器通过MPC命令启停振荡器,读取MR46/MR47寄存器获取计数值,并与基准值对比来调整DQS相位,确保数据采样窗口始终处于最佳位置。该机制使DDR5在8400MT/s高速率下仍能保持数据可靠性,有效补偿±0.48tCK的时序偏移。

highman110的博客 153

ISOLAR Autosar BSW 配置 之 Com

Autosar ISOLAR Bsw Configuration 之 Com

qq_42262743的博客 453

[USACO 08JAN]Haybale Guessing

Description The cows, who always have an inferiority complex about their intelligence, have a new guessing game to sharpen their brains. A designated 'Hay Cow' hides behind the barn and creates...

weixin_30270561的博客 81

Devexpress16.2.6破解工具

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

线段树 + 二分答案:Haybale Guessing G

参考文献:https://80358.blog.luogu.org/bzoj1594 题目链接:https://www.luogu.com.cn/problem/P2898 分析: 首先想一下矛盾的情况有哪些? 此两种情况会产生矛盾, 第二条的话就判断两个无交集的区间是否有相同的最小值,有的话那么一定是错的。 第一条的话可以从大到小的方式求解区间,如果当前所求的区间在之前已经求过的话,那么这个区间之前已经确定了一个更大的值,那么当前区间和之前确定的区间之间就会存在矛盾。 同时,对于...

qq_49120553的博客 203

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

[USACO08JAN]Haybale Guessing(LuoguP2898)

The cows, who always have an inferiority complex about their intelligence, have a new guessing game to sharpen their brains.A designated 'Hay Cow' hides behind the barn and creates N (1 ≤ N ≤ 1,000,00...

weixin_34392906的博客 120

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

POJ 3657/|洛谷 P2898 [USACO08JAN]haybale猜测HaybaleGuessing

HaybaleGuessing Time Limit:1000MS Memory Limit:65536K Total Submissions:2626 Accepted:706 Description The cows, who always have an inferiority complex a...

pxlsdz的博客 640

BZOJ 3939 [Usaco2015 Feb]Cow Hopscotch 线段树

BZOJ 3939 [Usaco2015 Feb]Cow Hopscotch 线段树

-Claude 1592

[USACO3.1.4] 形成的区域 - 线段树/矩形切割

题目描述N 个不同的颜色的不透明的长方形 ( 1 <= N <= 100 ) 被放置在一张宽为:A、 长为:B 的白纸上。这些长方形被放置时,保证了它们的边于白纸的边缘平行。所有的长方形都放置在白纸内,所以我们会看到不同形状的各种颜色。坐标系统的原点 ( 0,0 ) 设在这张白纸的左下角,而坐标轴则平行于边缘。输入格式按顺序输入放置长方形的方法。第一行输入的是那个放在底的长方形(即白纸)。 第 1

Bill_Yang_2016的博客 900

[Usaco2003 Open]Lost Cows(线段树)

题目链接:http://begin.lydsy.com/JudgeOnline/problem.php?id=2875 类似于poj上的一道题,具体记不得了。 算是线段树的一道基础题吧,单点更新问题。 sum[rt]记录前面所有的空闲位置的数目 sum[rt]=sum[rt 从后往前进行插入,每次插入之后记录插入的位置,并做一个标记,第一个数应该为最终未标记的那个数,然后

To be excellent! 572

USACO-Section1.2 Milking Cows [线段树]

2017-5-23 题目大意: 读入N个农民(1 <= N <= 5000)挤N头牛的工作时间列表, 求最长至少有一人在挤奶的时间段。 最长的无人挤奶的时间段。(从有人挤奶开始算起) 样例输入: 3 300 1000 700 1200 1500 2100 样例输出: 900 300 题解: 排序解决。按照农名开始挤牛奶的时间进行排序,问题转化为三个子问

mujinuist的博客 356
上一篇: 【BZOJ2748】音量调节
下一篇: 最小与最大
Bobby_Z
博客等级 码龄11年 6粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值