飞机降落(dfs+贪心思想)

2023-11-01

飞机降落(dfs+贪心思想)

原题链接:4957. 飞机降落 - AcWing题库

思路分析:

通过读题易知,题目可以翻译为

已知有 n 条线段,每条线段都可以在一定的区域内滑动

需要我们来判断是否可以找到一种线段的分布方案,使得每条线段都不相交!

首先解释一下,为什么不能直接贪心来做?

因为题目的数据范围: 1 < = n < = 10 1<=n<=10 1<=n<=10

很显然数据比较小,所以正解的算法时间 复杂度较高(不是贪心)-> dfs

那么要怎么dfs呢?

很暴力

利用全排列的思想,对所有的线段进行搜索(每次搜索时用到了贪心的思想:即线段在满足条件的情况下,尽可能的往左靠)。

代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include<bits/stdc++.h>
#define N 100
using namespace std;

typedef struct node
{
	int t, d, l;
}node;

node p[N];
int n;
bool st[N];

//u表示已经搜到了几个线段;	last表示上一个搜索到的线段的右端点坐标
int dfs(int u, int last)
{
	if (u > n)
	{
		return 1;
	}
	for (int i = 1; i <= n; i++)
	{
		int t = p[i].t, d = p[i].d, l = p[i].l;
		if (!st[i] && t+d>=last)	//如果没有访问过,并且该线段的最靠右的左端点在last之后!
		{
			st[i] = 1;
			if (dfs(u + 1, max(last, t) + l))//意思是,如果递归发现可以搜索到,就返回true,注意这里的 max(last,t)+l 表示的是刚搜索到的线段尽可能靠左时,它的右端点的坐标!!!
				return 1;
			st[i] = 0;
		}
	}

	return 0;
}

void solve()
{
	cin >> n;
	for (int i = 1; i <= n; i++)
	{
		int a, b, c;
		cin >> a >> b >> c;
		p[i] = { a,b,c };
	}
    //注意每次都对st[]初始化
	memset(st, 0, sizeof st);
	if (dfs(1, 0))
		cout << "YES\n";
	else
		cout << "NO\n";

}
int main()
{
	int t;
	cin >> t;
	while (t--)
	{
		solve();
	}
	return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

飞机降落(dfs+贪心思想) 的相关文章

  • ProGuard代码混淆器如何使用

    一 概述 1 ProGuard简介 背景 ProGuard 是一个免费的 Java 类文件的压缩 优化 混肴器 它删除没有用的类 字段 方法与属性 使字节码最大程度地优化 使用简短且无意义的名字来重命名类 字段和方法 使用场景 我们在工程应

随机推荐

  • Idea系列文章2-依赖包的引入

    Idea系列文章 IDEA 全称 IntelliJ IDEA 是java编程语言开发的集成环境 IntelliJ在业界被公认为最好的java开发工具 尤其在智能代码助手 代码自动提示 重构 JavaEE支持 各类版本工具 git svn等
  • VUE element-ui之el-tree树形控件勾选节点指定节点自动勾选(指定节点为必选项)

    产品需求 最后一级节点中列表节点为必选项 勾选列表节点之外的同级节点 列表节点自动勾选 取消列表节点勾选 其他同级节点也取消勾选 即列表节点为必选项 列表之外的节点可单独操作 勾选或取消勾选 实现步骤 HTML中定义
  • php mysql utf 8_PHP+MySQL中对UTF-8,UTF8(utf8),set names gbk 的理解

    问题一 在我们进行数据库操作时会发现 数据库中表的编码用的是utf 8 但是在进行dos命令是要使用set names gbk 一 Mysql中默认字符集设置有四级 服务器级 数据库级 表级 和字段级 前三种都是默认设置 并不代表你的字段最
  • mysql删除表数据 MySQL清空表内容 3种命令方法及比较

    一 MySQL清空表数据命令 truncate SQL语法 truncate table 表名 注意 不能与where一起使用 truncate删除数据后是不可以rollback的 truncate删除数据后会重置Identity 标识列
  • Spring Boot 学习系列(09)—自定义Bean的顺序加载

    此文已由作者易国强授权网易云社区发布 欢迎访问网易云社区 了解更多网易技术产品运营经验 Bean 的顺序加载 有些场景中 我们希望编写的Bean能够按照指定的顺序进行加载 比如 有UserServiceBean和OrderServiceBe
  • 薪酬问题手册

    薪酬问题手册 所有离职人员的缺勤扣款都不对 考勤报表 自由制的考勤日历工作时长要显示实际工作时长 考勤报表 自由制 计算月工作时长 解决在接受页面数据CompAtteMonth对象时的absenteeismTime 调整后的缺勤时长 问题
  • GiftWrapping算法求最小凸包的简单实现

    目录 前言 问题简介 基本知识 算法简介 算法简单实现过程 源代码 结语 前言 本篇文章是基于哈工大软件构造的实验一写出的 源代码也只是TurtleSoup类中一个方法 虽然不能直接使用 但其思想还是有一定的参考价值 问题简介 一组平面上的
  • Intel lock前缀指令的屏障能力

    Intel lock前缀指令除了单操作原子性的能力之外 还具备可见性和有序性 对于Intel lock前缀指令的单操作原子性和可见性 参见下面两个链接 其实本质就是锁总线或锁缓存 加上缓存一致性协议 Intel LOCK前缀指令https
  • wsl ubuntu18.04LTS 网络连接设置

    修改 etc resolv conf可以自己设置 dns 但重启 WSL 以后 手动设置的 DNS 就会被重置为默认的 细心看了一下默认的文件以后发现了问题的关键 WSL 自动在启动时自动根据系统的虚拟交换机WSL生成 etc resolv
  • 一位计算机准PhD的大四和博零

    最新个人信息可见 Home Zhuoning Guo 完整版请见 知乎 攻读PhD 大一开始有读博念头 大二计划去香港 理由 学制短 奖学金高 环境 导师和同学 容易适应 海外麻烦也申不到特别好的 如美帝Top10 牛剑 大三基于校内实验室
  • k8s1.26.6 安装gitlab

    Gitlab官方提供了 Helm 的方式在 Kubernetes 集群中来快速安装 但是在使用的过程中发现 Helm 提供的 Chart 包中有很多其他额外的配置 所以我们这里使用自定义的方式来安装 也就是自己来定义一些资源清单文件 Git
  • SimpleDateFormat多线程下的异常

    今天在生产上碰到一个怪异的问题 之前一直跑的很好的xml转object程序 在日期转化的过程中报错的 经过排查原因 原来是由于SimpleDateFormat在多线程下运行造成的结果 demo例子如下 import java text Pa
  • Ubuntu环境下安装ffmpeg

    1 创建安装 录 sudo mkdir p usr local ffmpeg lib 2 下载ffmpeg源码 Download FFmpeg 3 解压源文件 4 到指定ffmpeg目录进行配置 cd ffmpeg 4 3 2 配置 con
  • Mybatis——增删改查的实现

    注意 增删改时一定要提交事务 代码 提交事务 sqlSession commit 1 namespace 命名空间 namespace中的全限定名 包名 类名 要和Dao Mapper接口的全限定名 包名 类名 一致 2 select 选择
  • 灌电流和拉电流简介

    灌电流 sink current 对一个端口而言 如果电流方向是向其内部流动的则是 灌电流 比如一个IO通过一个电阻和一个LED连接至VCC 当该IO输出为逻辑0时能不能点亮LED 去查该器件手册中sink current参数 拉电流 so
  • Flask后端部署到云服务器

    1 本地写好代码 2 码云创建仓库 上传本地代码到创库 git init git remote add origin https gitee com 自己的仓库 git git pull origin master git add git
  • 1 在 Linux 下开机自动重启脚本(亲测)

    etc rc local 开机启动程序 把需要开机自动运行的程序写在这个脚本里 etc init d 这个目录存放的是一些脚本 一般是linux以rpm包安装时设定的一些服务的启动脚本 要重新启动 sendmail 的话 而且你的 send
  • Tensorflow的Bazel编程(二)

    转自 http blog csdn net langb2014 article details 54312697 安装官网 https bazel build versions master docs tutorial Java html
  • springboot整合fisco

    Spring Boot连接Fisco Bcos区块链 使用spring boot连接Fisco Bcos 在Fisco Bcos的官方提供了Java Sdk工具用于连接 Java SDK 提供了访问 FISCO BCOS 节点的Java A
  • 飞机降落(dfs+贪心思想)

    飞机降落 dfs 贪心思想 原题链接 4957 飞机降落 AcWing题库 思路分析 通过读题易知 题目可以翻译为 已知有 n 条线段 每条线段都可以在一定的区域内滑动 需要我们来判断是否可以找到一种线段的分布方案 使得每条线段都不相交 首