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

直角三角形的判定

题目描述

给定三个正整数表示三角形的三条边,请判定它是否为直角三角形

输入格式

第一行:三个整数 a,b 与 c

输出格式

若可以构成一个直角三角形,输出 Right Triangle
否则,输出 No

数据范围

1≤a,b,c≤10001 \leq a ,b,c \leq 10001≤a,b,c≤1000

样例输入1:

3 4 5

样例输出1:

Right Triangle

样例输入2:

3 3 3

样例输出2:

NO

分析

∙\bullet∙ 勾股定理直接判断三个数是否满足直角三角形三边条件即可

#include <bits/stdc++.h>
using namespace std;int a , b , c; int main(){cin >> a >> b >> c;int ga = a * a , gb = b * b , gc = c * c;if((ga + gb == gc) || (ga + gc == gb) || (gb + gc == ga))cout << "Right Triangle" << endl;elsecout << "No" << endl;     return 0;
}

因子分解

题目描述

给定一个正整数 nn,请将它分解为素数的乘积。

例如 60=2×2×3×560=2\times2\times3\times560=2×2×3×5

输入格式

单个整数表示 nnn

输出格式

若干整数表示 nnn 的素因子,按照从小到大的顺序输出。

数据范围
2≤n≤1,000,000,0002\leq n\leq 1,000,000,0002≤n≤1,000,000,000

样例数据

输入:

60

输出:

2 2 3 5

输入:

3

输出:

3

分析

∙\bullet∙ 依次枚举nnn 的因子直到相同为止最后输出nnn

代码

#include <bits/stdc++.h>
using namespace std;int main(){int n;cin >> n;for(int i = 2; i <= n; ++i)while(n != i){if(n % i == 0){cout << i << " ";   n /= i;}   else  break;} cout << n << endl;return 0;
}

算式求值(一)

题目描述

给定一个由正整数、加号、减号构成的表达式,请计算表达式的值。

输入格式

输入一个由 正整数、+、- 构成的表达式

输出格式

单个整数:表示算式的值。

数据范围

数据保证

输入的字符串长度不超过 100000100000100000,
其中出现的整数不超过 100001000010000。

样例数据

输入:
2+12-5
输出:
9

分析

∙\bullet∙ 和一年普及组T2相似

∙\bullet∙ while(cin) 读入每次读入一个符号和一个数字判断加减

代码

#include <bits/stdc++.h>
using namespace std;string s;
char ch;
long long ans , n;int main(){cin >> ans;while(cin >> ch >> n){if(ch == '-')ans -= n;elseans += n;}cout << ans << endl;return 0;
}

门禁记录

题目描述

小爱得到了某大楼一天内按时间顺序记录的nn条门禁出入记录,每条记录由两个字符串组成,第一个字符串为出入人员姓名,第二个字符串表示该人员进出状态、为 enter 或 exit 中一项,其中 enter 为进入, exit 为离开。

小爱发现,部分人员的门禁信息存在错误,即某人在没有进入记录时便有了离开记录,或是某人有进入记录但没有离开记录。
已知在第一条记录前及最后一条记录后,大楼内均没有任何人员。请你根据门禁记录,来分析哪些人员的门禁信息存在错误?

输入格式

输入第一行,一个正整数 nnn
接下来 nnn 行,每行两个字符串,以空格隔开,其中第 i+1i + 1i+1 行的两字符串分别表示第 iii 条记录的人员姓名与出入信息。

输出格式

按字典序输出所有出入信息存在错误的人员姓名,按空格隔开

数据范围

对于 30%30\%30% 的数据,1≤n≤101 \leq n \leq 101≤n≤10
对于 60%60\%60% 的数据,1≤n≤1031 \leq n \leq 10^31≤n≤103
对于 100%100\%100% 的数据,1≤n≤2×1041 \leq n \leq 2\times10^41≤n≤2×104
且人员姓名字符串长度不超过 101010。

样例数据

输入:

5
Xiaoai enter
Bob exit
Xiaoai exit
Alice exit
Alice enter

输出:

Alice Bob

说明:

Bob只有exit数据,存在信息缺失
Alice的exit数据前不存在enter,而在最后一条enter后也没有exit,存在信息缺失

分析

∙\bullet∙ map映射每个人名进出次数,如果进入就加一,离开就减一

∙\bullet∙ 出现<0或者>2就是进入两次或者只有离开没有进入记录,数组记录字典序sort排序输出

代码

#include <bits/stdc++.h>
using namespace std;map <string , int> mp;
string st , s[20010] , ss[20010] , s1 = "enter" , s2 = "exit";
int main(){mp.clear();int n , j = 0;cin >> n;    for(int i = 1; i <= n; ++i){cin >> s[i] >> st;if(st == s1)mp[s[i]]++;else if(st == s2)mp[s[i]]--;if(mp[s[i]] < 0 || mp[s[i]] > 1)ss[++j] = s[i];}int kk = j;sort(ss + 1 , ss + j + 1);for(int i = 1; i <= j; ++i)if(mp[s[i]] != 0)ss[++kk] = s[i];sort(ss + 1 , ss + kk + 1);for(int i = 1; i <= kk; ++i)if(ss[i] != ss[i + 1])cout << ss[i] << " ";     return 0;
}

组队竞赛

题目描述

有nn同学想要参加小爱组建的一支信息学竞赛队伍,每位同学有能力aia_iai​ 与热情度bib_ibi​。

小爱认为,如果队伍当中,能力值最大与能力值最小选手之间,能力差值大于给定XXX,会导致能力差距过大、不利于团队的学习与凝聚力。因此,请你帮助小爱计算下,如何选择队伍的选手,才能使所有选手的能力差值小于等于XXX,且热情度最大。

输入格式

输入第一行,一个正整数 nnn,表示有 nnn 位选手
接下来 nnn 行,每行两个正整数 aia_iai​ , bib_ibi​表示每位选手的能力值与热情度。
最后一行,一个正整数 XXX,表示小爱希望的能力差值上限

输出格式

输出一个整数,表示满足条件的情况下,最大热情度的值

数据范围

对于 30%30\%30% 的数据,1≤n≤1001 \leq n \leq 1001≤n≤100
对于 60%60\%60% 的数据,1≤n≤1041 \leq n \leq 10^41≤n≤104
对于 100%100\%100% 的数据,1≤n≤105,1≤d≤109,1≤ai,bi≥1091 \leq n \leq 10^5, 1 \leq d \leq 10^9,1\leq a_i, b_i \geq 10^91≤n≤105,1≤d≤109,1≤ai​,bi​≥109

样例数据

输入:

5
10 21
20 34
30 27
40 89
50 54
20

输出:

170

说明:

选第3、4、5个选手。
能力值分别为30、40、50,不超过50 - 30 = 20给定的能力差值上限20
此时热情度为27 + 89 + 54 = 170

分析

∙\bullet∙ 定义两个数组 , 读入后将能力值相同的直接复制到第二个数组中一起计算(此步骤可省略 , 删去无影响)

∙\bullet∙ 和一年普及组题目海港相似

∙\bullet∙ 结构体读入sort排序 , 从开头到结尾分成每个开始和结尾不同的区间每次遇到能力差大于XXX时 , 区间开头变换 , 同时计数总和减去所对应的热情度 , 每次打擂台作比较输出最大值

代码

#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e5 + 10;struct nod{int a , b;
}x[MAXN] , xx[MAXN];bool cmp(nod p , nod q){return p.a <= q.a;
}int main(){long long n , q;cin >> n;for(int i = 1; i <= n; ++i)cin >> x[i].a >> x[i].b;cin >> q;sort(x + 1 , x + 1 + n , cmp);long long ans = 0 , maxs = 0;long long minv = 1 , maxv = 1;while(maxv <= n){maxs += x[maxv].b;while(x[maxv].a - x[minv].a > q){maxs -= x[minv].b;minv++;}maxv++;ans = max(ans , maxs);} cout << ans << endl;return 0;
}

或把能力值相同的统计到同一数组

#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e5 + 10;struct nod{int a , b;
}x[MAXN] , xx[MAXN];bool cmp(nod p , nod q){return p.a <= q.a;
}int main(){long long n , q;cin >> n;for(int i = 1; i <= n; ++i)cin >> x[i].a >> x[i].b;cin >> q;sort(x + 1 , x + 1 + n , cmp);int ii = 0;for(int i = 1; i <= n; ++i){if(x[i].a != xx[ii].a){xx[++ii].a = x[i].a;xx[ii].b = x[i].b;}elsexx[ii].b += x[i].b;}long long k = ii;long long ans = 0 , maxs = 0;long long minv = 1 , maxv = 1;while(maxv <= k){maxs += xx[maxv].b;while(xx[maxv].a - xx[minv].a > q){maxs -= xx[minv].b;minv++;}maxv++;ans = max(ans , maxs);} cout << ans << endl;return 0;
}

上海市计算机学会2022年10月月赛丙组解题报告相关推荐

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

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

  2. 上海市计算机学会月赛 2022年9月月赛丙组

    上海市计算机学会月赛 2022年9月月赛丙组 这次题目真的衡水 矩形的周长与面积 机会成本 三色排序 阶乘尾数 前序中序转后序 这次题目真的衡水 文章拖了好久忘记发了 明天初赛祝各位考试顺利有一个好的 ...

  3. 上海市计算机学会月赛 2022年7月月赛丙组

    上海市计算机学会月赛 2022年7月月赛丙组 水仙花指数 因数之和 观光电梯 匹配括号(三) 打印六芒星 本文仅供学术探讨 水仙花指数 内存限制: 256 Mb时间限制: 1000 ms 题目描述 定 ...

  4. 上海2022年11月月赛丙组

    上海2022年11月月赛丙组 T1~T4略 T5 出栈序列 题目描述 给定一个长度为 n n n的.仅由小写字母组成的字符串,将其按序依次放入栈中. 请问在所有可能的出栈序列中,字典序最小的出栈序列是 ...

  5. 上海11月月赛乙组解题报告

    上海11月月赛乙组解题报告 1.数对统计 题目描述 给定 n 个数字 a1,a2,--,an,请从中挑选两个数字,并按原顺序组成一个数对.请问能选出多少种不完全相等的数对? 输入格式 第一行,单个整数 ...

  6. 屏幕比例c++ 上海市计算机学会竞赛平台8月月赛第2题

    题目描述 现实生活中,我们一般把屏幕的宽度和高度的比例,称为屏幕比例,或称为屏幕长宽比.例如分辨率为 1920 * 1080 的屏幕,其长宽比即为 16 : 9 现给定一个屏幕的分辨率,以 X * Y ...

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

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

  8. 上海市计算机学会竞赛平台.2023年1月月赛丙组

    T1 实验日志 题目描述 小爱正在完成一个物理实验,为期n天,其中第i天,小爱会记录 a i a_i ai​ 条实验数据在实验日志中. 已知小爱的实验日志每一页最多纪录m条数据,每天做完实验后他都会将 ...

  9. 上海计算机学会2023年7月月赛C++丙组T2兔子序列

    兔子序列 内存限制: 256 Mb时间限制: 1000 ms 题目描述 序列 fi​ 的定义如下: f1​=1 f2​=a 当 i>2 时,fi​=fi−1​+fi−2​ 给定一个 k,请问找到 ...

最新文章

  1. LINQ to XML 建立,读取,增,删,改
  2. 【leetcode75】Intersection of Two Arrays(数组的交集)
  3. 抖音怎么上传无损画质_抖音怎么上传高清视频?干货,从此告别模糊
  4. TensorRT(3)-C++ API使用:mnist手写体识别
  5. 用java api 实现查询 Hive 数据
  6. C语言algorithm主函数,C语言中主函数中相关有关问题?
  7. java getparameter 乱码_request.getParameter(“参数名”) 中文乱码解决方法
  8. linux的ftp指令发邮件,三种使用Linux命令发送邮件
  9. mysql 怎样链接jdbc_jdbc链接mysql
  10. hmcl手机版_hmcl启动器手机版下载-hmcl启动器安卓版下载mod附教程_易玩网
  11. 每次离开总是 装做轻松的样子 微笑着说回去吧 转身泪湿眼底
  12. python抽奖概率设计_python 抽奖概率
  13. 这五个方法能提高程序员工作效率
  14. Unity LookAt 2D锁定
  15. scratch词语接龙 电子学会图形化编程scratch等级考试四级真题和答案解析2021-6
  16. matlab基础语法
  17. C++:引用类型(int )
  18. 支持向量机SVM(二)
  19. cocos2d-x游戏中音乐音效的处理
  20. 进销存设计与分析_成本核算(7)

热门文章

  1. Maven插件开发——MOJO简单使用
  2. 【OpenCV】- 模板匹配(浩瀚星空只为寻找那一抹明月)
  3. 悄悄的我走了,正如我悄悄的来;我翻一翻博客,再搞懂一下线程
  4. html表白网站制作_html表白网站制作器_html表白网站制作软件
  5. 力控访问mysql_力控DBCOM的使用方法
  6. 谷歌提供“被遗忘”服务:首日申请过万
  7. 【控制理论】矩形脉冲响应曲线法 Python 绘图
  8. LC-MS/MS蛋白质谱鉴定技术服务
  9. 中国建筑钢结构防腐涂料行业研究与投资战略报告(2022版)
  10. [附源码]Python计算机毕业设计SSM基于java的餐厅收银系统(程序+LW)