• HDU 4329 MAP(stringstream的用法)


      这个题目有点绕,但是按着他的意思写不难模拟出来。本来是一场学弟们的训练赛,我这个学长在赛场上却WA了四次都没过,三条黑线就一直在我的脑袋上挂着。。。

      赛后开始找原因,后来发现题目看错了,1/R中的R是指原先URL的个数。

      改过来发现还是过不了,想到了自己的输入处理可能是有问题的,既然自己模拟容易出错,那就使用了stringstream,自动提取单词,成功AC。

      意外的发现stringstream的功能十分强大,但是因为速度比较慢,用处比较少,所以也不怎么用,这个哥们写的不错,感兴趣可以去看看哦。

      具体注释在代码里~

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<map>
    #include<sstream>
    using namespace std;
    #define N 110
    #define M 10005
    int rel[N];
    char a[M];
    map<string,int>mp[N];
    void Init(int k)
    {
        istringstream str(a);///istringstream是一个类,str为它的一个对象
        ///这里使用构造函数接受一个字符串
        string tmp;
        int tot = 0;
        str >> tmp; ///提取一个单词,空格用于区分单词,不可能被提取到单词中
        ///其实如果自己模拟出错,应该就是把空格提到了单词中
        mp[k].clear();
        while(str >> tmp){///怎么样,是不是很短,很方便呢~
            tot++;
            mp[k][tmp] = 1;
        }
        rel[k] = tot;
    }
    double Get_AveP(int k)
    {
        istringstream str(a);
        string tmp;
        int i = 0,R = 0;
        double res = 0;
        str >> tmp;
        while(str >> tmp){
            ++i;
            if(mp[k][tmp] == 1)
            {
                R++;
                res += R*1.0/i;
            }
        }
        return res/rel[k];
    }
    int main()
    {
    //    freopen("G.in.cpp","r",stdin);
        int t,n,ca=0;
        scanf("%d",&t);
        while(t--)
        {
            scanf("%d",&n);
            getchar();
            for(int i = 1; i <= n; i++)
            {
                gets(a);
                Init(i);
            }
            double MAP = 0.0;
            for(int i = 1; i <= n; i++)
            {
                gets(a);
                MAP += Get_AveP(i);
            }
            MAP /= n;
            printf("Case #%d: %.6lf
    ",++ca,MAP);
        }
        return 0;
    }
  • 相关阅读:
    Mysql 交集、并集、差集、行转列、列转行
    Scala隐式转换
    ES添加elasticsearch-sql插件
    ES添加elasticsearch-analysis-ik分词器
    ES添加Head插件
    ES操作详解
    ES集群安装
    Scala上下界以及比较器Ordered
    Java对象比较
    解方程(来自学长的“遗产”)
  • 原文地址:https://www.cnblogs.com/jifahu/p/5929650.html
Copyright © 2020-2023  润新知