#构造#CF891B Gluttony

发布时间:2022-07-05 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了#构造#CF891B Gluttony脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

题目

有一个长度为 (n) 的数列 (a),数字互不相同, 现在要打乱这个数列,设其为 (b), 使得 (a) 的任意真子序列与对应的 (b) 的任意真子序列的数字和不同 输出任意一种合法的 (b)(1<nleq 22)


分析

如果让 (b)(a) 数字的后继,((max{a}) 取min{a}), 那么数字和当且仅当整个数列才会相同,所以这样保证是有解的


代码

#include <cstdio>
#include <cctyPE>
#include <algorIThm>
#define rr register
using namespace std;
int n,a[31],b[31];
inline signed iut(){
	rr int ans=0; rr char c=getchar();
	while (!isdigit(c)) c=getchar();
	while (isdigit(c)) ans=(ans<<3)+(ans<<1)+(c^48),c=getchar();
	return ans;
}
inline void PRint(int ans){
	if (ans>9) print(ans/10);
	putchar(ans%10+48); 
}
signed main(){
	n=iut();
	for (rr int i=1;i<=n;++i) b[i]=a[i]=iut();
	sort(b+1,b+1+n);
	for (rr int i=1;i<=n;++i){
		a[i]=lower_bound(b+1,b+1+n,a[i])-b;
		print(b[a[i]%n+1]),putchar(32);
	}
	return 0;
}

脚本宝典总结

以上是脚本宝典为你收集整理的#构造#CF891B Gluttony全部内容,希望文章能够帮你解决#构造#CF891B Gluttony所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。