十月月赛题解—Oct.18 by Jasonxu

我是传送门


T1:重复子串

1.1题目

存在一种大写字母的有序对(即长度为2的字符串),例如,“ AZ ”,“ AA ”,“ ZA ” 是三个不同的有序对 。有一个由n个大写字母组成的字符串,你的任务是找到字符串中出现次数最多的有序对(即长度为2的连续字符串)的次数。例如,对于字符串s =“ BBAABBBA ”,答案是 “3”,其中“BB”出现了三次。换句话说,找到任何最常见的有序对,输出它出现的次数。
输入
第一行:包含整数n(2≤n≤100)- 字符串s的长度。
第二行:包含由n个大写字母组成的字符串。
输出:给定字符串s中包含的有序对(即字符串的两个连续字符)出现的最大次数。


也就是求出现次数最多的,长度为二的子串。其中2≤n≤100

1.2解题思路

本题数据较小,直接用模拟即可,是一道简单的模拟题。


1.3样例

NO.1
输入: 7
ABACABA
输出:2

NO.2
输入:5
ZZZAA
输出:2


1.4CODE(二维桶思想)

#include<iostream>
using namespace std;
int main()
{int cnt[26][26]={0};int ret=0;string s;int n;cin>>n;cin>>s;int len=s.size();for(int i=1;i<len;i++){cnt[s[i-1]-'A'][s[i]-'A']++;if(cnt[s[i-1]-'A'][s[i]-'A']>ret){ret=cnt[s[i-1]-'A'][s[i]-'A'];}}cout<<ret;
}

T2:错误的减法

2.1题目

小雅正在使用一种错误的减法,她每次通过以下方法进行数字减法:
1.如果该数字的最后一位数字不为零,则将该数字减去1;
2.如果该数字的最后一位为零,则将该数字除以10(即删除最后一位数字)。
您将获得一个整数 n ,从中减去k 次。 你的任务是打印在 k 次减法后的结果。
保证结果为正整数。
输入
第一行:包含两个整数 n 和 k(2≤n≤10的九次方,1≤k≤50) - 小雅将进行减法操作的数字和次数。
输出:打印一个整数 - 将 n减少 k 次的结果。


题意容易看懂,直接照着写就行


2.2解题思路

简单的暴力模拟题,大概是全场最简单的题目,水到无地自容…
毕竟…


2.3样例

NO.1
输入:512 4
输出:50

NO.2
输入:1000000000 9
输出:1

2.4CODE

#include<bits/stdc++.h>//日常的万能头文件
using namespace std;
int main()
{int n , k;cin >> n >> k ;int s ;for (int i=1; i<=k; i++){if(n % 10 != 0) n = n - 1;//如果该数字的最后一位数字不为零,则将该数字减去1else if(n % 10 == 0) n = n / 10;//.如果该数字的最后一位为零,则将该数字除以10(即删除最后一位数字)s = n;   //赋值}cout<< s;
}

T3:三个显示器

3.1题目

现在是2018年中期,居住在 Krasnokamensk(Zabaikalsky 地区的一个小镇)外面的 Maria 希望租用三个显示器以突出一个重要问题。
沿道路放置 n 个显示器,其中第 i个显示器仅显示字体大小为 si 的文本。 Maria 希望租用这样的三个显示器,其索引 i<j<k,如果沿着特定方向沿着道路移动,字体大小会增加。即,应该保持条件 si<sj<sk。
第 i 个显示的租金是 ci 。请确定 Maria 应支付的最低费用。
输入
第一行:单个整数 n(3≤n≤ 3000) - 显示的数量。
第二行:包含 n 个整数 s1,s2,…,sn(1≤ si≤ 10的九次方) - 显示器上的字体大小,它们沿着道路的顺序排列。
第三行:包含 n 个整数 c1,c2,…,cn(1≤ ci≤ 10的八次方) 每个显示的租金成本。
输出:如果没有三个显示器满足条件,则打印-1。否则打印一个整数 - 三个显示的最小总租金成本


就是求字体大小为 si ,并且满足i<j<k的同时si<sj<sk,求其最小的方案,如果不行就输出“-1”。


3.2思路

T3相较前两道题目明显复杂了不少,但直接做也能拿到60分,也算不错的成绩了。但是这次是用暴力枚举拿走100分!


3.3样例

NO.1
输入:
5
2 4 5 4 10
40 30 20 10 40
输出:90

NO.2
输入:
3
100 101 100
2 4 5
输出:-1

NO.3
输入:
10
1 2 3 4 5 6 7 8 9 10
10 13 11 14 15 12 13 13 18 13
输出:33


3.4CODE

#include<bits/stdc++.h>
using namespace std;
int main()
{int n;int s[100001],c[100001];cin>>n;for(int i=0;i<n;i++){cin>>s[i];}for(int i=0;i<n;i++){cin>>c[i];}int ret=(int )1e9;//定义答案 for(int k=1;k<n;k++)//枚举求中间值 {//平行但不是嵌套的两个for循环 int l=(int)1e9;for(int i=k-1;i>=0;i--) {if(s[i]<s[k]&&c[i]<l){l=c[i];}}//取中间值左边的和法数值 int r=(int)1e9;for(int i=k+1;i<n;i++){if(s[i]>s[k]&&c[i]<r){r=c[i];}}//取中间值右边的和法数值 if(l!=(int)1e9||r!=(int)1e9) {ret=min(ret,l+r+c[k]);//判断是否有三个满足条件的显示器 }} if(ret==(int)1e9){cout<<"-1";//若没有三个显示器满足条件则输出-1 }else{cout<<ret;//若满足则输出答案 }
}

T4:括号匹配

4.1题目

仅由括号 “ ( ” 和 “ ) ” 组成的字符串称为括号序列。所有括号都能匹配的序列称为正确的括号序列。
现有一个由括号和问号组成的字符串s,可以用“( ”或“ )”替换每个问号。问有多少子串能够成为正确的括号序列(空串不算)。
输入:字符串s,该字符串仅由字符’(’,’)‘和’?'组成 (假设字符串长度为n,2≤n≤5000)。
输出: 输出一个整数,表示能够成为正确的括号序列的子串个数。


也就是在一个括号序列中,有一些位置是问号,每个问号可以变成左或有括号,问你有多少个合法序列


4.2思路

这道题有些难了,比赛时看不下去,暴力骗了10分就结束了。
但是我们可以使用L与R,以及cnt枚举所有情况完成。


4.3样例


NO.1
输入:((?))
输出:4

NO.2
输入:??()??
输出:7

NO.3
输入:??
输出:1


tips:
对于第一个测试用例,能够成为正确的括号序列的子串为:
1.可以转换为“()”的“(?”。
2.可以转换为“()”的“?)”。
3.可以转换为“(())”的“((?)”。
4.可以转换为“(())”的“(?))”。
对于第二个测试用例,能够成为正确的括号序列的子串为:
1.可以转换为“()”的“??” 。
2.“()”。
3.可以转换为“()()”的“ ??()”。
4.可以转换为“(())”的“?()?” 。
5.可以转换为“()”的“??” 。
6.可以转换为“()()”的“()?” 。
7.可以转换为“()()()”的“??()??” 。


4.4CODE

#include<bits/stdc++.h>
using namespace std;
char a[5050];
int main()
{cin>>a;int ans=0;int n=strlen(a);//获取字符串长度 for(int i=0;i<n;i++)//枚举子串左端点 {int l=0,r=0,cnt=0;//表示左括号数量,右括号数量,保留问号数量 for(int j=i;j<n;j++)//枚举子串右端点 {if(a[j]==')')r++;else if(a[j]=='(')l++;else if(a[j]=='?'){if(l==r)//左等于有,给左 l++;else//否则保留 cnt++;}//说明从i到j这段字符极限情况下左括号都比右括号少//则一定不满足情况 if(l+cnt<r)break;if(l<cnt+r){cnt--;l++;}//若发现左括号等于右括号 ,答案增加 if(l==cnt+r)ans++; }}cout<<ans<<endl;return 0;//每天一个好习惯
}

Happy end! ——作者:Jasonxu
有疑问请留言谢谢!

关于517coding的10月月赛相关推荐

  1. 【10月月赛T9】射命丸文

    [10月月赛T9]射命丸文 Time Limit:20000MS  Memory Limit:165536K Case Time Limit:1000MS Description 在幻想乡,射命丸文是 ...

  2. 上海市计算机学会2022年10月月赛丙组解题报告

    上海市计算机学会2022年10月月赛丙组解题报告 直角三角形的判定 题目描述 给定三个正整数表示三角形的三条边,请判定它是否为直角三角形 输入格式 第一行:三个整数 a,b 与 c 输出格式 若可以构 ...

  3. 洛谷10月月赛 2 t2 深海少女与胖头鱼

    洛谷10月月赛 2 t2 深海少女与胖头鱼 题目链接 参考资料:洛谷10月赛2讲评ppt; 本篇题解考完那天就开始写,断断续续写到今天才写完 本题作为基础的期望dp题,用来学习期望dp还是很不错的 ( ...

  4. 2018安恒杯10月月赛REamp;amp;MISC周周练

    十月月赛反正我是错过了,这次周周练有四道题来看看,菜鸡就该多学习 1.easytree 拖进linux,发现跑不起来,eng? file一下,结果发现是exe PEID查一下 upx壳,直接脱,拖进I ...

  5. 洛谷10月月赛Round.1| P3399 丝绸之路 [DP]

    题目背景 张骞于公元前138年曾历尽艰险出使过西域.加强了汉朝与西域各国的友好往来.从那以后,一队队骆驼商队在这漫长的商贸大道上行进,他们越过崇山峻岭,将中国的先进技术带向中亚.西亚和欧洲,将那里的香 ...

  6. 上海计算机协会-10月月赛-丙组-T5-组队竞赛

    组队竞赛 内存限制: 256 Mb时间限制: 1000 ms 题目描述 有nn同学想要参加小爱组建的一支信息学竞赛队伍,每位同学有能力值a_iai​与热情度b_ibi​. 小爱认为,如果队伍当中,能力 ...

  7. 洛谷10月月赛II题解

    Solution T1 首先,可以一眼看出这是一个完全图的一笔画问题.然后开始挖性质: ①根据欧拉图的性质,如果将我们一笔画中没有经过的边删去,那么剩下的节点的度数一定有000个或222个是奇数. 通 ...

  8. 洛谷10月月赛Round.1| P3400 仓鼠窝[单调栈]

    题目描述 萌萌哒的Created equal是一只小仓鼠,小仓鼠自然有仓鼠窝啦. 仓鼠窝是一个由n*m个格子组成的行数为n.列数为m的矩阵.小仓鼠现在想要知道,这个矩阵中有多少个子矩阵!(实际上就是有 ...

  9. 上海2022年10月月赛丙组 T5:组队竞赛

    原题连接:上海市计算机学会竞赛平台 | YACS 一,70分的写法 先对能力值进行从小到大排序,在对热情度进行前缀和处理,再枚举区间中的开始与结束位置判断是否满足能力值最大选手的能力差值小于等于X的条 ...

最新文章

  1. 【AI】caffe使用步骤(四):训练和预测
  2. 公安领域知识图谱不断升温 或成AI下一风口
  3. 二叉搜索树的最近祖先
  4. 【NLP】预训练模型综述
  5. c# 读hex_在C#中将string转换为hexstring
  6. db2 sql 判断select是否为空_学会复杂一点的SQL语句:Oracle DDL和DML
  7. php xml 返回 微信,php版微信返回用户text输入的方法
  8. 【Tensorflow】Tensor的比较运算
  9. VMware中linux硬盘空间不足的解决方法
  10. Tensorflow中与张量形状有关的操作
  11. opencv2对于读书笔记——二值化——thresholded功能
  12. Q128:PBRT-V3,“体渲染”积分器的“传播方程”(15.1章节)
  13. visio英文版下载与安装教程
  14. android系统裁剪方法
  15. access查找楼号为01_2015年计算机二级考试Access每日一练(9月19日)
  16. 内网通过代理服务器访问高德地图服务的方法
  17. CM添加kafka服务
  18. H5中的history单页面,手动实现单页面开发,细说h5单页面原理
  19. NS3 Tutorial 中文版:第三章 快速上手
  20. ปอเช็ตติโน่ เสียดายโอกาสของทีมในเกมฟัดหงส์

热门文章

  1. 如何获客:3招做好触客营销实现高效获
  2. layui 多图上传和删除图片
  3. 计算机bios设置方法,bios功能怎么设置_bios设置图解教程
  4. java xtend_Java加上Xtend,满足你对C#语法的所有想象
  5. codeforces 1139c Edgy Trees 【并查集 】
  6. 计算机不能识别监控硬盘分区,MBR 分区电脑无法识别 3TB 及以上硬盘的原因!
  7. 随记 asp.net使用echart,时间纵轴不显示
  8. 用Win10中自带的CHKDSK来扫描和修复硬盘
  9. WM_PIANT消息与窗口重画
  10. 新旧两种方法给年份year,定义一个宏,以判别该年份是否闰年。提示:宏名可以定义为LEAP_YEAR,形参为y,既定义宏的形式为 #define LEAP_YEAR(y)