排序
酷酷的Herio
这个作者很懒,什么都没留下…
展开
-
十一大排序算法的实现
几种排序算法的实现1.希尔排序希尔排序就是分组插排。#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N=1e3+5,M=2e4+5,inf=0x3f3f3f3f,mod=1e9+7;#define mst(a,b) memset(a,b,sizeof a)#define PII pair<int,int>#define fi first#define se sec原创 2020-12-16 11:02:25 · 499 阅读 · 0 评论 -
小x的好路-road (排序&贪心)
小x的好路-road (排序&贪心)题意:给定nnn个点的完全无向图,每条边的边权给定,已知nnn为奇数,问分成若干个环的最小贡献,每个环的贡献计算方式为每个点的相连两条边的较大边权,题目保证每条边有且仅属于一个环。思路:因为nnn为奇数,所以每个点的度数为偶数,又因为题目保证每条边都在环里,所以直接贪心对每个点的边进行排序,两个两个的选择较大边权计算贡献即可。吐槽一句题意,一开始以为每个环的贡献是最大边权×\times×点数,直接懵逼。#include<bits/stdc++.h原创 2020-11-15 21:40:05 · 378 阅读 · 0 评论 -
Ancient Cipher POJ-2159 (排序)
Ancient Cipher POJ-2159 (排序)传送门思路:关键在于这句话:Substitution cipher changes all occurrences of each letter to someother letter. Substitutes for all letters must be different. For someletters substitute letter may coincide with the original letter.意思就是每个字原创 2020-10-19 11:22:19 · 278 阅读 · 0 评论 -
1055 The World‘s Richest (排序)
1055 The World’s Richest (排序)排序水题,以后对字符串排序就用charcharchar数组+strcmpstrcmpstrcmp函数,这样避免了用cin,coutcin,coutcin,cout,另外此题mmm最大只有100,所以只用存每个年龄的前100100100个人,避免超时。#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N=105,M=2e4+5,inf原创 2020-10-09 14:11:22 · 311 阅读 · 0 评论 -
1052 Linked List Sorting(排序)
1052 Linked List Sorting(排序)思路:struct+struct+struct+排序。坑点:1.答案只包含从原链表中头结点开始的结点,有点结点不在原链表上不用考虑。2.头结点可能不存在,直接输出0−10 -10−1。#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N=1e5+5,M=2e4+5,inf=0x3f3f3f3f,mod=1e9+7;#defin原创 2020-10-08 23:06:16 · 214 阅读 · 0 评论 -
1047 Student List for Course (25分)
1047 Student List for Course (25分)思路:vector+vector+vector+排序即可。注意不能用setsetset会超时,应该每次sortsortsort下。#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N=1e5+5,M=2e4+5,inf=0x3f3f3f3f,mod=1e9+7;#define mst(a,b) memset(a,b,s原创 2020-10-07 10:50:41 · 270 阅读 · 0 评论 -
D. Rescue Nibel!(排序&组合数学)
D. Rescue Nibel!(排序&组合数学)思路:排序+++组合数学利用差分思想,将区间按左端点排序,左端点值为1,右端点值为-1,这样 便于统计相交区间数量。然后对每个区间,求出在它之前与它相交的区间个数cntcntcnt。它的贡献即为:C(cnt,k−1)C(cnt,k-1)C(cnt,k−1)。当区间端点重合时,优先用值为1的,这样不会少统计。每遍历完一个区间后,cnt+=i.secondcnt+=i.secondcnt+=i.second,表示还剩多少个相交区间。#inc原创 2020-10-04 22:14:19 · 412 阅读 · 0 评论 -
HDU.6759 Leading Robots(单调栈)
HDU.6759Leading Robots(单调栈)思路:单调栈。考虑:对机器人进行排序,按照加速度从小到大,加速相同,位置从小到大排序,保证后面下标的机器人能超过前面下标的机器人或者位置相同。然后我们前往后开始遍历,如果当前机器人比栈顶机器人初始位置大,说明该机器人始终在栈顶的机器人前面, 即栈顶的机器人不可能是第一,所以弹出栈顶,若当前栈中有至少两个机器人,我们则需比较a,b,ia,b,ia,b,i,b,ab,ab,a分别为栈顶的元素,栈顶的前一个元素。若机器人iii超过bbb的时间小于等于b原创 2020-07-24 12:20:08 · 510 阅读 · 0 评论 -
F. Cyclic Shifts Sorting(模拟&排序)
F. Cyclic Shifts Sorting(模拟&排序)传送门思路: 模拟冒泡排序,只不过两个数交换,变成了三个数进行位置转换。显然三个数可以顺时针走,也可以逆时针走(顺时针操作两次等价于逆时针操作一次)(顺时针操作两次等价于逆时针操作一次)(顺时针操作两次等价于逆时针操作一次)。我们可以第iii轮将当前最小的数移动到位置iii,因为每操作一次,第三个数可以移动到第一个数的位置。如果当前最小的数与位置iii的距离不是2的倍数,我们需要让位置pospospos操作一次,使其变为pos原创 2020-06-29 21:25:46 · 601 阅读 · 0 评论 -
E1. Reading Books (easy version)(贪心)
E1. Reading Books (easy version)(贪心)传送门思路:贪心。有四种类型物品:1.两个人都能拿。2.只有AAA能拿。3.只有BBB能拿。4.都不能拿。显然第4种不用考虑。显然根据贪心思想,最优解肯定是A和BA和BA和B刚好拿kkk个。所以考虑将类型2,32,32,3转换为111做。分别将2,32,32,3类型排序,然后每次取最小的为一组加入到类型111种。再对类型111排序,选前kkk个即可。#include<bits/stdc++.h>u原创 2020-06-29 16:39:36 · 639 阅读 · 0 评论 -
P4447 [AHOI2018初中组]分组(贪心)
P4447 [AHOI2018初中组]分组(贪心)传送门思路:贪心。将数组从小到大排好序后,用优先队列维护每个组的当前最大实力值和人数,按照实力值为第一关键字,人数为第二关键字排序。讨论一下:因为我们是按实力值从小到大排序的,所以不会出现a[i]<a[i]<a[i]<队首实力值的情况。1.若a[i]a[i]a[i]不等于当前队首实力值+1+1+1,则该组不会再发生变化,答案取最值,弹出。2.若队列为空或者当前队首实力值=a[i]=a[i]=a[i],则建立以a[i]a[i]a[原创 2020-06-24 22:30:20 · 737 阅读 · 0 评论 -
Birthday Gift(排序&后缀数组)
Birthday Gift(排序&后缀数组)传送门思路:排序+后缀数组的好题。要求 min(xa+yb,xb+ya)min(x_a+y_b,x_b+y_a)min(xa+yb,xb+ya).根据x,yx,yx,y的对称性,不妨令最小值为xa+ybx_a+y_bxa+yb。所以xa+yb≤xb+ya→xa−xb≤ya−yb。x_a+y_b\leq x_b+y_a\rightarrow x_a-x_b\leq y_a-y_b。xa+yb≤xb+ya→xa−xb≤ya−yb原创 2020-06-04 15:23:10 · 843 阅读 · 0 评论 -
D. Constructing the Array(排序&递归)
D. Constructing the Array(排序&递归)思路:因为只分成了nnn个区间,对于分区间我们可以用递归实现,然后根据题目要求进行排序即可,因此我们可以用pairpairpair来储存区间长度和当前的中点下标。对于排序方式,我们可以用将区间长度取相反数然后从小到大排,或者自己写一个自定义排序。时间复杂度:O(nlogn)O(nlogn)O(nlogn)#include <bits/stdc++.h>using namespace std;const int N原创 2020-05-15 08:38:42 · 569 阅读 · 0 评论 -
E - Fox and Card Game(博弈论&贪心)
E - Fox and Card Game(博弈论&贪心)题意:给nnn堆牌,两人一个人只能从某一个牌堆的牌顶取,一个只能从牌底取,问各自在最优策略下各自取到牌的总和最大。思路:对每堆牌的奇偶性进行讨论,如果是偶数,那么显然在双方都选最优策略的情况,这堆牌肯定是所有堆中最好的。那么对手为了不让对方不取完这堆最优的牌,对手肯定也会取这堆牌,那么一直取下去,肯定先手取完上半堆,后手取完下半...原创 2020-05-04 11:18:51 · 656 阅读 · 0 评论 -
D. Phoenix and Science(贪心&排序)
D. Phoenix and Science(贪心)题目传送门算法:贪心时间复杂度:O(logn)O(logn)O(logn)思路:题目可以转化为构造一个数组:a1,a2,a3…ak,a1=1,满足∑i=1kai=n,∀i∈[1,k−1],ai≤ai+1≤2aia_1,a_2,a_3\dots a_k,a_1=1,\text{满足}\sum\limits_{i=1}^k a_i=n,\fo...原创 2020-05-02 12:03:29 · 562 阅读 · 2 评论 -
牛客小白月赛24: B.组队 (排序&二分)
牛客小白月赛24: B.组队 (排序&二分)题目传送门思路:排序后枚举左端点进行upper_bound,或者枚举右端点进行迭代。时间复杂度:O(nlogn)SOL1(STL) :#include<bits/stdc++.h>using namespace std;int main(){ int t; scanf("%d",&t); w...原创 2020-04-19 09:49:51 · 334 阅读 · 0 评论 -
D. Xenia and Colorful Gems (排序&贪心)
D. Xenia and Colorful Gems (排序&贪心)题目传送门思路:#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N=1e5+5;#define mst(a) memset(a,0,sizeof a)int a[3][N];ll cal(in...原创 2020-04-16 10:04:34 · 744 阅读 · 0 评论 -
P1056 排座椅 (贪心&排序)
P1056 排座椅 (贪心&排序)题目传送门思路:分别求出分割每行每列的同学对数,然后排序,分别取k和l个即可。#include<bits/stdc++.h>using namespace std;const int N=1e3+5; struct p{ int id,v;}a[N],b[N];bool cmp(p a,p b){ return a.v&g...原创 2020-04-12 09:45:44 · 368 阅读 · 0 评论