【t033】单位unit
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的更多相关文章
- Jass 技能模型定义(—):半人马酋长的反击光环
Jass是什么? 先阐释一下什么是jass吧,百度:JASS(正确地说是JASS 2)是魔兽3的程序语言,用于控制游戏和地图的进行,也是魔兽游戏和地图的基础. 地图编辑器中摆放的单位( ...
- Less函数说明
索引 escape(@string); // 通过 URL-encoding 编码字符串 e(@string); // 对字符串转义 %(@string, values...); // 格式化字符串 ...
- CentOS7新特性
一.CentOS7的4中模式 CentOS7里不在有0-6启动级别,而是4个target 1.graphical.target:多人模式,支持图形和命令行两种登录,对应之前的3,5级别 2.multi ...
- sass揭秘之@mixin,%,@function
因为文章内含有很多sass代码,如需自己动手查看编译结果,推荐使用sassmeister这款在线编译工具,方便你阅读学习. 在阅读本文章之前,请先确认你已经阅读了上篇文章sass揭秘之变量,不然会给你 ...
- BOM(Bill of Material)详解
一.物料(ITEM) 物料(Item or Material),是对存货的统称,是建立BOM和其他业务数据的前提条件,在ERP系统中称之为物料主数据,包括原材料(Raw material).在产品(W ...
- [转] C# 绘制报表,使用Graphics.DrawString 方法
原文 Graphics.DrawString 方法 在指定位置并且用指定的 Brush 和Font 对象绘制指定的文本字符串. public void DrawString( string s, Fo ...
- mysql 性能分析套件
#!/usr/local/python3./bin/python3. #!coding:utf- #################################### #目地:用于诊断mysql性 ...
- Jass 技能模型定义(转)
Jass是什么? 先阐释一下什么是jass吧,百度:JASS(正确地说是JASS 2)是魔兽3的程序语言,用于控制游戏和地图的进行,也是魔兽游戏和地图的基础. 地图编辑器中摆放的单位(Un ...
- Graphics.DrawString 方法
MSDN上的解释: 在指定位置而且用指定的 Brush 和Font 对象绘制指定的文本字符串. public void DrawString( string s, Font font, Brush b ...
随机推荐
- Django的命令
安装django : pip install django 创建django项目 :django-admin startproject projectname 启动django项 ...
- Leetcode-求两数之和
题目: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用这个数组中 ...
- Java Web学习总结(7)——HttpServletRequest对象
一.HttpServletRequest介绍 HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,通过这个对象 ...
- amazeui学习笔记--css(常用组件8)--列表list
amazeui学习笔记--css(常用组件8)--列表list 一.总结 1.链接列表:就是多个链接在一起组成的列表, 使用 <ul> 结构嵌套链接列表,添加 .am-list.还是ui包 ...
- winedt (latex 编译器)解决中文的问题(CJK & CTEX)
主要是导入相关的库支持: 1. CJK \usepackage{CJK}:CJK,是中日韩的英文首字母的组合,处理中文需要先导入这个包: \begin{CJK*}{GBK}{song}:默认句式,表示 ...
- Android 使用JSON格式与服务器交互 中文乱码问题解决
当前是在开发Android 程序时,客户端与服务器端采用JSON传送数据,发现中文乱码问题.不过这个问题的解决办法应该对所有java语言开发的项目都使用. 解决方法是: 1.客户端发送数据之间加上: ...
- SpringMVC,采用的是SpringJDBC
上一次复习搭建了SpringMVC+Mybatis,这次搭建一下SpringMVC,采用的是SpringJDBC,没有采用任何其他的ORM框 架,SpringMVC提供了一整套的WEB框架,所以如果想 ...
- Java Timer TimerTask Example(java Timer的例子)
Java java.util.Timer is a utility class that can be used to schedule a thread to be executed at cert ...
- 【Codeforces Round #440 (Div. 2) A】 Search for Pretty Integers
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 先枚举一个数字的情况. 再枚举两个数的情况就好. [代码] #include <bits/stdc++.h> #defi ...
- c#.net公共帮助类
c#.net公共帮助类 比较全面的c#帮助类 比较全面的c#帮助类,日常工作收集,包括前面几家公司用到的,各式各样的几乎都能找到,所有功能性代码都是独立的类,类与类之间没有联系,可以单独引用至项目,分 ...