C题:map的运用

题意:每人写下若干个长度为3的字符串,若该字符串只有一人写下,则此人+3分;若有两人写下,则两人各自+1分;若三人均写下,则都不加分。

解题思路:通过键值对map对每人每个输入的字符串进行++,最后该字符串所对应的值即为被输入的次数。

AC代码:

void solve()
{map<string,int> mp;//定义一个键值对mapstring str[3][1010];int n; cin >> n;for(int i=0; i<3; i++){for(int j=0; j<n; j++){cin >> str[i][j];mp[str[i][j]]++;//记录每个字符串的输入次数}   }for(int i=0; i<3; i++){int cnt = 0;for(int j=0; j<n; j++){if(mp[str[i][j]] == 1)cnt+=3;else if(mp[str[i][j]] == 2)cnt+=1;}cout << cnt << " ";}cout << endl;
}

D题:贪心算法

题意:输入一个字符串,当读取到L时,记录此位置左边元素的个数;当读取到R时,记录此位置右边的元素个数,最后输出总观测元素个数。现允许改变字符,即L可变为R,R可变为L,但改变次数不超过字符串长度。要求每次改变尽可能大的总观测元素数量,并输出每次改变后的结果。

解题思路:首先算出初始状态下的总观测元素。然后记录每一个位置改变后与改变前所观测的总元素个数之差,并将该差值排序。最后,在原来总观测元素的基础上依次加上差值再输出;若差值小于0,则不加该差值,直接输出。

AC代码:

void()
{int n; cin >> n;string str; cin >> str;vector<int> val;//定义一个记录差值的容器long long int value = 0, m;for(int i=0; i<n; i++){if (str[i]=='L'){value+=i;//记录初始总观测元素m = n-1-2*i;//计算差值val.push_back(m);}else{value+=n-1-i;//记录初始总观测元素m = 2*i-n+1;//计算差值val.push_back(m);} }sort(val.begin(),val.end());for(int i=n-1; i>=0; i--){if (val[i]>0)value+=val[i];//依次加上差值cout << value << " ";}cout << endl;}
}

G题

题意:将给定的序列分割成若干个和相等的子序列(不能改变原有顺序),并输出最长子序列的长度。若存在多种分法,则输出所有最长子序列长度中最小的值。

解题思路:从序列的第一个元素开始,判断是否可以以该值将原序列分割为若干个和相等的子序列。若可以,则记录该分法中,最长子序列的大小;若不可以,则按前两项元素的和将整个序列进行划分。循环此操作,至无法继续分割原序列(即将所有项的和作为划分标准时结束循环)。期间,若遇到有多中分割情况时,应将两种情况的最长划分进行比较,并记录较小的那个长度。

个人感想:此题有思路不难,难点在于如何去正确的判断是否可以以该值进行划分,并如何记录每个子序列的长度。

AC代码:

void solve()
{int sum1 = 0, sum2 = 0;int len = 0, k = 0;int n; cin >> n;vector<int> a;int ans = n;for (int i=0; i<n; i++){int m; cin >> m;a.push_back(m);}for(int i=0; i<n; i++){sum1 += a[i]; sum2 = 0;//sum1记录前i+1项的和,并以该值为划分依据,sum2记录之后每一个子序列的和len = i+1; k = i;//len记录前一子序列的长度,k记录后一序列的起始位置,以便计算后一序列的长度for(int j=i+1; j<n; j++){sum2 += a[j];//计算后一序列的和if(sum1==sum2){len = max(len,j-k);//判断前后两序列长度大小,并将大的赋给lenk = j;//重新记录下一序列的起始位置sum2 = 0;//将下一序列的和归零以便进行求和计算}if(sum2>sum1)break;} if(sum2==0) ans = min(ans,len);//判断是否可以以该sum1的值进行划分}cout << ans << endl;
}

I题:

题意:分解给定序列中的元素,使得新序列中的最大元素值不超过最小元素值的两倍。输出分解次数。

解题思路:先记录给定序列的最小值min ,然后对之后的元素进行判断。若小于min2-1则不需要进分解;若大于min2-1则需要进行分解。接下来,分析一下如何计算分解次数。将待分解的数除以min2-1,若无法整除,则分解次数为待分解的数除以min2-1的结果;若可以整除,则在此基础上-1(具体数学分析请读者自己思考)。

AC代码:

void solve()
{int n; cin >> n;vector<int> a;int cnt = 0;for (int i=0; i<n; i++){int m; cin >> m;a.push_back(m);}int min = a[0];//记录最小值for (int i=1; i<n; i++){if(a[i]>=2*min){//判断大小cnt += a[i]/(min*2-1);//记录分解次数if(a[i]%(min*2-1)==0)cnt--;}}cout << cnt << endl;
}

2022海风软件部培训第二套思维题相关推荐

  1. 中国石油大学《大学英语(三)统考》第二套模拟题

    第二套模拟题 单选题 (共25道题) 收起 1.(4.0分) 1.- We are planning an outing. _________ - Sure. A.Where are you goin ...

  2. 天正多条线段长度lisp下载_四年级数学上册基础题过关检测+12套思维题,下载给孩子测试!【有电子版】...

    张老师 - 4年级(多品小学教育) 我们每天为大家整理学习资料,搭建了小学题库:www.duopin.cn (电子版过万份)本底部有老师微信,朋友圈每天分享考试资料. 本资料已制作电子版 下载码是:r ...

  3. 基于案例的软件构造教程第二章课后题答案

    这篇文章只提供题号为 奇数 的答案,因为是我们的NT老师要求的 1.名词解释:分解,模块化,逐步求精,软件测试,测试需求,测试设计,测试覆盖,软件调试,缺陷,软件质量,编程风格. 分解:把一个大的.错 ...

  4. 一级计算机框线设置为窄线,计算机等级一级MS Office考题:第二套字处理题

    三.字处理题 26 [简答题] 在考生文件夹下,打开文档WORD2.DOCX,按照要求完成下列操作并以该文件名(WORD2.DOCX)保存文档. [文档开始] [文档结束] (1)设置表格居中,表格行 ...

  5. 【2022考研】肖四大题(马原第二套)背诵笔记

    马原第二套 34 1)运用[唯物史观原理],分析"江山就是[人民],人民就是江山" 2)"以史为鉴,可以知兴替" "我们要用[历史映照现实,远观未来] ...

  6. 2022年信息学部物联网工程学院学生科协第一次软件大培训

    2022年信息学部物联网工程学院学生科协第一次软件大培训 运行第一个程序 Hello World 代码 代码分析 什么是函数 这是我们在数学学习中学习到的函数,一个x值有与之对应的唯一的y值,对于程序 ...

  7. 2021年信息学部物联网工程学院学生科协第二次软件大培训

    2021年信息学部物联网工程学院学生科协第二次软件大培训 一.指针是什么 1.地址 2.指针 二.指针的简单使用 1.两个运算符&和* 2.实战演练 3.指针的特殊赋值方式 4.悬摆指针的危害 ...

  8. 2022年前端软件开发培训学校排名

    很多零基础的朋友在决定前端培训机构的时候,肯定会习惯性地在网上搜索一些相关话题,比如"200年前端培训机构排行榜"之类的,尤其是在成都学习的朋友,吃成都作为一个二线城市,有望成为新 ...

  9. 2022年南京Java培训机构排名,实力突出遥遥领先

    2022年南京Java培训机构排名,实力突出遥遥领先 近日,中国权威机构公布了2022年南京Java培训机构排名,本次排名第一的机构仍是动力节点,在2021年中,动力节点在Java培训机构排名中始终始 ...

最新文章

  1. Linux下禁止别人ping自己服务器的方法
  2. CSP认证 201503-3 节日[C++题解]:模拟、枚举、日期题、日期模板题
  3. 无锡技师学院计算机系,无锡技师学院
  4. Zabbix每天流量统计脚本
  5. 无表头单链表的总结----删除节点
  6. python之函数用法islower()
  7. PyTorch框架学习十九——模型加载与保存
  8. 【Python】windows电脑 python3.6安装lxml库
  9. 庆祝.Net BI团队成立!
  10. DevExpreess汉化使用方法及汉化包
  11. ASP.NET XML高级编程(一、XML技术简介)
  12. 富士胶片携数据磁带亮相大数据产业博览会
  13. 如龙0pc端与计算机王玩游戏卡住,如龙0游戏停止工作怎么办_游戏未响应闪退解决方法_3DM单机...
  14. 红帽(redhat linux) 初级认证(RHCSA)考点详解
  15. 蓝桥杯_Fibonacci数列(Java)
  16. 怎样选择(FC-SAN)光纤通道(存储)交换机
  17. HNOI2004宠物收养所
  18. (PTA)数据结构(作业)12、查找
  19. 基于PHP+小程序(MINA框架)+Mysql数据库的食堂餐厅就餐预约小程序系统设计与实现
  20. DataGrip数据库配置导出步骤

热门文章

  1. 【c语言写计算器】利用函数写一个计算器 包括菜单功能和加减乘除四个功能
  2. mysql dialect配置_iBatis3基于方言(Dialect)的分页
  3. UEFI+GPT与Legacy+MBR的区别
  4. 鸿蒙智慧屏和pro有什么区别,求助咨询华为智慧屏s和spro哪个值得买?区别优缺点分析?优缺点揭秘入手必看!...
  5. Structured Streaming-快速入门
  6. Keil 主题(配色方案)选择器 自带多适用主题
  7. linux mint samba,linux mint 13 配置 samba
  8. 【Java深入】深拷贝与浅拷贝详解
  9. [EULAR文摘] 利用蛋白组学技术开发一项蛋白评分用于预测TNFi疗效
  10. 运用C#编程通过OPC方式实现PC机与西门子PLC通讯-同步通讯篇