Time Limit: 1 second

Memory Limit: 64 MB

【问题描述】

某星球上有很多计量系统,之间的计量单位的转换很繁琐。希望你能编程解决这个问题。

现有N (1 <= N <= 100)个转换关系(比如:12 A 等于 1 B, 3 B等于 1 C等等 ),请计算指定的M (1 <= M <= 100) 个转换关系(比如:多少 A 等于 1 C)。

【输入格式】

第一行:两个整数 N 和 M。

下面N行:每行有3个值:A S1 S2,A是一个小数,S1、S2是两个单词,它们之间用空格分开。表示 A 个 S1 等于 1个S2。

再后面有M行:每行两个单词X Y,中间用空格分开,请你计算出1个Y相当于多少X。

【输出格式】

共M行:每行对应一个输入数据中的单位转换问题,答案为乘1000之后四舍五入取整。保证答案不超过2^31。

Sample Input

4 1

12 inch foot

3 foot yard

5280 foot mile

0.0254 meter inch

meter mile

Sample Output

1609344

【题目链接】:http://noi.qz5z.com/viewtask.asp?id=t033

【题意】

【题解】



这题的题目数据不知道怎么回事,不能让C++通过;

自己手动测是正确的;

可以转换成图论的模型吧;

对于

t x y

则建立一条从x指向y的有向边,边权为t;

同时建立一条从y指向x的有向边,边权为1/t;

w[x][y]就表示1个y可以换成几个x;

然后用floyd搞出任意两个之间的(可能不能全部)的换算就好了;

可以加个bo数组判断某两个单位之间之前有没有已经知道;已经知道就不要换算了;

这里不是加法而是乘法了;

round()是四舍五入函数;



【完整代码】

#include <cstdio>
#include <cmath>
#include <iostream>
#include <algorithm>
#include <string>
#include <map>
using namespace std;
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define LL long long
#define rep1(i,a,b) for (int i = a;i <= b;i++)
#define rep2(i,a,b) for (int i = a;i >= b;i--)
#define mp make_pair
#define pb push_back
#define fi first
#define se second
#define rei(x) scanf("%d",&x)
#define rel(x) scanf("%I64d",&x) typedef pair<int,int> pii;
typedef pair<LL,LL> pll; const int dx[9] = {0,1,-1,0,0,-1,-1,1,1};
const int dy[9] = {0,0,0,-1,1,-1,1,-1,1};
const double pi = acos(-1.0);
const int N = 210; int n,m,tot;
map <string,int> dic;
double w[N][N],t;
bool bo[N][N] = {0};
string s1,s2; int main()
{
//freopen("F:\\rush.txt","r",stdin);
rei(n);rei(m);
rep1(i,1,n)
{
cin >> t >> s1 >> s2;
int x,y;
if (!dic[s1]) dic[s1]=++tot;
if (!dic[s2]) dic[s2]=++tot;
x = dic[s1],y = dic[s2];
w[x][y] = t,w[y][x] = 1/t;
bo[x][y] = true,bo[y][x] = true;
}
rep1(k,1,tot)
rep1(i,1,tot)
rep1(j,1,tot)
if (i!=j && i!=k && j!=k)
{
if (bo[i][j]) continue;
if (!bo[i][k] || !bo[k][j]) continue;
w[i][j] = w[i][k]*w[k][j];
bo[i][j] = true;
}
rep1(i,1,m)
{
cin >> s1 >> s2;
int x = dic[s1],y = dic[s2];
double d = w[x][y]*1000;
int t = round(d);
cout << t << endl;
}
return 0;
}

【t033】单位unit的更多相关文章

  1. Jass 技能模型定义(—):半人马酋长的反击光环

      Jass是什么?       先阐释一下什么是jass吧,百度:JASS(正确地说是JASS 2)是魔兽3的程序语言,用于控制游戏和地图的进行,也是魔兽游戏和地图的基础. 地图编辑器中摆放的单位( ...

  2. Less函数说明

    索引 escape(@string); // 通过 URL-encoding 编码字符串 e(@string); // 对字符串转义 %(@string, values...); // 格式化字符串 ...

  3. CentOS7新特性

    一.CentOS7的4中模式 CentOS7里不在有0-6启动级别,而是4个target 1.graphical.target:多人模式,支持图形和命令行两种登录,对应之前的3,5级别 2.multi ...

  4. sass揭秘之@mixin,%,@function

    因为文章内含有很多sass代码,如需自己动手查看编译结果,推荐使用sassmeister这款在线编译工具,方便你阅读学习. 在阅读本文章之前,请先确认你已经阅读了上篇文章sass揭秘之变量,不然会给你 ...

  5. BOM(Bill of Material)详解

    一.物料(ITEM) 物料(Item or Material),是对存货的统称,是建立BOM和其他业务数据的前提条件,在ERP系统中称之为物料主数据,包括原材料(Raw material).在产品(W ...

  6. [转] C# 绘制报表,使用Graphics.DrawString 方法

    原文 Graphics.DrawString 方法 在指定位置并且用指定的 Brush 和Font 对象绘制指定的文本字符串. public void DrawString( string s, Fo ...

  7. mysql 性能分析套件

    #!/usr/local/python3./bin/python3. #!coding:utf- #################################### #目地:用于诊断mysql性 ...

  8. Jass 技能模型定义(转)

    Jass是什么?       先阐释一下什么是jass吧,百度:JASS(正确地说是JASS 2)是魔兽3的程序语言,用于控制游戏和地图的进行,也是魔兽游戏和地图的基础. 地图编辑器中摆放的单位(Un ...

  9. Graphics.DrawString 方法

    MSDN上的解释: 在指定位置而且用指定的 Brush 和Font 对象绘制指定的文本字符串. public void DrawString( string s, Font font, Brush b ...

随机推荐

  1. Vue自定义组件

  2. Flask项目之手机端租房网站的实战开发(十二)

    说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家! 接着上一篇博客继续往下写 :https://blog.csdn.net/qq_41782425/article/details/8 ...

  3. Windows下编译OpenSSL(使用VS2013)

    简述 OpenSSL是一个开源的第三方库,它实现了SSL(Secure SocketLayer)和TLS(Transport Layer Security)协议,被广泛企业应用所采用.对于一般的开发人 ...

  4. 各个浏览器/服务器URL最大长度限制

    在http协议中,其实并没有对url长度作出限制,往往url的最大长度和用户浏览器和Web服务器有关,不一样的浏览器,能接受的最大长度往往是不一样的,当然,不一样的Web服务器能够处理的最大长度的UR ...

  5. HDU 5237 Base64

    Base64 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Sub ...

  6. Android OnGestureListener用法 识别用户手势 左右滑动

    Android可以识别用户的手势(即用户用手指滑动的方向),通过用户不同的手势,从而做出不同的处理 需要使用OnGestureListener 比如说看电子书的时候翻页,或者要滑动一些其他内容 直接上 ...

  7. C#利用反射机制,获取实例的属性和属性值

    C#利用反射,遍历获得一个类的所有属性名,以及该类的实例的所有属性的值 对应某个类的实例化的对象tc, 遍历获取所有属性(子成员)的方法(采用反射): Type t = tc.GetType();// ...

  8. Static关键字深入理解

    1.static变量 按照是否静态的对类成员变量进行分类可分两种:一种是被static修饰的变量,叫静态变量或类变量:另一种是没有被static修饰的变量,叫实例变量. 两者的区别是: 对于静态变量在 ...

  9. [转载]Surging 分布式微服务框架使用入门

    前言 本文非 Surging 官方教程,只是自己学习的总结.如有哪里不对,还望指正. 我对 surging 的看法 我目前所在的公司采用架构就是类似与Surging的RPC框架,在.NET 4.0框架 ...

  10. <转> Intel VTune分析结果中的名词释译

    原文转自http://blog.chinaunix.net/uid-26000296-id-3369740.html Elapsed Time(执行耗时): the total time your t ...