Codeforces 891B Gluttony 构造
来源:互联网 发布:javascript json 编辑:程序博客网 时间:2024/05/16 03:48
题意
给你一个数组a,满足a中元素两两不同。要求构造一个数组b,使得b是a的一个排列,且满足对于
1 ≤ n ≤ 22,0 ≤ ai ≤ 10^9
分析
比赛的时候被这个数据范围吓到了,以为是状压之类的奇奇怪怪的做法,于是就没有去猜结论。
实际上,我们把a排序后,让a整体往前移一位,然后把a[1]放到a[n],从而得到b,可以保证这样的b一定是满足条件的。
证明:对于集合
反之,则设S’为S的补集,有
证毕。
所以说,碰到构造题的时候不要去想那么严格的解法,可以去大力猜一波结论,万一就对了呢?
代码
#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm>using namespace std;const int N=25;int n,b[N];pair<int,int> a[N];int main(){ scanf("%d",&n); for (int i=1;i<=n;i++) scanf("%d",&a[i].first),a[i].second=i; sort(a+1,a+n+1); int tmp=a[1].first; for (int i=1;i<n;i++) a[i].first=a[i+1].first; a[n].first=tmp; for (int i=1;i<=n;i++) b[a[i].second]=a[i].first; for (int i=1;i<=n;i++) printf("%d ",b[i]); return 0;}
阅读全文
0 0
- Codeforces 891B Gluttony 构造
- codeforces -891B Gluttony 排列,构造题
- codeforces -891B Gluttony 排列,构造题
- codeforces 891 B. Gluttony(构造)
- codeforces 891B Gluttony (构造+思维)
- [Codeforces 891B] Gluttony
- Gluttony(codeforce-891B)
- Codeforces Round #446 (Div. 2) D. Gluttony (构造 贪心)
- Codeforces Round #446 (Div. 2) D. Gluttony 构造 置换
- CF 892D Gluttony 构造
- Codeforces 605B 构造
- Codeforces 639B (构造)
- CodeForces 359B 构造
- Codeforces 892 D. Gluttony (思维)
- Codeforces Round #446 (Div. 2) D. Gluttony
- Codeforces 174B【模拟构造】
- 【Codeforces 141 B Hopscotch 】+ 构造
- 【Codeforces 746B Decoding】 + 构造
- 离散事件模拟——银行队列问题//数据结构作业
- Angular 添加,查询,过滤器
- 日常记录
- 【机器学习系列之七】模型调优与模型融合(代码应用篇)
- Mysql OSX 重置密码
- Codeforces 891B Gluttony 构造
- java图片转Base64字符
- [杂乱]RTSP初视
- python学习笔记
- 购买阿里云服务器和域名之后需要做的事
- Python学习_我该怎么使用函数及函数中传递列表
- c++实验一
- java基础final
- 第三方登录