• 洛谷P2786 英语1(eng1)- 英语作文


    题目背景

    蒟蒻HansBug在英语考场上,挠了无数次的头,可脑子里还是一片空白。

    题目描述

    眼下出现在HansBug蒟蒻面前的是一篇英语作文,然而智商捉急的HansBug已经草草写完了,此时 他发现离考试结束还有40min,于是他打算估计一下这篇共有M个单词的英语作文的含金量如何。众所周知的是,在中高考英语作文中使用高级词汇可以有效提 高文章的含金量,从而获得更好的分数。已知蒟蒻HansBug知道N个高级词汇,该词汇为Ai(词汇长度为Li,包含数字、大小写字母),该高级词汇的含 金量为Bi,则该高级词汇每出现一次便可增加Bi的含金量。可是他脑细胞和RP已经消耗殆尽,所以这个伟大的任务就交给你啦!

    输入输出格式

    输入格式:

    第一行包含两个整数N和P,N表示HansBug共知道的高级词汇个数,P为模数

    第2-N+1行,每行包含一个单词Ai(长度为Li)和一个整数Bi,其中Bi表示该单词的含金量(0<Bi<=100000)

    接下来直到输入结束的若干行为一篇英语作文,其中包含共计M个单词,以及若干的分隔符(分隔符包含且仅包含" "、","、"."、"!"、"?")

    输出格式:

    一行,包含一个整数,为该文章的总含金量对P的模。

    输入输出样例

    输入样例#1:
    5 99
    hansbug 1
    kkksc03 2
    yyy 3
    absi2011 4
    lzn 100
    hansbug is a juruo!but absi2011 not.!?!
    one day absi2011 laughed at yyy and hansbug.
    then kkksc03 and lzn blamed him for that.
    
    输出样例#1:
    16
    输入样例#2:
    5 99
    yyyy 1
    kkksc03 2
    yyy 3
    absi2011 4
    lzn 100
    yyyy is a juruo!but absi2011 not.!?!
    one day absi2011 laughed at yyy and yyyy.
    then kkksc03 and lzn blamed him for that.
    
    输出样例#2:
    16

    说明

    样例1中,共计出现了2次hansbug、2次absi2011、1次yyy、1次kkksc03、1次lzn,所以总含金量为1*2+2*4+3*1+4*1+100*1=115,对99取模就是16。

    样例2中,和样例1基本一样,值得注意的是整体的yyyy不可以被认为是yyy出现2次,请注意这是一篇英语作文,一切以单词为最小单位。

      这题又是水题,主要可以体会一下map的方便,还让我回忆下c语言自带的几个有用的字符处理函数。

    代码如下:

     1 #include <bits/stdc++.h>
     2 
     3 using namespace std;
     4 int n,p,ans;
     5 string a;
     6 char t;
     7 map<string,int>s;//用map来存储对应单词和它的含金量
     8 int main()
     9 {
    10     //freopen("de.txt","r",stdin);
    11     ans=0;
    12     scanf("%d%d",&n,&p);
    13     for (int i=0;i<n;++i)
    14     {
    15         cin>>a;
    16         scanf("%d",&s[a]);
    17     }
    18     getchar();
    19     a="";
    20     while (scanf("%c",&t)==1)
    21     {
    22         if (!isalnum(t))//这个函数的意思是该字符是否为数字或字母
    23         {
    24 
    25             //cout<<a<<endl;
    26             //printf("%d
    ",s[a]);
    27             ans=(ans+s[a])%p;
    28             a="";
    29         }
    30         else
    31         a+=t;
    32     }
    33     printf("%d
    ",ans);
    34     return 0;
    35 }
    36 
    37 //isalpha(ch),该字符是否为字母
    38 //isdigit(ch),该字符是否为数字
  • 相关阅读:
    SVN日常使用
    zabbix安装
    shell日常脚本(centos6)
    mysql故障记录
    PHP商品秒杀功能实现思路分析
    Redis
    PHP 实现实时通信一般有两种方式
    FTP DNS SMTP POP3 HTTP HTTPS DHCP DNS SNMP Telnet 端口号
    TCP/UDP/HTTP的区别和联系
    TCP 和 UDP 的区别
  • 原文地址:https://www.cnblogs.com/agenthtb/p/5846303.html
Copyright © 2020-2023  润新知