题目链接:点击查看

题目大意:给出规则,模拟批改多选题的过程,期间记录一下每道题有多少个人错,注意,在这个题目中的多选题,只有全部答案完全正确才能得到分数,其他情况分数均为0分计算

题目分析:又是一道比较好玩的模拟题,难度为简单偏上吧,最近本来是在刷pat乙级题目的,结果发现迷上这种简单模拟了,感觉做着真的挺好玩的,这个题目我感觉主要是输入输出不太好处理吧,我是首先用一个map记录一下每个题目的正确答案,再就是用stringstream配合string类很方便的解决下面学生答案的输入以及处理,总的来说感觉代码写的还是蛮不错的,挂上来看一下吧:

对了,本来是想将每个题的答案整合成一个string类然后直接扔进map里的,后来怕题目的答案会乱序给出,就排了一下序,事后发现其实并不需要排序,说明这个题目还是听良心的,没出那种乱七八糟的数据故意坑人

代码:

#include<iostream>
#include<cstdlib>
#include<string>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<climits>
#include<cmath>
#include<cctype>
#include<stack>
#include<queue>
#include<list>
#include<vector>
#include<set>
#include<map>
#include<sstream>
#include<unordered_map>
using namespace std;typedef long long LL;const int inf=0x3f3f3f3f;const int N=110;unordered_map<string,int>mp[N];//正确答案 格式:mp[题号][答案]=分数int cnt[N]={0};//错题 格式:cnt[题号]=个数int ans[N*10]={0};//分数 格式:ans[学生序号]=分数int main()
{
//  freopen("input.txt","r",stdin);int n,m;scanf("%d%d",&n,&m);for(int i=1;i<=m;i++){int score;int num;scanf("%d%*d%d",&score,&num);char ch[5];string s;for(int j=0;j<num;j++){scanf("%s",ch);s+=ch[0];}mp[i][s]=score;}getchar();//注意!!!在cin或scanf与getline或gets连用时,已经记住要用getchar吃掉回车for(int i=1;i<=n;i++){string s;getline(cin,s);//直接读一行,即当前学生的所有答案for(int i=0;i<s.size();i++)//去掉所有的括号if(s[i]=='('||s[i]==')')s.erase(s.begin()+i);stringstream ss(s);int num;char ch[5];int pos=1;//题号 while(ss>>num){string res;while(num--){ss>>ch;res+=ch[0];}if(mp[pos][res])ans[i]+=mp[pos][res];elsecnt[pos]++;pos++;}}for(int i=1;i<=n;i++)printf("%d\n",ans[i]);int mmax=0;for(int i=1;i<=m;i++)mmax=max(mmax,cnt[i]);if(mmax==0)cout<<"Too simple"<<endl;else{vector<int>ans;for(int i=1;i<=m;i++)if(mmax==cnt[i])ans.push_back(i);printf("%d",mmax);for(int i=0;i<ans.size();i++)printf(" %d",ans[i]);printf("\n");}return 0;
}

PAT (Basic Level) 1058 选择题(模拟)相关推荐

  1. PAT (Basic Level) 1055 集体照(模拟,好题)

    题目链接:点击查看 题目大意:给出N个人的姓名和身高,再给出一共需要站K排,现在需要按照规则站队,求最后的队列分布: 每排人数为 N/K(向下取整),多出来的人全部站在最后一排: 后排所有人的个子都不 ...

  2. PAT (Basic Level) Practice (中文)1058 选择题 (20 分)

    PAT (Basic Level) Practice (中文)1058 选择题 (20 分) 文章目录 PAT (Basic Level) Practice (中文)1058 选择题 (20 分) 题 ...

  3. PAT (Basic Level) Practise (中文)-1025. 反转链表 (25)

    PAT (Basic Level) Practise (中文)-1025. 反转链表 (25)   http://www.patest.cn/contests/pat-b-practise/1025 ...

  4. PAT (Basic Level) Practise (中文)-1034. 有理数四则运算(20)

    PAT (Basic Level) Practise (中文)-1034. 有理数四则运算(20)  http://www.patest.cn/contests/pat-b-practise/1034 ...

  5. 【题解】PAT (Basic Level) Practice (中文)

    互联网行业的小白,写博客的目的是为了记录自己的学习过程.对自己学习中所犯的错误做一个总结.由于水平有限,博客中难免会有一些错误出现,有纰漏之处恳请各位大佬不吝赐教! PAT Basic Level P ...

  6. PAT basic level 答案+解题思路+难点 (个人刷题记录)

    PAT basic level 使用语言:C++ 仅记录一下自己刷题过程的心得体会 永远保持更新(期待更好的解法) 可能有些题没有(那就是我还没做出来,以后会更的!) 欢迎大家与我讨论交流√ 题目序列 ...

  7. 可优化-PAT (Basic Level) Practice Python解法 1026 程序运行时间(时间进位/四舍五入Tobe解决)

    可优化-PAT (Basic Level) Practice Python解法 1026 程序运行时间(时间进位/四舍五入Tobe解决) c1, c2 = map(int,input().split( ...

  8. 1001 害死人不偿命的(3n+1)猜想 (15分) PAT (Basic Level) Practice (中文)C语言版

    PAT (Basic Level) Practice (中文) 1001 害死人不偿命的(3n+1)猜想 (15分) 卡拉兹(Callatz)猜想: 对任何一个正整数 n,如果它是偶数,那么把它砍掉一 ...

  9. 卡拉兹(Callatz)猜想,PAT(Basic Level) Practise NO.1001

    PAT(Basic Level) Practise NO.1001 卡拉兹(Callatz)猜想: 对任何一个自然数n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把(3n+1)砍掉一半. 这样 ...

最新文章

  1. ASP.NET中Web DataGrid的使用指南-转
  2. vue-cli脚手架项目构成
  3. TCP/IP协议(三次握手)
  4. java自定义jsp标签_Javaweb自定义jsp标签
  5. 海思108M 4D1模式含义
  6. 大一计算机论文_大一计算机论文发表.doc
  7. @Transactional注解导致 多数据源@DS无效 的解决方案
  8. SO_LINGER和优雅关闭连接
  9. 动网论坛“数据库连接出错”处理记-间歇博客
  10. ipc$与默认共享及ipc$连接失败的原因
  11. git stash '储藏'当前工作状态
  12. VMware中共享文件夹功能的使用(ubuntu)
  13. 阿里云国际站实名认证上传材料填写样例(域名持有者为组织)
  14. sudoku me_Sudoku,一个完整的MFC应用程序。 第7部分
  15. js、css 实现table表头固定
  16. python3 enumerate函数_python3 内置函数enumerate
  17. UOJ 265 NOIP 2016 DAY2 T3 浅谈预处理状态压缩动态规划
  18. “21天好习惯“ 第十七期 — 17之黑马面面移动端布局(三)
  19. 18软工实践 - 第七次作业 - 需求分析报告
  20. python 解析jsp_JSP语法详解二 - 博学之,审问之,慎思之,明辨之,笃行之 - ITeye博客...

热门文章

  1. RabbitMQ Topic交换机(生产者)
  2. leader选举的源码分析-QuorumPeer.start
  3. FactroyBean方式配置bean
  4. 实现根据id查询房源数据的GraphQL服务
  5. SpringMVC拦截器之拦截器接口方法演示
  6. 初始化方法-创建对象时自动调用初始化方法
  7. Oracle数据库的安装和配置
  8. c语言前后指针怎么用,详解一下——C语言指针该怎么用
  9. 【报错笔记】在maven项目中jsp页面使用window.location.href给controller传参时参数过长所以路径无法跳转至controller
  10. 关于myeclipse buildpath的jar包不能复制到tomcat lib下的问题