acm1217教训

能用容器去做的用容器做,尽量少用数组,即使自己明确其数量的上届;

#include<iostream>
#include<cstring>
#include<map>//后来我用了一个map容器才能通过,如果自己建立数组就是不过,不知道到底哪里超出了;它明明说的是少于30个,现在做题题意也欺骗人了;
using namespace std;
const int N=132;
int ok;
map<string,int>my_map;
void nameinput(int n)
{
    string name;
    for(int i=1;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=1;i<=n;i++)
    for(int j=1;j<=n;j++)
    money[i][j]=(i==j)?1:0;
    string name1,name2;
    double rate;
    for(int i=1;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=1;k<=n;k++)
for(int i=1;i<=n;i++)
for(int j=1;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=1;i<=n;i++)
if(money[i][i]>1)//求回路中两点距离;
{
    ok=1;break;
}
}
int main()
{
    int n,m;
        int count=1;
    while(cin>>n&&n)
    {
        nameinput(n);
        cin>>m;
        ok=0;
        Link(n,m);
        deal(n);
        if(ok==1)cout<<"Case "<<count<<": Yes\n";
        else cout<<"Case "<<count<<": No\n";
        count++;
    }
    return 0;
}
 

下面是超时代码:

 1 #include<iostream>
 2 #include<cstring>
 3 #include<map>
 4 using namespace std;
 5 const int N=132;
 6 int ok;
 7 int vis[N];
 8 map<string,int>my_map;
 9 string Name[N];
10 void nameinput(int n)
11 {
12     string name;
13     for(int i=1;i<=n;i++)
14     {
15         cin>>name;
16         my_map[name]=i;
17     }
18 }
19 double money[N][N];
20 void Link(int n,int m)
21 {
22     for(int i=1;i<=n;i++)
23     for(int j=1;j<=n;j++)
24     money[i][j]=(i==j)?1:0;
25     string name1,name2;
26     double rate;
27     for(int i=1;i<=m;i++)
28     {
29         cin>>name1>>rate>>name2;
30         money[my_map[name1]][my_map[name2]]=rate;
31     }
32     my_map.clear();
33 }
34 void process(int n,int start,int sub,double result)
35 {
36     if(sub==start)
37     {
38         if(result>1)ok=1;
39         return;
40     }
41     double re=result;
42     if(ok==0)
43     for(int i=1;i<=n;i++)
44     {
45         if(money[sub][i]!=-1&&!vis[i])
46         {
47             vis[i]=1;
48             re=result*money[sub][i];
49             process(n,start,i,re);
50             vis[i]=0;
51         }
52         if(ok==1)return;
53     }
54 }
55 int main()
56 {
57     int n,m;
58         int count=1;
59     while(cin>>n&&n)
60     {
61         memset(vis,0,sizeof(vis));
62         nameinput(n);
63         cin>>m;
64         ok=0;
65         Link(n,m);
66         for(int i=1;i<=n;i++)
67         {
68             for(int j=1;j<=n;j++)
69             if(money[i][j]!=-1)
70             {
71                 vis[j]=1;
72                 process(n,i,j,1.0*money[i][j]);
73                 vis[j]=0;
74             }
75         }
76         if(ok==1)cout<<"Case "<<count<<": Yes\n";
77         else cout<<"Case "<<count<<": No\n";
78         count++;
79     }
80     return 0;
81 }
82  

acm1217教训

时间: 2024-11-09 00:41:57

acm1217教训的相关文章

资源和政策堆出来的联通还是衰落了,教训深刻

仅凭资源和政策是难以扶起一个有竞争力大企业的,内因才是主要的,有时候资源和政策还会成为绊脚石,让企业失去自省和奋发的动力. 最近三大运营商相继发布了2016年年度业绩报告,中国移动营收为人民币7084亿元,净利润1087亿元,同比增长0.2%:中国电信营收3523亿元,净利润180亿元,同比下降10.2%.去除出售铁塔一次性收入后净利润同比增长11.7%:中国联通营收为2742亿元,净利润6.25亿元,同比下降94.1%. 从财务上看,中国联通一年的净利润还顶不上中国移动三天的净利润,也顶不上中

Linux误删文件教训,吃一堑长一智

前几天在做php期末项目中,这个期末项目做了一个月,最后再添加一个清除缓存的功能就可以完成了,可是悲剧就是在最后发送,写了一段清理缓存的代码,因为还是学生在学习阶段,代码不完善,而且没有经过测试(教训一),直接放在项目里执行,导致写的30几个php文件全部被自己删了,而且没有备份(教训二). 最恨的是,误删文件之后我还往这个文件夹里写入了一些东西并且还把extundelete装到了这个文件夹下(教训三),导致文件只恢复少量一部分,大部分因为被新写入的数据彻底覆盖. 教训一:测试.在写功能的过程中

dbCreate 的重要性,血的教训

DataSource.groovy文件中的dbCreate属性十分重要,因为它可以用来指定是否自动根据GORM类来创建数据库表.其可选值为: create-drop - 当Grails运行时删除并重新建立数据库 create - 如果数据库不存在则创建数据库,存在则不作任何修改 update - 如果数据库不存在则创建数据库,存在则进行修改 开发环境(development)下dbCreate属性默认设置为create-drop: dataSource { dbCreate = "create-

一个企业IT部署云端环境的经验教训

随着云计算2.0时代的到来,以及"互联网+"行动计划的深入发展,传统企业通过云端环境降低运营成本.共享数据资源.实现合作共赢,已成为一种不可阻挡的生态化发展趋势.然而,云计算时代全新的IT环境,对传统的IT基础架构和IT运营环境产生了巨大的冲击和颠覆,传统企业如何基于自身的资源环境搭建基于云计算基础之上的IT环境已成为众多企业技术的关注焦点. 虽然,云计算已经进入了高速发展时期,红云.青云.蓝汛云等众多优质的云服务及云解决方案提供商为企业技术搭建IT架构.部署云端环境提供了更多的选择,

沉痛的教训

非常感谢博友们的关心和支持,经过这几天的自我调解和大家的慰藉,状态有所恢复.非常感谢大家,再次表达谢意! 我们分手了 我们分手了,对,没错,虽然一直不愿相信,也不愿承认,但确已成为不争的事实. 这是我们分手的第一周末2017-07-07:21:18:37,不知道你在哪里,更不知道你在干什么.你还记得吗,之前的每个周末都是我陪你一起度过,周五晚上我通常回去接你下班,然后相约去看电影,吃特色小吃,逛街,往往都是high到很晚才舍得回家,虽然上了一天班,但每每到今天都乐此不疲. 分手了,我已不在上班期

开源项目 RethinkDB 关闭,创始人总结失败教训(市场定位错误)

当我们宣布RethinkDB关闭时,我答应写一个调查分析.我花了一些时间来整理所得的教训和经验,现在可以清楚地写出来. 在HN讨论贴中,人们提出了许多关于为什么RethinkDB失败的原因,从莫名的人性和聪明的MongoDB营销人员:到没有建立一个有经验的上市团队:再到缺乏支持超过64-bit float 的数字类型……我将这些意见集中到这里. 其中一些原因确实是真的,但它们是症状而不是原因.例如,说我们未能赚钱的,它并没有说明我们失败的原因. 事后看来,有两个重要的原因导致了我们的失败 —— 

前端调试的一些经验教训

我以前一直没有写程序调试的日志信息代码(原因:1.懒.2.不会拼写console.log().3.依赖debug断点),所以导致我开发效率很低,一直认为能一步到位,结果就栽跟头,影响了开发进度. 因此,我要吸取这次教训,以后开发一定要写日志代码,不能过份依赖debug断点调试. 需要写日志的地方如下:      1.发送数据内容(参数).           建议json数据最好能格式化输出      var str = JSON.stringify(obj, null, 2);//第三个参数是

代码的编写之惨烈的教训一

代码的力量是很强大的,人的思想借着代码改变了这个世界,信息化社会. 今天去工厂,就我一个开发,接待我们的人是个项目经理,看到我时多了点眼神关注,我也感觉挺有味的,毕竟我是搞软件的.是个码农... 好大一个工厂,进去要检查,进那个银光闪闪的通道,一篇铝状加上吹风,要不是后面有个人都不敢进去,好多人在里面流水线工作,听保安说也有好多人参观. 绕了好大一圈,终于到MMI软件测试的地方,每一项步骤都有一个人去点,我点完了成功就给下一个人,不成功就在手机上面的膜纸上记录下,放在上面的格子上. 工厂反馈的情

读书笔记 - 《公司的力量》《教训》

<公司的力量>:地摊上5块钱淘来的旧书,看完之后觉得也就只值这个价,只有里面印刷的彩色照片值得一看了.这是央视纪录片的配套书,节目立意看似很宏大,但出了废话之外就是用历史小故事玩煽情,对我来说几乎没有任何信息量.差评X2<教训>网上买书的时候和腾讯科技频道出的其它两本书一起买下的.说实话,一百多页定价39也太过分了,第一眼看到薄薄的书我相当吃惊.书里分八个维度讲了最近几年18个失败创业公司的经验教训,算是有点信息,但每个案例又分析的很浅,对于经常关注虎嗅之类信息渠道的我来说,收获不