首页 > 其他分享 >1058 选择题(字符串处理)

1058 选择题(字符串处理)

时间:2024-04-19 21:56:53浏览次数:21  
标签:cuowu 1058 选择题 st int score 111 110 字符串

字符串处理我的噩梦。
看dalao才写出来的,不过写的太久了,这个时长考试黄花菜都凉了。

#include <bits/stdc++.h>
using namespace std;
const int inf = 0x3f3f3f3f;
#define ll long long
string ans[110];//答案 个数 
int score[110];//正确得分 
int person[110];//每个人的得分情况 
int main(){
	int n,m;
	cin>>n>>m;//人数 题目个数
	for(int i=0;i<m;i++){
		int sc,chos,count;
		cin>>sc>>chos>>count;
		for(int j=0;j<count;j++){
			char xz;
			cin>>xz;
			ans[i]+=xz;
		}
		score[i]=sc;
	} 
	int cuowu[110];
	memset(cuowu,0,sizeof(cuowu));
	int flag = 1;
	for(int i=0;i<n;i++){//人数 
	    int sc=0;//人的得分 
	    scanf("\n");
	    for(int j=0;j<m;j++){//几道题 
	        if(j>0) scanf(" ");
	        int cnt;
	        scanf("(%d",&cnt);
	        string s="";
	        for(int k=0;k<cnt;k++){
	        	char c;
	        	scanf(" %c",&c);
	        	s+=c;
			}
			if(s==ans[j]) sc+=score[j];
			else {
			   cuowu[j]++;//错误增加 
			   flag=0;
	       	}
			scanf(")");
		}
		cout << sc << '\n';
	}
	if(flag) {
	   cout << "Too simple" <<'\n';
	   return 0;
	}
	int index=0,cishu=cuowu[0];
	set<int> st;
	st.insert(index);
	for(int i=1;i<m;i++){
		if(cuowu[i]>cishu){
			st.clear();
			st.insert(i);
			cishu=cuowu[i];
		}else if(cuowu[i]==cishu){
			st.insert(i);
		}
	}
	cout << cishu << " ";
	set<int>::iterator it;
	for(it=st.begin();it!=st.end();){
		cout << *it + 1;
		if(++it!=st.end()){
			cout << " ";
		}
	}
	return 0;
}

大佬代码:

#include<iostream>
using namespace std;

int score[111] = {0},grade[1010] = {0},wrongCnt[111] = {0};
string Right[111];
int main() {
    int n,m,total;
    scanf("%d%d",&n,&m);
    for(int i = 1; i <= m; ++i) {
        scanf("%d %d ",&score[i],&total);
        getline(cin,Right[i]);
    }
    for(int i = 1; i <= n; ++i) { //n 个学生
        for(int j = 1; j <= m; ++j) {// 当前学生做m个题目
            while(getchar() != '(');//技巧,跳过所有非 ‘(’字符 
            string option;
            char c;
            while(scanf("%c",&c)) {//option存放(...)中的...字符
                if(c == ')') break;//技巧,遇到 ‘)’字符 ,结束死循环 
                option += c;
            }
            if(option == Right[j])//答对 
                grade[i] += score[j];
            else
                wrongCnt[j]++;
        }
    }
    for(int i = 1; i <= n; ++i)
        printf("%d\n",grade[i]);
    int MAX = 0;
    for(int i = 1; i <= m; ++i) {
        if(MAX < wrongCnt[i])
            MAX = wrongCnt[i];
    }
    if(MAX == 0) printf("Too simple");
    else {
        printf("%d",MAX);
        for(int i = 1; i <= m; ++i) {
            if(MAX == wrongCnt[i])
                printf(" %d",i);
        }
    }
    return 0;

标签:cuowu,1058,选择题,st,int,score,111,110,字符串
From: https://www.cnblogs.com/chengyiyuki/p/18146834

相关文章

  • C++字符串常见混淆方案
    正文将字符串转换成等效int数组std::vector<uint32_t>convert_wstring_to_int_array(constwchar_t*str){std::vector<uint32_t>vec;for(size_ti=0;i<wcslen(str);i+=2){uint32_tval=(uint32_t)str[i]<<16&0xffff0000;i......
  • 十六进制字符串每隔32个字母换行显示
     //每32个字节换行打印publicstaticvoidformatPrint(StringhexStr){intno=0;intlength=hexStr.length();for(inti=0;i<length;i++){if((i+1)%32==0){Strings=twoSpaceTwo(hexStr.substring(i-31,i+1));System.out.println(......
  • 【学习笔记】 字符串基础 : 后缀自动机(基础篇)
    本文只介绍关于\(\mathbf{SAM}\)的基本概念与实现后缀自动机是什么类似\(\text{AC}\)自动机,后缀自动机(\(\text{SAM}\))是能且只能接收字符串所有后缀的自动机我们首先要知道,\(\mathbf{SAM}\)是只能接收所有后缀的结构而不是只能维护后缀的结构事实上\(\mathbf{SAM}\)......
  • 判断一个字符串是否为另一个字符串的子串
    1、string类函数findC++的string类提供了字符串中查找另一个字符串的函数find。其重载形式为:string::size_typestring::find(string&);功能为在string对象中,查找参数string类型的字符串是否存在,如果存在,返回起始位置。不存在则返回string::npos。#include<iostream>#includ......
  • 判断字符串是否包含数组中的元素
    php怎样简易地判断字符串是否包含数组中的元素呢,折腾了一晌未果。从php内置的字符串函数和数组函数,没见到直接的方法,只有自行循环判断。方法一:循环数组,使用strstr函数判断其中元素是否被包含在字符串中,有则退出循环,输出true,没则循环到底,输出false。亮点是代码直观,遇到true就退出......
  • JAVA基础-流程控制、字符串
    一、java基础1、java主类结构packagecom.study.again001;包名publicclasshelloword{类名staticStrings1="1";静态成员变量publicstaticvoidmain(String[]args){main方法Strings2="2";局部变量System.out.println(s1......
  • pwn知识——(x86)格式化字符串中利用fini_array及拓展
    导言这类题型还是我复现CISCN_2019_西南的PWN1的时候遇见的,算是涨知识了前置知识我们都知道,在程序中最先调用的不是main,也不是__libc_start_main,而是_start,我们来看一下再x86下的_start.text:08048420public_start.text:08048420_start......
  • shell vi 文本替换字符串
     在shell中使用vi或vim编辑器进行文本替换可以通过以下步骤完成:打开终端。使用vi或vim命令打开目标文件,例如:vifilename.txt。进入替换模式,可以通过按:%s/old_string/new_string/g进行全局替换。 : 进入命令模式。% 表示文件中的所有行。......
  • 新手大白话 UUCTF 2022 新生赛ezpop 字符串逃逸
    今天做个字符串逃逸的题目,这个题还挺不错的,不多bb直接看源码。点击查看代码<?php//flaginflag.phperror_reporting(0);classUUCTF{public$name,$key,$basedata,$ob;function__construct($str){$this->name=$str;}function__wakeup(){......
  • python3字符串格式化用format()好还是 % 表达式好
    左手编程,右手年华。大家好,我是一点,关注我,带你走入编程的世界。公众号:一点sir,关注领取python编程资料在Python中,使用format()方法是更推荐的方式来进行字符串格式化,特别是在Python3中。虽然%表达式仍然可以在Python中使用,但已经不推荐使用了,新的项目中能不用就不用,谁知道哪......