题目传送门 一、思路分析 1、不停的接收结点关系,创建有向图,A->B有边表示 A<B 2、每进入一个结点关系后,判断现在的有向图是否有环,有环就是冲突,提示并退出。判断是否有环可以用拓扑排序, 判断方法是:只要入队(或者出队)的次数不等于节点的个数,就说明有环,有环就是存在矛盾的。 3、在无环的情
原创 2021-08-19 09:26:30
251阅读
topo
原创 2022-06-26 00:22:35
44阅读
题目描述 小C有一个N个数的整数序列,这个序列的中的数两两不同。小C每次可以交换序列中的任意两个数,代价为这两个数之和。小C希望将整个序列升序排序,问小C需要的最小代价是多少? 输入输出格式 输入格式: 第一行,一个整数N。 第二行,N个整数,表示小C的序列。 输出格式: 一行,一个整数,表示小C需
c
原创 2021-05-20 22:47:55
401阅读
一、序列排序1. sorted()函数 sorted()函数是Python的内置函数,此函数不改变原序列,在排序后会生成一个新的序列。调用时,一般只需要给出一个序列即可,该序列可以是列表,字典,元组,字符串。其余参数取默认值,默认为升序排序。最终结果将返回一个以列表为容器的返回值。若该序列为字典,将返回键的列表list_1 = [2,5,3,9,6,4,1,3,0,2] sorted(list_1
转载 2023-09-01 22:47:09
48阅读
p58 冒泡排序 冒泡排序无疑是最出名的排序算法之一,总共有八大排序! 冒泡的代码还是相当简单的,两层循环,外层冒泡轮数,里层依次比较,江湖中人人尽皆知。 我们看到嵌套循环,应该立马就可以得出这个算法的时间复杂度为O(n2)。 思考:如何优化? 代码 package com.kuang.array; ...
转载 2021-09-24 17:09:00
41阅读
2评论
比较神奇的一道贪心/思维题 令i指向a[i]离散化后的值,显然会出现一些环的图。 一定是在环内交换,否则不可能更优。 如何交换? \(1>2>3>4>1\) 通过模拟,我们可以发现两种交换方式: 1 2 2 3 3 4 4 1 3 1 2 1 明显第二种更优 然后就WA了。 可以发现如果环外如果有一 ...
转载 2021-09-03 18:18:00
82阅读
2评论
冒泡排序原理冒泡排序(Bubble Sort)是一种简单的排序算法,它通过依次比较两个相邻的的元素,看两个元素是否满足大小关系要求,如果不满足则交换两个元素。每一次冒泡会让至少一个元素移动到它应该在的位置上,这样 n 次冒泡就完成了 n 个数据的排序工作。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。算法过程描述比较相邻的元素。如果第一个比第二个大,就交换它们两个;对每一对相
题目描述 Tom最近在研究一个有趣的排序问题。如图所示,通过2个栈S1和S2,Tom希望借助以下4种操作实现将输入序列升序排序。 操作aaa 如果输入序列不为空,将第一个元素压入栈S1​ 操作b 如果栈S1不为空,将S1栈顶元素弹出至输出序列 操作c 如果输入序列不为空,将第一个元素压入栈S2​ 操
c
原创 2021-05-20 22:36:25
134阅读
题目背景 这是一道模版题。 题目描述 读入一个长度为 nn 的由大小写英文字母或数字组成的字符串,请把这个字符串的所有非空后缀按字典序从小到大排序,然后按顺序输出后缀的第一个字符在原串中的位置。位置编号为 11 到 nn。 输入输出格式 输入格式: 一行一个长度为 nn 的仅包含大小写英文字母或数字
原创 2021-06-04 21:41:15
98阅读
本来以为是一道排序题,然而看了一眼标签 woc,图论题,一脸懵逼~~~~~~ 题意:给你两个栈,四种操作 操作 a 如果输入序列不为空,将第一个元素压入栈 $S_1$​ 操作 b 如果栈$S_1$​不为空,将$S_1$​ 栈顶元素弹出至输出序列 操作 c 如果输入序列不为空,将第一个元素压入栈$S_
原创 2021-07-27 09:03:58
133阅读
$\color{ 0066ff}{题目描述}$ 读入一个长度为 n的由大小写英文字母或数字组成的字符串,请把这个字符串的所有非空后缀按字典序从小到大排序,然后按顺序输出后缀的第一个字符在原串中的位置。位置编号为 1 到 n。 $\color{ 0066ff}{输入格式}$ 一行一个长度为 n 的仅包
原创 2021-07-27 09:17:25
115阅读
P3809 【模板】后缀排序 第一次写,第一次写,第一次写重要的事情说三遍,记录一下,注释代码便于复习。 #include<cstdio> #include<iostream> #include<algorithm> #include<cstring> using namespace std; const int N=1e6+5; char s[N
原创 2021-08-10 10:01:22
17阅读
题目 题目链接:https://www.luogu.com.cn/problem/P3322 小A有一个$1 2^N$的排列$A[1..2^N]$,他希望将A数组从小到大排序,小A可以执行的操作有N种,每种操作最多可以执行一次,对于所有的$i(1 include include using name
转载 2020-02-13 20:09:00
96阅读
2评论
Archie 本文为倍增做法 后缀数组题 后缀数组是啥,把所有的后缀排个序就是后缀数组了 显然的暴力做法就是全部sort一遍 这不白瞎 我们利用倍增的思想,显然可以把一个字符串分成两半进行比较就可以了 引用一下wiki的图片。 这里有两个数组 $SA_i$表示第i小的后缀的编号 而$RK_i$表示第 ...
转载 2021-07-20 17:53:00
94阅读
2评论
P3149 排序(逆序对)​ 考虑排序对逆序对的影响,即≤ak\le a_k≤ak​的所有数的逆序对变为000,答案就是大于aka_kak​的逆序对的数,因为位置不变,所以大于aka_kak​的逆序对的数不受影响。​ 故排序后,预处理逆序对后缀和与映射关系,每次询问若c[k]≥mxc[k]\ge mxc[k]≥mx ,则输出a[c[k]+1].sa[c[k]+1].sa[c[k]+1].s,否则输出a[mx+1].sa[mx+1].sa[mx+1].s// Problem: P3149 排序//
原创 2021-08-10 08:59:14
46阅读
题目传送门 #include<bits/stdc++.h> using namespace std; const int N = 100010; int a[N]; void quick_sort(int q[], int l, int r) { if (l >= r) return; int i
原创 2021-11-26 14:19:33
125阅读
源程序:在vc++6.0中运行通过 // c0,c1,c2,c3,c4四个结点,在程序中和0,1,2,3,4来表示 // main.cpp // top_sort // // Created by duanqibo on 2019/12/20. // Copyright © 2019年 duanqi
原创 2022-06-08 19:50:15
100阅读
https://www.luogu.org/problem/show?pid=1347 题目描述 一个不同的值的升序排序数列指的是一个从左到右元素依次增大的序列,例如
原创 2021-08-05 10:52:26
59阅读
题目描述 John的农场在给奶牛挤奶前有很多杂务要完成,每一项杂务都需要一定的时间来完成它。比如:他们要将奶牛集合起来,将他们赶进牛棚,为奶牛清洗乳房以及一些其它工作。尽早将所有杂务完成是必要的,因为这样才有更多时间挤出更多的牛奶。当然,有些杂务必须在另一些杂务完成的情况下才能进行。比如:只有将奶牛
转载 2019-04-29 09:28:00
50阅读
2评论
描述某小学最近得到了一笔赞助,打算拿出其中一部分为学习成绩优秀的前5名学生发奖学金。期末,每个学生都有3门课的成绩:语文、数学、英语。先按总分从高到低排序,如果两个同学总分相同,再按语文成绩从高到低排序,如果两个同学总分和语文成绩都相同,那么规定学号小的同学排在前面,...
转载 2017-07-15 06:30:00
126阅读
2评论
  • 1
  • 2
  • 3
  • 4
  • 5