acm1217教训
能用容器去做的用容器做,尽量少用数组,即使自己明确其数量的上届;
#include<iostream>
#include<cstring>
#include<map>//后来我用了一个map容器才能通过,如果自己建立数组就是不过,不知道到底哪里超出了;它明明说的是少于30个,现在做题题意也欺骗人了;
using namespace std;
const int N=;
int ok;
map<string,int>my_map;
void nameinput(int n)
{
string name;
for(int i=;i<=n;i++)
{
cin>>name;
my_map[name]=i;
}
}
double money[N][N];
void Link(int n,int m)
{
//memset(money,-1,sizeof(money));
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
money[i][j]=(i==j)?:;
string name1,name2;
double rate;
for(int i=;i<=m;i++)
{
cin>>name1>>rate>>name2;
money[my_map[name1]][my_map[name2]]=rate;
}
my_map.clear();
}
void deal(int n)
{
for(int k=;k<=n;k++)
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
{
if(money[i][j]<money[i][k]*money[k][j])
money[i][j]=money[i][k]*money[k][j];
}
for(int i=;i<=n;i++)
if(money[i][i]>)//求回路中两点距离;
{
ok=;break;
}
}
int main()
{
int n,m;
int count=;
while(cin>>n&&n)
{
nameinput(n);
cin>>m;
ok=;
Link(n,m);
deal(n);
if(ok==)cout<<"Case "<<count<<": Yes\n";
else cout<<"Case "<<count<<": No\n";
count++;
}
return ;
}
下面是超时代码:
#include<iostream>
#include<cstring>
#include<map>
using namespace std;
const int N=;
int ok;
int vis[N];
map<string,int>my_map;
string Name[N];
void nameinput(int n)
{
string name;
for(int i=;i<=n;i++)
{
cin>>name;
my_map[name]=i;
}
}
double money[N][N];
void Link(int n,int m)
{
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
money[i][j]=(i==j)?:;
string name1,name2;
double rate;
for(int i=;i<=m;i++)
{
cin>>name1>>rate>>name2;
money[my_map[name1]][my_map[name2]]=rate;
}
my_map.clear();
}
void process(int n,int start,int sub,double result)
{
if(sub==start)
{
if(result>)ok=;
return;
}
double re=result;
if(ok==)
for(int i=;i<=n;i++)
{
if(money[sub][i]!=-&&!vis[i])
{
vis[i]=;
re=result*money[sub][i];
process(n,start,i,re);
vis[i]=;
}
if(ok==)return;
}
}
int main()
{
int n,m;
int count=;
while(cin>>n&&n)
{
memset(vis,,sizeof(vis));
nameinput(n);
cin>>m;
ok=;
Link(n,m);
for(int i=;i<=n;i++)
{
for(int j=;j<=n;j++)
if(money[i][j]!=-)
{
vis[j]=;
process(n,i,j,1.0*money[i][j]);
vis[j]=;
}
}
if(ok==)cout<<"Case "<<count<<": Yes\n";
else cout<<"Case "<<count<<": No\n";
count++;
}
return ;
}
acm1217教训的更多相关文章
- 新人入职100天,聊聊自己的经验&教训
这篇文章讲了什么? 如题,本屌入职100天之后的经验和教训,具体包含: 对开发的一点感悟. 对如何提问的一点见解. 对Google开发流程的吐槽. 如果你 打算去国外工作. 对Google的开发流程感 ...
- android socket编程用Bufferreader读取的一个失败教训
由于我的手机需要用笔记本开的wifi,躺在床上玩手机时需要关电脑或者是要让电脑放歌的时候总是不想下床,于是我想能不能用一个APP,然后通过局域网实现在手机上对电脑进行操控呢?说干就干. 我在电脑上用的 ...
- Redis简介、与memcached比较、存储方式、应用场景、生产经验教训、安全设置、key的建议、安装和常用数据类型介绍、ServiceStack.Redis使用(1)
1.NOSQL简介 nosql的产生并不是要彻底的代替关系型数据库,而是作为传统关系型数据库的一个补充. Facebook和360使用Cassandra来存储海量社交数据 Twitter在其url抓取 ...
- Apache Storm 的历史及经验教训——Nathan Marz【翻译】
英文原文地址 中英文对照地址 History of Apache Storm and lessons learned --项目创建者 Nathan Marz Apache Storm 最近成为了ASF ...
- 七年IT生涯的经验教训
七年IT生涯的经验教训[转]我在IT界也拼打了有好几年了,但是现在和别人比较起来不是很如意.从天分上来说,我在属于智商不低的人:从技术上说,几乎没有我拿不下的:从见解上看,我是很有点子看法的人. ...
- 从Apache Storm学到的经验教训 —— storm的由来(转)
阅读目录 Storm来源 初探 再探 构建第一个版本 被Twitter收购 开源的Storm 发布之后 Storm的技术演进 构建开发者社区版 离开Twitter 提交到Apache Apache孵化 ...
- HttpClient -- 血的教训
HttpClient -- 血的教训 千万别用httpClient 不支持httpVersion2.0 因为这个导致项目重做
- 创业公司Playcafe关门大吉 创始人总结10大失败教训
导读:互联网电视游戏网站PlayCafe的创始人马克·高登森(Mark Goldenson)日前撰文,总结了自己创业失败的十个教训.以下为文章主要内容: 一年半前,我与公司联合创始人戴维·奈格(Dev ...
- 记录一次centos升级gblic的教训
前些天公司项目需要对上传的图片打水印,前端采用angularjs,后端nodejs,网上一搜,找到了一个images的库,在本地Windows环境下试了下还不错,然后就上传测试服务器(centos6. ...
随机推荐
- python程序设计——函数设计与调用
一.函数定义与调用 def 函数名([参数列表]): '''注释''' 函数体 # 输出小于n的斐波那契数 >>def fib(n): a,b=1,1 while a < n: pr ...
- 【第五章】MySQL数据库的安全机制
MySQL权限表MySQL用户管理MySQL权限管理SSL加密连接
- 技本功丨知否知否,Redux源码竟如此意味深长(下集)
上集回顾 Redux是如何使用的?首先再来回顾一下这个使用demo(谁让这段代码完整地展示了redux的使用) 如果有小伙伴对这段代码不是很理解的话,建议先去学习Redux的使用再来看这篇源码,这样更 ...
- 如何在线测试Exchange的速度
最新碰到了客户需要比较国内版和国际版的Office365的速度问题,微软提供在线工具测试 这里以Exchange 测试为例子,请参考. PS Onenote贴过来只能至图片,各位看官只能将就了 这里有
- c# 两个软件传参
1.socket 传参,类似于小型的服务器和客户端,一端发送,另一端保持监听状态. 2.通过第三方 数据库或者文件.
- HTTP 请求头 & 响应头
HTTP请求头概述 HTTP客户程序(例如浏览器),向服务器发送请求的时候必须指明请求类型(一般是GET或者POST).如有必要,客户程序还可以选择发送其他的请求头.大多数请求头并不是必需的, 但Co ...
- lintcode-191-乘积最大子序列
191-乘积最大子序列 找出一个序列中乘积最大的连续子序列(至少包含一个数). 样例 比如, 序列 [2,3,-2,4] 中乘积最大的子序列为 [2,3] ,其乘积为6. 标签 子数组 领英 动态规划 ...
- Swift-assert使用时机
什么时候使用断言呢? 包含下面的情况时使用断言: 1.整型下标索引作为值传给自定义索引实现的参数时,但下标索引值不能太低也不能太高时,使用断言 2.传值给函数但如果这个传过来的值无效时,函数就不能完成 ...
- 【OpenGL】无法启动此程序,因为计算机中丢失 glut32.dll。尝试重新安装该程序以解决此问题。
运行OpenGL程序的时候报错,如图: 解决方法:把glut32.dll复制到C:\Windows\SysWOW64目录下,而不是像网上教程那样复制到C:\Windows\System32目录下. 原 ...
- my.conf 修改编码
mysql汉字乱码的原因 mysql默认的编码是Latin1是I-8859-1的别名,但Latin1是不支持汉字的,所以要将其改为UTF-8或GBK 1.关闭mysql服务器,这个很重要. 2.通过m ...