2015-2016 ACM-ICPC Pacific Northwest Regional Contest Div.2( Problem V Gears)
来源:互联网 发布:知豆电动汽车官网 编辑:程序博客网 时间:2024/06/14 02:51
题目地址:点击打开链接
题意:给你很多齿轮,让你判断第一个齿轮和第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;}
水波。
阅读全文
0 0
- 2015-2016 ACM-ICPC Pacific Northwest Regional Contest Div.2( Problem V Gears)
- 2016-2017 ACM-ICPC Pacific Northwest Regional Contest (Div. 2)
- 2015-2016 ACM-ICPC Pacific Northwest Regional Contest Div.2 全部题目题解
- 2016-2017 ACM-ICPC Pacific Northwest Regional Contest (Div. 2)【solved:12 / 13】
- 2016-2017 ACM-ICPC Pacific Northwest Regional Contest
- 2016-2017 ACM-ICPC Pacific Northwest Regional Contest (Div. 1) 【solved:9 / 12】
- 2017/9/23周测(CF2016-2017 ACM-ICPC Pacific Northwest Regional Contest (Div. 2))
- 【2015-2016 ACM-ICPC Pacific Northwest Regional Contest (Div 1)C】【排序 模拟】Classy 课程难度排序超多关键字
- 【2015-2016 ACM-ICPC Pacific Northwest Regional Contest (Div 1)D】【水题】Triangle 两个三角形是否可以恰好拼成矩形
- Codeforce Gym 100819P : 2015-2016 ACM-ICPC Pacific Northwest Regional Contest - P 仔细看题啊!
- 【2015-2016 ACM-ICPC Pacific Northwest Regional Contest (Div 1)H】【迭代 排序 模拟】Hilbert Sort 图形拐拐划分,经过所有点的
- 【2015-2016 ACM-ICPC Pacific Northwest Regional Contest (Div 1)E】【水题 贪心】Excellence n个数两两组合使得最小和尽可能大
- 【2015-2016 ACM-ICPC Pacific Northwest Regional Contest (Div 1)A】【floyd 最小路径覆盖】最少飞机数满足所有航班要求
- 【2015-2016 ACM-ICPC Pacific Northwest Regional Contest (Div 1)G】【坐标轴变换 LIS】Racing Gems 开车吃宝石,横向速度不能超
- Codeforce Gym 100819L : 2015-2016 ACM-ICPC Pacific Northwest Regional Contest - L 这是一道阅读理解(微笑)
- [CF Gym 100827C] Containment [2014-2015 ACM-ICPC Pacific Northwest Regional Contest C]
- [CF Gym 100827E] Hill Number [2014-2015 ACM-ICPC Pacific Northwest Regional Contest E]
- [CF Gym 100827F] Knights [2014-2015 ACM-ICPC Pacific Northwest Regional Contest F]
- VTK交互之交互样式
- VMware中Ubuntu16.04 设置1920*1080
- POJ2965 枚举
- python迭代器简介
- 如何取数据五 spring+servlet(request取数据,然后setget dao)+jdbc存数据库
- 2015-2016 ACM-ICPC Pacific Northwest Regional Contest Div.2( Problem V Gears)
- 【Java】-- 对象和对象引用
- POJ1860 SPFA
- 如何用springcloud找妹纸之2--- 相识于江湖(Eureka)
- POJ3259 FLOYD
- 字符串操作函数
- 2017-05-29:Unity5.6连接Sql sever数据库
- C++11右值引用和move语义
- fuzhuo----Problem Description