【Java每日一题,前缀和】csp202203-2 出行计划

本文作者通过参与CSP第二题的解答,体验到了算法设计的重要性。初次尝试得到70分,因重复判断导致超时,随后调整角度优化算法,最终获得满分。作者强调在编程解决问题时,需深入思考,避免不必要的重复计算,提高代码效率。这是一篇关于算法优化和编程经验的分享。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Introduction

在这里插入图片描述

Input

在这里插入图片描述

Output

输出共 m 行,每行一个整数,表示对应查询的答案。

Sample

input

6 2 10
5 24
10 24
11 24
34 24
35 24
35 48
1
2

output

3
3

Solution

package csp;

import java.util.Scanner;


public class Main20220302 {
    public static void main(String[] args) {
        Scanner s=new Scanner(System.in);
        int n=s.nextInt();int m=s.nextInt();int k=s.nextInt();
        int[] arr=new int[400005];
        for(int i=0;i<n;i++){
            int x=s.nextInt();int y=s.nextInt();
            if(x-y+1<=1){
                arr[1]+=1;
            }else {
                arr[x-y+1]+=1;
            }
            arr[x+1]-=1;
        }
        for(int i=1;i<400005;i++){
            arr[i]=arr[i]+arr[i-1];
        }
        while (m--!=0){
            System.out.println(arr[s.nextInt()+k]);
        }
    }
}

Experience

第一次使用按照非常常规的思路流程得了70分,然后显示超时,其实判断的过程都很清楚了,无非就是出现了重复判断的情况。
做csp第二题的,确实要想清楚了再写代码,有时候往往思路觉得是没问题的,换一个个小小的角度结果完全不同,这个小小的角度也可能是更容易理解的,也更容易正确。
这道题,体验到csp做第二题的经验。要得到100分的话。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小梁说代码

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值