cf#ecr7-D - Optimal Number Permutation-构造+脑洞
2016-02-14 14:56
465 查看
给出n,让你用1,2,3,4,....n,1,2,3,....n一共2n个数构造一个序列使得
sum
.
最小
猜测一下要用 di 和n-i越接近越好。。。没想到居然是可以全部完全相等的。。。
也就是:
1之间要有n-2个数
2之间要有n-3个数
3之间要有n-4个数
...
n-1之间要有0个数
n由于n-n=0;n之间可以有任意个数;
我们先构造一段数列
我们发现,n-1这一对之间有0个数,放在一起,
n-1-2这对之间有2个数,把n-1夹在中间,
以此类推,一直把全部数都夹在中间
接下来另起一段数列,是对中间只能夹奇数个数的 对 处理,
n-2这对夹着一个数,我们把n放进去,
接下来n-2-2这对夹着3个数,我们把它们夹在新数列两端,以此类推,、
最后只剩下一个n,丢在最后面即可
3
2 2 1 3 1 3
4
1 3 3 1 2 4 2 4
5
2 4 4 2 1 3 5 3 1 5
6
1 3 5 5 3 1 2 4 6 4 2 6
由此:写出三部分即可。。。
sum
.
最小
猜测一下要用 di 和n-i越接近越好。。。没想到居然是可以全部完全相等的。。。
也就是:
1之间要有n-2个数
2之间要有n-3个数
3之间要有n-4个数
...
n-1之间要有0个数
n由于n-n=0;n之间可以有任意个数;
我们先构造一段数列
我们发现,n-1这一对之间有0个数,放在一起,
n-1-2这对之间有2个数,把n-1夹在中间,
以此类推,一直把全部数都夹在中间
接下来另起一段数列,是对中间只能夹奇数个数的 对 处理,
n-2这对夹着一个数,我们把n放进去,
接下来n-2-2这对夹着3个数,我们把它们夹在新数列两端,以此类推,、
最后只剩下一个n,丢在最后面即可
3
2 2 1 3 1 3
4
1 3 3 1 2 4 2 4
5
2 4 4 2 1 3 5 3 1 5
6
1 3 5 5 3 1 2 4 6 4 2 6
由此:写出三部分即可。。。
#include <cstdio> #include <cmath> #include <cstring> #include <string> #include <algorithm> #include <queue> #include <map> #include <set> #include <vector> #include <iostream> using namespace std; #define lson l , m , rt << 1 #define rson m + 1 , r , rt << 1 | 1 const int inf=2147483647; const double pi=acos(-1.0); double eps=0.0000010; int tm[1000000]; int main() { int n; cin>>n; int tt=n-1; int i; int ok=0; if (tt%2) i=1; else i=2; for (;i<=tt;i+=2) tm[++ok]=i; for (i=tt;i>=1;i-=2) tm[++ok]=i; if (tt%2) i=2; else i=1; for (;i<=n;i+=2) tm[++ok]=i; for (i=n-2;i>0;i-=2) tm[++ok]=i; tm[++ok]=n; for (i=1;i<=2*n;i++) { if(i!=1) printf(" "); printf("%d",tm[i]); } printf("\n"); return 0; }
相关文章推荐
- 初识三层架构
- opencl hsl 和 rgba 转换
- 关于popupWindow的使用
- apache tomcat jdbc-pool如何使用及其属性解释
- Linux系统中bash shell编程的10个基础问题讲解
- linux下安装jdk和tomcat
- PHP学习之Apache修改默认站点的目录
- RHCE 学习笔记(21) - SELinux
- Linux环境下C编程指南---gcc 编译器常用的命令行参数一览
- CentOS安装JDK1.7
- centos中MySQL连接及基本信息查看命令小结
- 网站性能提升思路
- Linux 环境下C编程指南-----gcc 编译的四大过程(预处理-编译-汇编-链接 )
- Linux Centos 6.6安装Mysql
- Linux ulimit 命令
- COPY 基于Flume的美团日志收集系统架构和设计
- Linux学习第一天
- 服务器运维与网站架构|Linux运维|X研究
- openstack环境准备
- 阿里云Centos下安装mysql找不到mysql-sever安装包的解决方案