震惊,我发现了一种 O(nlogn) 翻转的方法
  • 板块灌水区
  • 楼主__hjwucj__
  • 当前回复11
  • 已保存回复12
  • 发布时间2024/7/3 16:53
  • 上次更新2024/7/3 19:23:18
查看原帖
震惊,我发现了一种 O(nlogn) 翻转的方法
1021663
__hjwucj__楼主2024/7/3 16:53

起因

我们老师说排序方法要有对称性,我就试了一下,把 struct 的 < 号重载成一只返回 true。。。

经过

我使用这个结构体sort排序,令人震惊的是,序列每次都翻转了。。。所以我这个算不算新方法。。。

代码(大家可以试一下)

#include <bits/stdc++.h>
#define int long long
#define double long double
#define elif else if
#define fin(x) freopen (x,"r",stdin)
#define fout(x) freopen (x,"w",stdout)
#define rnt register int
#define reg(i,x,y) for (rnt i=(x);i<=(y);++i)
#define Reg(i,x,y) for (rnt i=(y);i>=(x);--i)
#define inf 114514114514114514
using namespace std;
namespace rwm {inline int read () {int s=0,w=0;char c=getchar ();while (!isdigit (c)){w|=(c=='-');c=getchar ();}while (isdigit (c)) {s=(s<<1)+(s<<3)+(c^48);c=getchar ();}return w?-s:s;}inline void write (int x) {if (x<0) putchar ( '-'),x=-x;if (x>9) write (x/10);putchar (x%10|48);}inline void writesp (int x) {write (x),putchar (' ');}inline void writeln (int x) {write (x),putchar ('\n');}inline int square (int x) {return x*x;}inline int floor (double x) {return x;}inline int ceil (double x) {return (int)(x+0.5);}inline int gcd (int x,int y) {int z=x%y;while (z) x=y,y=z,z=x%y;return y;}inline int lcm (int x,int y) {return x/gcd (x,y)*y;}};
using namespace rwm;

struct node{
	int x;
	bool operator < (const node z) const{return true;}
} a[1001];
signed main ()
{
	int n=read ();
	reg (i,1,n) a[i].x=read ();
	sort (a+1,a+n+1);
	reg (i,1,n) writesp (a[i].x);
	return 0;
}

2024/7/3 16:53
加载中...