赛马

问题描述

赛马场有 n 匹马,编号分别为 1,2,⋯,n。进行 m 次淘汰赛,决出他们当中速度最快的一匹马。每次淘汰赛所有编号在区间 [L,R] 并且没有被淘汰的马参加比赛,其中编号为 p 的马获胜,其他的马都被淘汰。 m 次淘汰赛之后,只有一匹马未被淘汰。求所有被淘汰的每一匹马是被哪一匹马淘汰的。

输入格式

第一行包含两个整数 n,m。 接下来 m 行每行包含三个整数 L,R,p 。

输出格式

输出一行,包含 n 个整数,两个整数之间使用空格分隔。分别表示第 i 个整数表示淘汰第 i 匹马的马的编号。如果第 i 匹马是最终的胜利者,则输出 0 。

样例输入

5 3
2 4 3
1 3 1
1 5 5
样例输出
5 3 1 3 0

数据规模和约定

对于 30%数据: n≤1000

对于 100% 数据: 1≤m,n≤300000,n>m,1≤L≤p≤R≤n。

输入保证每场比赛 L 到 R 之间至少有两匹马没有被淘汰,并且第 p匹马没有被淘汰。

附上AAAAAAAAAAAAAAAAAAAAAAAAC代码

#include<iostream> 
using namespace std;
int n,m;
int vis[300010];
int ans[300010];
int main(){
	cin>>n>>m;
	for (int i = 1; i <= m; i++){
		int l,r,p;
		cin>>l>>r>>p;
		for (int j = l; j <= r; j++){
			if(!vis[j] && !ans[j] && j != p){
				ans[j]=p;
				vis[j]=r;
			}else if (vis[j]){
				if (!ans[ans[j]]){
					if (ans[j] <= r && ans[j] >= l && ans[j] != p){
						ans[ans[j]] = p;
						vis[ans[j]] = max(vis[ans[j]],r);
					}
				}
				j=vis[j];
			}
		}
	}
	cout<<ans[1];
	for (int i = 2; i <= n; i++){
		cout<<" "<<ans[i];
	}
	return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
赛马实验是一种常用的实验方法,用来测量和比较不同个体、组织或系统之间的性能。这个实验的基本原理是将不同条件下的参与者分为多组,然后观察和记录它们在相同环境下的表现和成果。 在赛马实验中,我们首先需要确定实验的目的和假设。然后根据假设,选择适当的参与者和参与者的特征进行分组。每组参与者都会在相同的环境条件下进行特定任务或活动,并被记录下来。 接下来,我们会设立一个合适的时间段,以确保实验的结果具有可比性。通过收集和分析数据,我们可以比较不同组参与者的表现和成果,评估哪种条件下的参与者更出色。 赛马实验可以被广泛应用于不同领域。例如,在医学研究中,赛马实验可以用来比较不同治疗方法对患者康复的效果。在教育领域,赛马实验可以用来评估不同教学方法对学生学习成绩的影响。在市场营销中,赛马实验可以用来比较不同广告策略对销售额的影响。 通过赛马实验,我们可以得出一些有意义的结论,以便进一步改进和优化现有的条件。然而,需要注意的是,赛马实验并不一定能够完全预测实际情况,因为实验环境和条件往往与现实世界存在差异。 总之,赛马实验是一种有效的实验方法,可以用来评估和比较不同条件下的参与者的表现和成果。通过这种实验,我们可以获得有关不同条件下的相对优劣的信息,并为进一步优化和改进提供有价值的参考。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值