当前位置: 首页 > news >正文

map我觉得非水题-hdu-4329

这个题目真是考验我的英语能力,我弄了2小时才弄懂题目的意思,后来打代码,根据别人的思维打的,因为一开始看不懂题目,就死抠,查了好久没一个负责的,题解一句话:题目怎么说我就怎么打.这题解未免太机智了,我要知道题目意思,还看你作甚。写了好多注释,有一点还是很模糊,getchar()我觉得没啥用,但是不打它就过不了。还有那个排序的东西,为啥需要它呢,我也不是很明了,学长啊,求大腿,实在不行,小腿我也不嫌弃。帮我理解一下题目了。

# include <iostream>
# include <cstring>
# include <cstdio>
# include <cstdlib>
# include <map>
# include <iomanip>
# include <string>
using namespace std;
struct node
{
   string str1;//为了保存关键搜索,如:Banana
   string str2;//保存每个搜索后面的URL
   bool operator<(const node &a) const//排序操作,对于搜索内容相同的排它的URL顺序,否则排搜索内容
   {
       if(a.str1==str1)
       {
           return a.str2>str2;
       }
       else
           return a.str1>str1;
   }
};
char ch[10010];//存读入的一行字符串
char *word;//临时存查询词
char *p;//临时保存URL
int R[105];//保存每个搜索词后URL的个数
int main()
{
    int t,T,i,num,n,k;
    double Pr,sum;
    node temp;//作用很大。
    cin>>T;
    getchar();
    for(t=1;t<=T;t++)
    {
        cin>>n;
        getchar();
        map<node,int> mp;//申明一个map
        map<node,int>::iterator it;//map的迭代器
        for(i=1;i<=n;i++)
        {
            cin.getline(ch,10010);//读入一行
            word=strtok(ch," ");//保存第一个分隔符””前的单词
            temp.str1=word;//将搜索词保存在节点str1中
            k=0;
            p=strtok(NULL," ");//读入此搜索词后的第一个URL
            while(p)//循环读入,以“”分隔符截取
            {
                temp.str2=p;//保存在此str2中
                k++;//计算个数
                mp[temp]=k;
                p=strtok(NULL," ");
            }
            R[i]=k;//记录每个搜索词相关的URL数目
        }
        sum=0;
        for(i=1;i<=n;i++)
        {
            cin.getline(ch,10010);//继续读下面n行
            word=strtok(ch," ");
            temp.str1=word;
            k=0;
            Pr=0;
            num=0;
            p=strtok(NULL," ");
            while(p)
            {
                k++;//记录现在共有的URL数目
                temp.str2=p;
                it=mp.find(temp);
                if(it!=mp.end())
                {
                    num++;//记录相同的个数
                    Pr=Pr+1.0*num/k;//计算pr
                    mp.erase(it);
                }
                p=strtok(NULL," ");
            }
            sum=sum+Pr/R[i];
        }
        cout<<"Case #"<<t<<": "<<fixed<<setprecision(6)<<sum/n<<endl;
    }
}

    
  

 

转载于:https://www.cnblogs.com/hhhhhhhhhhhhhhhhhhhhhhhhhhh/p/3881351.html

相关文章:

  • php一些不是很常用的操作mysql的函数
  • 安沃广告问题
  • vSphere 6.0 新功能介绍 系列 前言
  • PF_RING 总结
  • Rational Software Architect V8.5.1安装
  • Repeater 双向排序
  • 时间它会说话
  • C++ | class size
  • XCode详解及iOSApp上传
  • 尺度空间(Scale space)理论
  • Firefly 配置说明
  • httpd详解
  • 一例用方错误的女子咳则遗尿案
  • Linux Epoll介绍和程序实例
  • [转]Notepad++快捷键
  • [译]如何构建服务器端web组件,为何要构建?
  • 《剑指offer》分解让复杂问题更简单
  • 0x05 Python数据分析,Anaconda八斩刀
  • HashMap ConcurrentHashMap
  • Mysql数据库的条件查询语句
  • Netty源码解析1-Buffer
  • Spring-boot 启动时碰到的错误
  • VuePress 静态网站生成
  • 力扣(LeetCode)965
  • 猫头鹰的深夜翻译:JDK9 NotNullOrElse方法
  • 面试总结JavaScript篇
  • 前端面试之CSS3新特性
  • 浅谈Golang中select的用法
  • 浅谈JavaScript的面向对象和它的封装、继承、多态
  • 全栈开发——Linux
  • 提升用户体验的利器——使用Vue-Occupy实现占位效果
  • 线性表及其算法(java实现)
  • 一加3T解锁OEM、刷入TWRP、第三方ROM以及ROOT
  •  一套莫尔斯电报听写、翻译系统
  • 原生Ajax
  • 阿里云IoT边缘计算助力企业零改造实现远程运维 ...
  • 你学不懂C语言,是因为不懂编写C程序的7个步骤 ...
  • ​ArcGIS Pro 如何批量删除字段
  • ​一些不规范的GTID使用场景
  • #Java第九次作业--输入输出流和文件操作
  • (09)Hive——CTE 公共表达式
  • (4)STL算法之比较
  • (Redis使用系列) Springboot 整合Redisson 实现分布式锁 七
  • (附源码)ssm跨平台教学系统 毕业设计 280843
  • (离散数学)逻辑连接词
  • (七)Knockout 创建自定义绑定
  • (转)setTimeout 和 setInterval 的区别
  • (转)淘淘商城系列——使用Spring来管理Redis单机版和集群版
  • .apk文件,IIS不支持下载解决
  • .NET core 自定义过滤器 Filter 实现webapi RestFul 统一接口数据返回格式
  • .NET CORE使用Redis分布式锁续命(续期)问题
  • .Net IE10 _doPostBack 未定义
  • .net 逐行读取大文本文件_如何使用 Java 灵活读取 Excel 内容 ?
  • .Net6使用WebSocket与前端进行通信
  • //解决validator验证插件多个name相同只验证第一的问题