提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
例如:第一章 Python 机器学习入门之pandas的使用
提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档
HRBU_20211008训练- 系列文章目录
- 题意
- 题意
- 代码
- 题意
- 代码
- 总结
题目来源
A - Keanu Reeves 题意
输入一个长度为n的二进制字符,把它分为尽可能少的子串,且子串要求为1和0的个数不一样,先判断子串的1和0的个数是否相等,如果相等,直接输出该子串,如果不相等,把第一个字符输出,其余字符再输出
#代码
:
#include#include using namespace std; int main() { int n; string s; cin>>n; cin>>s; int o=0,l=0; for(int i=0;i 总结:
这题一开始的时候我老是去想样例三的结果是怎么来的,后来才知道只需要输出任意正确的答案即可,样例的结果只是其中之一的答案,这题只需要1和0的数量不一样即可B - Number Circle
题意这题是需要将一个序列组成一个圆圈,要求一个数比左右两个数的和小,输出这个序列就可,这题先用sort进行排序,判断最大的数是否小于第二大的数和第三大的数,如果是输出,交换最大的数和第二大数的位置,交换的原因是让最大的数离较大的数更近,以保证比左右之和更小,如果否,输出no;
代码:
#include#include #include using namespace std; int main() { int n,i; int a[100005]; cin>>n; for( i=0;i >a[i]; sort(a,a+n); //int maxn=max(maxn,a[i]); if(a[n-1] 总结:这题如果想到了这个思路还是比较简单的,一开始我就在想怎么比较,让一个数比较左右两个数的和更小,后来,你发现排序之后,右边的数一定比左一个数大,只需要,比较最大的数是否比第二大和第三大之和小即可。
C - Candies!
题意本题是把第一第二一组,第三第四一组,以此类推,对10取余,直到最后只剩下一个数字,判断需要几次操作,输出即可,这题用前缀和思想,每组之和其实是总的序列之和,只需要判断该序列除以10,取整输出答案
代码#include#include using namespace std; int main() { int n,q,l,r,d; cin>>n; int sum[100005]; for(int i=1;i<=n;i++) { cin>>d; sum[i]=sum[i-1]+d; } cin>>q; while(q--) { cin>>l; cin>>r; cout<<(sum[r]-sum[l-1])/10< 总结
总结
本题其实一开始,我是想每次之和模除10之后存起来,每次遍历判断,后来发现我得开多少数组啊!寻找规律发现只需要用前缀和就好了这次训练可以说很成功,希望下次可以做到今日事今日毕,加油吧!我们一定赢!



