4.27 训练收获: C题: 想到肯定与最大最小值有关,因为团队除了问题,谁都不想去认真做题。慢慢调整。 思路一:对最高的进行修减,最低的不必修建,直到所有花等高。举一组样例,规律其实很好找,不必逆向思维。 思路二:将花修减到等高,必定要对最高的进行处理。逆向思维,也就是将每朵花加1,和最高的相等,如果这个和sum小于最大数,则成立。(最大数-sum)表示最后修减的高度。
D题:主要是取模的问题。2的64次方无法表示,已经越界了,结果显示为0。其他的都已经想明白了。看完题解,发现把问题想简单了。
E题:本题过了,但是代码实现不够精炼。我们采用数组记录连续的字串数目;其实用while
当遇到一样的便进行记录,下标累加,另开个变量直接进行记录总和。
4.28 训练收获: E题: 采用的是string数组
,因为一个小错误,wr了四发才过,罚时太多,队伍状态不好,但在回暖。想到用map,但都没信心用这个方法去写,复习一遍。 三种表示用法,重点记住数组表示的即可,了解迭代器用法。
maps1;
maps2;
for(int i=0;isecond);
}
A题: 好不容易看懂了题意,却没跟队友说明白意思,最后掐着时间点侥幸过的。 题意:给定一个数组,可以补x个数,从1开始,数组中有的不必补充,最大能补到多少,输出这个数. 例子: 20到40,只需要填充19个数,x减去填充数值,填充完后数字要更新为40。
temp=(a[i]-a[i-1]-1); //填充数
注意点: 1.会出现一种特殊情况。刚好x消耗完,但是数组中有几个数能跟在后面。 2.去重操作: int t=unique(a+1,a+n+1)-(a+1);
这个技巧很棒,能免去很多讨论。 3.当最后一个数被补充完后,但是x并没有被消耗尽,因此要加上x。
4.29 cf比赛收获: 前两个水题模拟下就过了,收获就是一些细节处理:
int temp=(r+b-1)/b ; //a题非常好的进一方式
重点讲一下c题和d题 (插一句,多么希望自己能过掉c,d题,两题思路都有点正确,代码的处理也找到了方法,也尽力尝试了下,但还是做不出来。看似距离ac很近,其实差的还是非常多) C题:(两种方法,第一种只用map) 我的思路:第一时间想到了用map,第一个关键字为学生注册学校,第二个为学生技能值。然后分别统计每所学校学生的技能值,记录i前的总和。根据k的不同值,利用统计的和减掉技能值低的总和。然后累加到输出的数组ans[n]中。 思路缺陷: 标准的map+vector解题 1.只是简单会用map。第二个关键字应该是int类型的vector容器,因为同一所学校记录不同的技能值。
int n;cin>>n;
vectora(n,0),s(n,0); //定义n个元素,初值都赋为0
for(int i=0;i>a[i];
for(int i=0;i>s[i];
mapb;
//b为map容器,第一关键字为学校代号;第二个用vector容器记录此学校不同技能值
2.vector默认从0开始存,迭代器begin也是从0开始记录的。所以如果从1开始存的话,既不便利迭代器的使用,也使得第二关键字的排序不便。
for(it=b.begin();it!=b.end();it++)
{
vector temp=it->second;
sort(temp.begin(),temp.end());
}
3.数据的存入和对于k值的判断(从1开始思考的形式)可以分开看,但要着重注意下标
long long int sum=temp[temp.size()-1];
ans[0]+=sum;
for(int i=2;i
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?