学习心得1

本文分享了一维数组题目的解题策略,强调阅读题目、独立思考和理解解法的重要性,通过实例讲解了如何运用数组特性解决“校门外的树”问题,并鼓励读者尝试不同的解题方法。
摘要由CSDN通过智能技术生成

这时我第一次更学习心得!不足的在评论区指教。

首先先来分享一下,刷一维数组题目的方法。

仔细读题,不会做的题目先完成输入输出。不要干等着着急,就跳到下一题。如果使用的时oj,那就没有题解但是使用洛谷、LeetCood就有题解。可是你千万不要去看,一定要自己思考。实在是不知道怎么做了才可以去看!而且,不要做完一道题就立刻去刷下一道题除非你是自己做出来的。否则的话刷在多题也没有用!要理解这道题目的意思和解法,尝试这理解别人题解写的代码所用的思考方式。这样就可以达到,刷一题抵十题的效果!

要学会思考!下面我们看一道题目。一起来思考一下。跟着我的思路来!

                                                        校门外的树

这道题我讲过但是由于十分经典算法涉及到了模拟。所以在讲一遍!

遇到这类题型我们可以先画图分析一下,至少可以让我们对题目不那么模糊。

 可以看到这个图刚好符合题目的要求!1、这条路的长度是0---l 2、n个区块的树要移走 

3、有区域重合!

这道题是可以算出来的,但是有些人会算错,就算对了也只是符合这一组样例数据罢了。这个时候就要用到数组的特性来解题了!我们可以将移走的树设为1,没有被移走的树设为0。最后把是0的数组元素累加起来,最后输出就可以了。

但是每个要移走树区块的起始点和终点该如何解决,我们可以定义两个变量,x和y。x是要移走树的区块的起始点,y是要移走树的区块的终点。而n就是有n个要移走树的区块,这里就需要用到for嵌套

#include<cstdio>
int a[50857],l,n,sum,x,y;
int main(){
    scanf("%d %d",&l,&n);
    for(int i=1;i<=n;i++){
        scanf("%d %d",&x,&y);
        for(int i=x;i<=y;i++){
            a[i]=1;
        }
    }
    for(int i=0;i<=l;i++){
        if(a[i]==0){
            sum++;
        }
    }
    printf("%d",sum);
}

注意的是i是从0开始的。

讲了这么久,就是为了让大家知道。要独立思考,灵活运用知识点。有时候也可以多想出几种方法

这道题与校门外的树的思考方式差不多,可以不用完全平方数!也是将开的灯设为?将关的灯设为?

先不放代码自己思考吧 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值