2015-2016 ACM-ICPC Pacific Northwest Regional Contest Div.2( Problem V Gears)

2023-05-16

题目地址:点击打开链接

题意:给你很多齿轮,让你判断第一个齿轮和第n个齿轮的关系。有三种关系题目中已经给出。

解题思路:算是比较直观的一个dfs题目了,重点是怎么样处理这个dfs。

结合题目中给出的正负关系,我们可以联想到齿轮的方向,于是我们有了以下处理方式:

<1>: 如果有一个齿轮和第一个齿轮相连并且转动方向相同,那么这个第一个齿轮无法转动。

<2>:如果第一个齿轮没法通过其他齿轮与第n个齿轮相连,那么就输出The input gear is not connected to the output gear.

<3>:如果满组题目要求的话,就可以解决问题了。

那么我们怎样处理dfs呢,根据以上所说,关键是处理方向,这里我们用+1,-1,0,来表示齿轮的三种状态。

在dfs是加以判断就可以了。

上代码:

#include<cstdio>
int n;
struct gear { int x, y, r; } a[1024];
int dir[1024];
int gcd(int x, int y)
{
    return y==0? x : gcd(y,x%y);
}
bool solve(int i, int d)
{
	dir[i] = d;
	for (int j = 1; j <= n; j++)
	{
		if (i != j && (a[i].x - a[j].x)*(a[i].x - a[j].x)
			+ (a[i].y - a[j].y)*(a[i].y - a[j].y)
			== (a[i].r + a[j].r)*(a[i].r + a[j].r))// 判断齿轮是否相连
		{
			if (dir[i] == dir[j]) return false;// 如果同向,则无法转动
			if (dir[j]) continue;
			if (!solve(j, -d)) return false;// 递归实现
		}
	}
	return true;
}
int main()
{
	int i;
	scanf("%d", &n);
	for (i = 1; i <= n; i++) scanf("%d%d%d", &a[i].x, &a[i].y, &a[i].r);
	if (!solve(1, 1)) printf("The input gear cannot move.\n");
	else if (!dir[n]) printf("The input gear is not connected to the output gear.\n");
	else
	{
		int g = gcd(a[1].r, a[n].r);
		printf("%d:%d\n", a[1].r*dir[n] / g, a[n].r / g);
	}
	return 0;
}

水波。


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

2015-2016 ACM-ICPC Pacific Northwest Regional Contest Div.2( Problem V Gears) 的相关文章

  • 梅森素数(C语言求解)

    梅森数 Mersenne Prime 指的是形如 1的正整数 其中指数 n 是素数 如果一个梅森数是素数 则称其为梅森素数 另外 由因式分解法可以证明 如果 1 是素数 则 n 也一定是素数 例如 当 n 2 3 5 7 时 1 都是素数
  • hdu 4405 Aeroplane chess

    Problem acm hdu edu cn showproblem php pid 4405 vjudge net contest 151678 problem R Reference bbs csdn net topics 380193
  • 字符串、字符数组的截取函数:strncpy、strsub

    字符数组的截取函数 字符串截取函数
  • 第八十七题 UVa12166 Equilibrium Mobile

    A mobile is a type of kinetic sculpture constructed to take advantage of the principle of equilibrium It consists of a n
  • 已知年月日利用公式求星期几模板

    在本文中 我们将使用C语言实现基于已知的年月日计算星期几的公式 这个公式被称为 蔡勒公式 Zeller s Congruence 是一种快速求解星期几的方法 代码分析 首先 我们需要对月份进行调整 如果月份小于3 即1月或2月 则将其视为上
  • 贪心算法之田忌赛马(超详细)

    简述 手把手教会贪心算法之田忌赛马 超详细 题目 田忌赛马 田忌和齐王赛马 两人各出n匹马 赢一场比赛得200两银子 输了赔200银子 平局不赔不赚 已知两人每匹马的速度 问田忌最多能赢多少银子 多组测试数据 每组数据的第一行是一个整数n
  • hdu 5818 Joint Stacks 2016 Multi-University 7

    Problem acm hdu edu cn showproblem php pid 5818 官方题解 bestcoder hdu edu cn blog 2016 multi university training contest 7
  • csu 1803 2016 2016湖南省赛 A

    Problem acm csu edu cn csuoj problemset problem pid 1803 vjudge net contest 161962 problem A Reference www cnblogs com w
  • hdu 6181 Two Paths

    Problem acm hdu edu cn showproblem php pid 6181 Reference Dijkstra应用之次短路 2017 Multi University Training Contest 10 1011
  • 2016 OWASP Mobile TOP 10 中文版

    M1 平台使用不当 这个类别包括平台功能的滥用 或未能使用平台的安全控制 它可能包括 Android 的意图 intent 平台权限 TouchID 的误用 密钥链 KeyChain 或是移动操作系统中的其他一些安全控制 有几种方式使移动应
  • 算术表达式的前缀式、中缀式、后缀式相互转换

    中缀表达式 中缀记法 中缀表达式是一种通用的算术或逻辑公式表示方法 操作符以中缀形式处于操作数的中间 中缀表达式是人们常用的算术表示方法 虽然人的大脑很容易理解与分析中缀表达式 但对计算机来说中缀表达式却是很复杂的 因此计算表达式的值时 通
  • 蓝桥杯 砝码称重 递归 解题报告

    5个砝码 用天平称重时 我们希望用尽可能少的砝码组合称出尽可能多的重量 如果只有5个砝码 重量分别是1 3 9 27 81 则它们可以组合称出1到121之间任意整数重量 砝码允许放在左右两个盘中 本题目要求编程实现 对用户给定的重量 给出砝
  • c编程:求出4×4矩阵中最大和最小元素值及其所在行下标和列下标,求出两条主对角线元素之和。

    求出4 4矩阵中最大和最小元素值及其所在行下标和列下标 求出两条主对角线元素之和 include
  • hdu 6121 Build a tree

    Problem acm hdu edu cn showproblem php pid 6121 Meaning 一棵 n 个点的完全 k 叉树 结点标号从 0 到 n 1 求以每一棵子树的大小的异或和 Analysis 一层层地统计答案 找
  • 在Windows Server 2016 Hyper-V中开启嵌套虚拟化(NestedVM)

    早期如果我们想做Hyper V功能测试 例如Hyper V Cluster或者Hyper V Replica时至少使用两台物理机器实现 作为大众屌丝没那么多钱购买机器怎么办 嵌套虚拟化 嵌套虚拟化 顾名思义 即在虚拟机中运行虚拟机 该技术最
  • hdu 1255 覆盖的面积

    Problem acm hdu edu cn showproblem php pid 1255 Reference hdu 1255 覆盖的面积 矩形面积并 矩形面积交 矩形周长并 线段树 扫描线总结 Meaning 给出 n 个矩形 求它
  • 三种寻找最长递增(减)子序列的方法【LIS】

    最长递增 减 子序列 LIS 三种解法 问题 给定一个序列data 1 6 2 5 7 9 求出他的的最长递增子序列 容易看出为 1 2 5 7 9 长度为5 同时这种问题还有一些衍生问法如 最长非递增 减 增子序列 最长递减子序列等解法都
  • “Shopee杯” 武汉大学(网络预选赛)D - DIY Masks at Home

    Shopee杯 武汉大学 网络预选赛 D DIY Masks at Home 题目链接 Click 时间限制 C C 5秒 其他语言10秒 空间限制 C C 262144K 其他语言524288K 64bit IO Format lld 题
  • 数的划分(递归)

    整数划分是另外的问题 题目描述 Description 将整数n分成k份 且每份不能为空 任意两种划分方案不能相同 不考虑顺序 例如 n 7 k 3 下面三种划分方案被认为是相同的 7 1 1 5 7 1 5 1 7 5 1 1 问有多少种
  • gym 101512 BAPC 2014 I Interesting Integers

    Problem codeforces com gym 101512 attachments vjudge net contest 186506 problem I Meaning 给出一个 正整数 n 要找尽量小的 a 和 b a lt b

随机推荐

  • Nginx架构基础

    1 写在前面 前面的内容我们介绍Nginx的一些的基础内容 xff0c 今天我们继续深入Nginx的介绍 xff0c 主要介绍下Nginx的架构的基础 2 Nginx的请求处理流程 Web Email以及TCP流量通过Nginx的传输层状态
  • maven配置以及设置国内镜像

    下载好maven时 xff0c 将maven包放进D盘 xff0c 创建maven文件夹 xff0c 进行解压 然后进行配置 右键 计算机 xff0c 选择 属性 xff0c 之后点击 高级系统设置 xff0c 点击 环境变量 xff0c
  • 关于Xray中代理的一些总结

    在Xray使用的时候遇到了一些代理问题 在一般的扫描中 为了出现意外情况 可能会封ip或者扫描崩掉 会用代理扫描网站 xff1a 1 第一种办法就是直接在 config yaml 中直接修改代理ip xff0c 我这里是将代理改为burp的
  • Angular:formGroup中嵌套formArray,在formArray中存放的可编辑table中的字段的动态展示

    今天做的项目中做了一个新增页面 xff0c 其中最顶级是一个formGroup表单命名为editClauseForm xff0c 里面有几个单独的字段 xff0c 还有一个嵌套的formArray xff0c 命名为clauseArr xf
  • 【Java系列-6】Java实现:有1、2、3、4这4个数字,能组成多少个互不相同且无重复数字的三位数、都是多少

    Java系列 6 Java实现 xff1a 有1 2 3 4这4个数字 xff0c 能组成多少个互不相同且无重复数字的三位数 xff1f 都是多少 xff1f 1 问题 Java实现 xff1a 有1 2 3 4这4个数字 xff0c 能组
  • 【C、C++系列-10】C语言实现:百钱买百鸡问题

    C C 43 43 系列 10 C语言实现 xff1a 百钱买百鸡问题 1 问题 百钱买百鸡问题 xff1a 我国古代数学家张丘建在 算经 一书中曾提出过著名的 百钱买百鸡 问题 该问题叙述如下 xff1a 鸡翁一 xff0c 值钱五 xf
  • Android 通知使用权

    1 创建service extends NotificationListenerService xff0c 并实现onNotificationRemoved onNotificationPosted public class Notific
  • Android 系统文件浏览器

    1 调用系统文件浏览器 Intent intent 61 new Intent Intent ACTION GET CONTENT intent setType 34 34 设置类型 xff0c 我这里是任意类型 xff0c 任意后缀的可以
  • Android 导入导出excel xls、xlsx

    1 导入依赖 implementation group 39 org apache poi 39 name 39 poi ooxml 39 version 39 3 17 39 implementation group 39 org apa
  • Android 导出PDF PdfDocument

    导出PDF 64 param view 要导出的view xff0c 如果view高度过高 xff08 超过一屏的高度 xff09 xff0c 在改view外部套一层Scrollview即可 如果要导出列表类型View 比如Listview
  • Android 获取所有短信-彩信

    1 权限 lt 读取短信 gt lt uses permission android name 61 34 android permission READ SMS 34 gt lt uses permission android name
  • Photoshop CC 2018 安装包安装教程

    Photoshop CC 2018功能特点 1 更紧密连接的 Photoshop 全新的智慧型锐利化 2 智慧型增加取样 内含 Extended 功能 Camera RAW 8 和图层支援 3 可编辑的圆角矩形 多重形状和路径选择 相机防手
  • 【原创】什么是原码、反码、补码?

    原码 反码 补码是计算机中对数字的二进制表示方法 原码 xff1a 将最高位作为符号位 xff08 0表示正 xff0c 1表示负 xff09 xff0c 其它数字位代表数值本身的绝对值的数字表示方式 反码 xff1a 如果是正数 xff0
  • snprintf中的错误,不要出现目标地址也是源地址的情况

    在使用snprintf时 xff0c 千万要注意一点 xff0c 不要出现目标地址也是源地址的情况 看如下例子 xff1a span class token macro property span class token directive
  • Linux下的shell进度条

    一 关于Shell Shell的作用是解释执行用户的命令 xff0c 它有两种执行命令的方式 xff1a 交互式和批处理 Shell脚本和编程语言很相似 xff0c 也有变量和流控制语句 xff0c 但Shell脚本是解释执行 xff0c
  • you-get相关使用命令

    you get i url 获取视频格式 清晰度等信息 you get o E folder url 保存路径 在当前目录的路径栏 输入cmd即可打开命令行 或者 shift 右键 用powershell打开 you get p PotPl
  • Spring Cloud从入门到放弃(四):Eureka的常用配置

    前言 Spring Cloud系列 点击查看Spring Cloud系列文章 eurka的常用配置 eureka server前缀的配置项 是否允许开启自我保护模式 xff0c 缺省 xff1a span class token boole
  • STM32之点亮LED

    学习一个新的处理器 xff0c 第一个程序肯定就是点亮LED xff0c 它可以让我们较快的 较清晰的了解到一个处理器的程序结构 xff0c 学习32也不例外 xff0c 首先第一个程序我们就来点亮LED xff0c 点亮LED程序有很多种
  • 判断两条线段是否相交

    判断两条直线是否相交有两步 xff1a 1 xff1a 快速排斥 xff08 可以筛除大部分 xff09 2 xff1a 跨立试验 xff08 下面会有所说明 xff09 现在开始解释 xff1a 第一步快速排斥 xff0c 实际上就是先判
  • 2015-2016 ACM-ICPC Pacific Northwest Regional Contest Div.2( Problem V Gears)

    题目地址 xff1a 点击打开链接 题意 xff1a 给你很多齿轮 xff0c 让你判断第一个齿轮和第n个齿轮的关系 有三种关系题目中已经给出 解题思路 xff1a 算是比较直观的一个dfs题目了 xff0c 重点是怎么样处理这个dfs 结