1 条题解

  • 0
    @ 2025-8-24 21:16:43

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar chen_zhe
    Aya 敲可爱的~

    搬运于2025-08-24 21:16:42,当前版本为作者最后更新于2024-11-12 20:49:57,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    欢迎报名洛谷网校,期待和大家一起进步!

    本题考察模拟与排序。对于读入的每一个区间 [l,r][l,r],对其做一次排序即可。

    有两种处理方法,一种处理方法是自行编写一个排序函数,例如选择排序。选择排序参考代码如下:

    //对区间 [l,r] 进行选择排序
    void selectsort(int l, int r) {
    	for (int i = l; i <= r - 1; i++) {
    		int id = i;
    		for (int j = i + 1; j <= r; j++) {
    			if (a[j] < a[id])
    				id = j;
    		}
    		swap(a[id], a[i]);
    	}
    }
    

    第二种处理方法是使用 C++ STL 的 sort() 函数。sort 的使用方式如下:

    sort(first, last, comp)
    

    其中,firstlast 指代所排序的范围的起始和最终位置,comp 是排序方式(不写默认为升序排序)。需要注意,sort 的排序范围是 [first,last) 的左闭右开区间。若是想要对区间 [l,r][l,r] 进行升序排序,应当写作:

    sort(a + l, a + r + 1);
    //关键在于右侧要 + 1
    
    • 1

    信息

    ID
    10861
    时间
    1000ms
    内存
    512MiB
    难度
    2
    标签
    递交数
    0
    已通过
    0
    上传者