【一本通】线段

ops/2024/12/20 9:02:32/

【一本通】线段


💐The Begin💐点点关注,收藏不迷路💐

数轴上有 n条线段,选取其中 k条线段使得这 k条线段两两没有重合部分,问最大的k为多少?

输入

输入文件segment.in的第一行为一个正整数 n;下面 n行每行有 2个数字ai,bi,描述每条线段。

输出

输出文件segment.out仅包括一个整数,为k的最大值。

样例输入

3
0 2
2 4 
1 3

样例输出

2

C语言代码

#include <stdio.h>
#include <stdlib.h>

// 定义结构体来存储一组数据的两个属性
struct Data {
    int first;
    int second;
};

// 比较函数,用于qsort进行结构体数组按照second成员升序排序
int compare(const void *a, const void *b) {
    struct Data *x = (struct Data *)a;
    struct Data *y = (struct Data *)b;
    return x->second - y->second;
}

int main() {
    int num;
    scanf(“%d”, &num);
    struct Data *dataArr = (struct Data *)malloc(num * sizeof(struct Data));
    if (dataArr == NULL) {
        printf(“内存分配失败\n”);
        return -1;
    }
    // 循环读取每组数据的两个属性值
    for (int i = 0; i < num; i++) {
        scanf(“%d %d”, &dataArr[i].first, &dataArr[i].second);
    }

    // 使用qsort对结构体数组进行排序
    qsort(dataArr, num, sizeof(struct Data), compare);

    int count = 1;
    int prevSecond = dataArr[0].second;
    for (int i = 1; i < num; i++) {
        if (prevSecond <= dataArr[i].first) {
            prevSecond = dataArr[i].second;
            count++;
        }
    }

    printf(“%d\n”, count);

    free(dataArr);
    return 0;
}

Java代码

import java.util.Arrays;
import java.util.Scanner;

class Data {
    int first;
    int second;

    public Data(int first, int second) {
        this.first = first;
        this.second = second;
    }
}

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int numElements = scanner.nextInt();
        Data[] dataArray = new Data[numElements];
        for (int i = 0; i < numElements; i++) {
            int f = scanner.nextInt();
            int s = scanner.nextInt();
            dataArray[i] = new Data(f, s);
        }

        Arrays.sort(dataArray, (x, y) -> x.second - y.second);

        int count = 1;
        int prevSecond = dataArray[0].second;
        for (int i = 1; i < numElements; i++) {
            if (prevSecond <= dataArray[i].first) {
                prevSecond = dataArray[i].second;
                count++;
            }
        }

        System.out.println(count);
    }
}

C++代码

#include <iostream>
#include <algorithm>
using namespace std;

struct Data {
    int first;
    int second;
};

// 比较函数,用于按照结构体中second成员升序排序
bool compare(Data x, Data y) {
    return x.second < y.second;
}

int main() {
    int num;
    cin >> num;
    Data dataArr[num];
    for (int i = 0; i < num; i++) {
        cin >> dataArr[i].first >> dataArr[i].second;
    }

    sort(dataArr, dataArr + num, compare);

    int result = 1;
    int prevSecond = dataArr[0].second;
    for (int i = 1; i < num; i++) {
        if (prevSecond <= dataArr[i].first) {
            prevSecond = dataArr[i].second;
            result++;
        }
    }

    cout << result << endl;
    return 0;
}

在这里插入图片描述


💐The End💐点点关注,收藏不迷路💐

http://www.ppmy.cn/ops/143442.html

相关文章

如何设置Jsoup解析京东商品详情?

在数字化时代&#xff0c;数据的价值日益凸显&#xff0c;尤其是在电商领域。通过爬虫技术&#xff0c;我们可以从网站中提取有价值的信息&#xff0c;用于市场分析、价格监控等。Java作为一种成熟且功能强大的编程语言&#xff0c;拥有丰富的库支持&#xff0c;使其成为编写爬…

List;Set;Map集合

一、List集合 概念和特点 定义&#xff1a;List是一个有序的集合&#xff0c;它允许存储重复的元素。可以通过索引来访问、插入和删除元素。 示例代码&#xff1a; import java.util.ArrayList; import java.util.List;public class ListExample {public static void main(St…

FreeMarker语法

1. 查找转移 <#function getSubSlot x > <#return (x) ? switch( "1", "L", "2", "R", "" )> </#function> 2. 转换数字 ?number ${mergedMap[placement.sequence].material.subs…

AI前沿分析:ChatGPT搜索上线,Google搜索地位能否守住?

名人说:莫听穿林打叶声,何妨吟啸且徐行。—— 苏轼 Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 引言:AI与搜索领域的激烈博弈一、ChatGPT搜索的优势是什么?1. 实时信息获取:超越传统搜索2. 对话式搜索:重构用户体验3. 个性化推荐:深度挖掘用户需求二、G…

网络(TCP)

目录 TCP socket API 详解 套接字有哪些类型&#xff1f;socket有哪些类型&#xff1f; 图解TCP四次握手断开连接 图解TCP数据报结构以及三次握手&#xff08;非常详细&#xff09; socket缓冲区以及阻塞模式详解 再谈UDP和TCP bind(): 我们的程序中对myaddr参数是这样…

数据结构-排序(来自于王道)

排序的基本概念 插入排序 在这个算法中&#xff0c;除了输入的数组本身&#xff0c;没有使用额外的数据结构来存储数据&#xff0c;所有的操作都是在原数组上进行的。因此&#xff0c;无论输入数组的大小 n 是多少&#xff0c;算法执行过程中所占用的额外空间是固定的&#xff…

解锁移动设备管理新技能-RayLink远程控制手机

在这个忙碌的现代社会中&#xff0c;智能手机已经成为我们生活的重要组成部分&#xff0c;它们不再仅仅是通讯工具&#xff0c;而是我们日常生活的核心。随着这种变化&#xff0c;远程控制手机的技术应运而生&#xff0c;为我们开启了一个全新的移动设备管理时代。今天&#xf…

javascript页面设计案例【使用HTML、CSS和JavaScript创建一个基本的互动网页】

一个简单的JavaScript页面设计案例。展示如何使用HTML、CSS和JavaScript创建一个基本的互动网页&#xff0c;其中包括一个按钮和一个文本显示区域。当用户点击按钮时&#xff0c;文本显示区域的内容会发生变化。 HTML部分 创建HTML结构&#xff0c;包括一个按钮和一个用于显示…