P2903 [USACO08MAR]麻烦的干草打包机The Loathesome Hay Baler

题目描述

Farmer John has purchased the world's most loathesome hay baler. Instead of having a drive-roller that drives maybe an idler roller that drives the power take-off for the baler, it has N rollers (2 <= N <= 1050) which drive and are driven by various rollers.

FJ has meticulously cataloged data for each roller i: X_i,Y_i are the center of the roller (-5000 <= X_i <= 5000; -5000 <= Y_i <= 5000); R_i is the roller's radius (3 <= R_i <= 800). The drive-roller is located at 0,0; the baler power take-off is located at X_t,Y_t (numbers supplied in the input).

The drive-roller turns clockwise at 10,000 revolutions per hour. Your job is to determine the speeds of all the rollers that are in the power-train: from the drive-roller through the power take-off roller. Rollers that do not transfer power to the take-off roller are to be ignored. A roller of radius Rd that is turning at S rph and driving another roller of radius Rx will cause the second roller to turn at the speed -S*Rd/Rx (where the sign denotes whether the roller is turning clockwise or counterclockwise (anticlockwise for our British friends)).

Determine the power-train path and report the sum of the absolute values of all those rollers' speeds. All the rollers in the input set except the driver-roller are driven by some other roller; power is never transferred to a roller from more than one other roller.

Report your answer as an integer that is the truncated value after summing all the speeds.

Farmer John新买的干草打包机的内部结构大概算世界上最混乱的了,它不象普通的机器一样有明确的内部传动装置,而是,N (2 <= N <= 1050)个齿轮互相作用,每个齿轮都可能驱动着多个齿轮。 FJ记录了对于每个齿轮i,记录了它的3个参数:X_i,Y_i表示齿轮中心的位置坐标(-5000 <= X_i <= 5000; -5000 <= Y_i <= 5000);R_i表示该齿轮的半径(3 <= R_i <= 800)。

驱动齿轮的位置为0,0,并且FJ也知道最终的工作齿轮位于X_t,Y_t。 驱动齿轮顺时针转动,转速为10,000转/小时。你的任务是,确定传动序列中所有齿轮的转速。传动序列的定义为,能量由驱动齿轮传送到工作齿轮的过程中用到的所有齿轮的集合。对能量传送无意义的齿轮都应当被忽略。

在一个半径为Rd,转速为S转/每小时的齿轮的带动下,与它相接的半径为Rx的齿轮的转速将为-S*Rd/Rx转/小时。S前的负号的意思是,一个齿轮带动的另一个齿轮的转向会与它的转向相反。

FJ只对整个传动序列中所有齿轮速度的绝对值之和感兴趣,你的任务也就相应转化成求这个值。机器中除了驱动齿轮以外的所有齿轮都被另外某个齿轮带动,并且不会出现2个不同的齿轮带动同一个齿轮的情况。

输入输出格式

输入格式:

  • Line 1: Three space-separated integers: N, X_t, and Y_t

  • Lines 2..N+1: Line i+1 describes roller i's properties: X_i, Y_i, and R_i

输出格式:

  • Line 1: A single integer that is the truncated version of the sum of the absolute value of the speeds of the rollers in the power-train including the drive-roller, all the driven rollers, and the power take-off roller.

输入输出样例

输入样例#1:

4 32 54
0 0 10
0 30 20
32 54 20
-40 30 20

输出样例#1:

20000

说明

Four rollers: the drive-roller at 0,0 with radius 10. It drives the roller above it at 0,30 with radius 20. That roller drives both the power take-off roller at 32,54 (r=20) and a random roller (not in the power train) at -40,30 (r=20).

Roller Radius Speed

1 (0,0) 10 10,000

2 (0,30) 20 -5,000

3 (32,54) 20 5,000


Sum of abs values: 20,000

bfs一下就可以了。

注意几个问题:

1、相切才能联动!

2、精度!用double!

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <algorithm>
#include <queue>
#include <cmath>const int sx = 1;
const int sy = 1;
const int K = 0;
const int MAXN = 1050 + 10;int n,ex,ey;
int pre[MAXN];
int start;
int b[MAXN];struct T
{int x,y,r;double energy, s;
}circle[MAXN];inline bool IsPre(T& a, T& b)
{int d = (a.x - b.x)*(a.x - b.x)+ (a.y - b.y)*(a.y - b.y);int sum = a.r + b.r;return d == sum*sum;
}void bfs()
{std::queue<T> q;q.push(circle[start]);b[start] = true;while(!q.empty()){T temp = q.front();q.pop();for(int i = 1;i <= n;i ++){if( !b[i] && IsPre(circle[i], temp)){b[i] = true;circle[i].s =  temp.s * temp.r / circle[i].r;circle[i].energy = circle[i].s + temp.energy;if(circle[i].x  == ex && circle[i].y == ey){printf("%d", (int)circle[i].energy);return ;}q.push(circle[i]);}}}
}int main()
{scanf("%d%d%d", &n ,&ex, &ey);ex += K;ey += K;for(int i = 1;i <= n;i ++){scanf("%d%d%d", &circle[i].x, &circle[i].y, &circle[i].r);circle[i].x += K;circle[i].y += K;if(circle[i].x == K && circle[i].y == K){start = i;circle[i].s = 10000;circle[i].energy = 10000;}}bfs();return 0;
}

转载于:https://www.cnblogs.com/huibixiaoxing/p/6561472.html

洛谷P2903 [USACO08MAR]麻烦的干草打包机The Loathesome Hay Baler相关推荐

  1. 洛谷P2904 [USACO08MAR]跨河River Crossing 动态规划

    洛谷P2904 [USACO08MAR]跨河River Crossing 动态规划 区间DP f[ i ] 表示 将 i 头牛 运了过去,然后John 又返回所需要的最少时间 1 #include & ...

  2. 1615: [Usaco2008 Mar]The Loathesome Hay Baler麻烦的干草打包机

    1615: [Usaco2008 Mar]The Loathesome Hay Baler麻烦的干草打包机 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: ...

  3. bzoj 1615: [Usaco2008 Mar]The Loathesome Hay Baler麻烦的干草打包机

    1615: [Usaco2008 Mar]The Loathesome Hay Baler麻烦的干草打包机 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: ...

  4. BZOJ 1615: [Usaco2008 Mar]The Loathesome Hay Baler麻烦的干草打包机 bfs

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1615 1615: [Usaco2008 Mar]The Loathesome Hay Bale ...

  5. [BZOJ1615][Usaco2008 Mar]The Loathesome Hay Baler麻烦的干草打包机

    1615: [Usaco2008 Mar]The Loathesome Hay Baler麻烦的干草打包机 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: ...

  6. bzoj1615 【Usaco2008 Mar】The Loathsome Hay Baler 麻烦的干草打包机

    1615: [Usaco2008 Mar]The Loathesome Hay Baler麻烦的干草打包机 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: ...

  7. [Usaco2008 Mar]The Loathesome Hay Baler麻烦的干草打包机

    Description Farmer John新买的干草打包机的内部结构大概算世界上最混乱的了,它不象普通的机器一样有明确的内部传动装置,而是,N(2<=N<=1050)N (2 个齿轮互 ...

  8. BFS-BZOJ-1615-[Usaco2008 Mar]The Loathesome Hay Baler麻烦的干草打包机

    Description Farmer John新买的干草打包机的内部结构大概算世界上最混乱的了,它不象普通的机器一样有明确的内部传动装置,而是,N (2 <= N <= 1050)个齿轮互 ...

  9. bzoj1615 [Usaco2008 Mar]The Loathesome Hay Baler麻烦的干草打包机

    Description Farmer John新买的干草打包机的内部结构大概算世界上最混乱的了,它不象普通的机器一样有明确的内部传动装置,而是,N (2 <= N <= 1050)个齿轮互 ...

最新文章

  1. 数学图形(1.40)T_parameter
  2. J2SE,J2ME,J2EE解释
  3. Spring事物详解和传播行为
  4. python3将字符串unicode转换为中文
  5. php基础语法知识笔记(一)
  6. a jquery 标签点击不跳转_form标签的action属性怎么用?form标签action属性的用法介绍(附实例)...
  7. 我认为的android入门学习策略
  8. Jmeter BeanShell使用json.jar包处理Json数据
  9. Spark的动态资源分配ExecutorAllocationManager
  10. linux登录vnc的命令行,用VNC远程登陆linux (ZT)
  11. 丑小鸭变白天鹅 数据中心进化三部曲
  12. python 随机颜色
  13. 用echarts绘制饼图---绘制南丁格尔玫瑰图
  14. 高等数学张宇18讲 第十四讲 数学一、数学二专题内容
  15. arcmap创建空间索引_ArcGIS ArcMap编辑教程-创建新的点要素
  16. Spring Boot 菜鸟教程 2 Data JPA
  17. 二阶压控电压源低通滤波器的传递函数
  18. Java JNI调用kaldi动态链接库(Linux版本)
  19. 计算机科学管理学专业大学排名,2020管理科学专业大学排名
  20. 不使用插件,小程序也能完整的渲染富文本(视频展现,图片自适应)

热门文章

  1. Inserting Data Into Tables Using Direct-Path INSERT
  2. NLP实战:财经新闻热点发现
  3. hive-jdbc 的大坑
  4. 计算机科学与技术班徽图片,智慧教室平台教学系统在中职计算机专业教学中的应用...
  5. 小强IT游记之大连行
  6. oracle 删除用户 ora-00604,删除用户ORA-00604和ORA-00054
  7. Vmware15 + Ubuntu18.0.4 安装教程(史上最详细记录)【多图预警】
  8. 凯撒密码(Caesar)
  9. 软件管理的“七个女妖”-不要相信她们
  10. 关于LINUX系统netterm终端登陆乱码问题。