Educational Codeforces Round 7 D. Optimal Number Permutation 构造题
D. Optimal Number Permutation
题目连接:
http://www.codeforces.com/contest/622/problem/D
Description
You have array a that contains all integers from 1 to n twice. You can arbitrary permute any numbers in a.
Let number i be in positions xi, yi (xi < yi) in the permuted array a. Let's define the value di = yi - xi — the distance between the positions of the number i. Permute the numbers in array a to minimize the value of the sum .
Input
The only line contains integer n (1 ≤ n ≤ 5·105).
Output
Print 2n integers — the permuted array a that minimizes the value of the sum s.
Sample Input
2
Sample Output
1 1 2 2
Hint
题意
构造题,让构造一个1-n中每个数出现两次的一个序列,使得这个序列的权值和最小
权值 = (n-i)(di+i-n),di是指第i个数出现两次的距离
题解:
我们猜想一下,我们能不能让di = n-i,这样权值和就是0了
于是就这样构造吧,我们分奇数偶数去摆放,这样就可以错开了,就不会重叠在一起
因为n这个数可以使得(n-i)=0,所以就用它来调整这个序列
唔,如果我题解不是很清楚,可以跑跑我的代码,可以发现出来的结果是两个类似回文串的东西~
喵。
代码
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e6+7;
int a[maxn];
int d[maxn];
int main()
{
int n;
scanf("%d",&n);
int tot = 1;
for(int i=1;i<=n;i+=2)
a[tot++]=i;
int p = n;
if(p%2==0)p--;
else p-=2;
for(int i=p;i>=1;i-=2)
{
a[tot++]=i;
}
for(int i=2;i<=n;i+=2)
a[tot++]=i;
p=n;
if(p%2==1)p--;
else p-=2;
for(int i=p;i>=1;i-=2)
a[tot++]=i;
a[tot++]=n;
int Ans=0;
/*
for(int j=1;j<=2*n;j++)
{
if(d[a[j]])
Ans+=(n-a[j])*abs(j-d[a[j]]+a[j]-n);
else
d[a[j]]=j;
}
cout<<Ans<<endl;
*/
for(int i=1;i<=2*n;i++)
cout<<a[i]<<" ";
cout<<endl;
}
Educational Codeforces Round 7 D. Optimal Number Permutation 构造题的更多相关文章
- [Educational Codeforces Round 16]B. Optimal Point on a Line
[Educational Codeforces Round 16]B. Optimal Point on a Line 试题描述 You are given n points on a line wi ...
- Educational Codeforces Round 14 D. Swaps in Permutation 并查集
D. Swaps in Permutation 题目连接: http://www.codeforces.com/contest/691/problem/D Description You are gi ...
- Educational Codeforces Round 14 D. Swaps in Permutation (并查集orDFS)
题目链接:http://codeforces.com/problemset/problem/691/D 给你n个数,各不相同,范围是1到n.然后是m行数a和b,表示下标为a的数和下标为b的数可以交换无 ...
- Educational Codeforces Round 14 D. Swaps in Permutation(并查集)
题目链接:http://codeforces.com/contest/691/problem/D 题意: 题目给出一段序列,和m条关系,你可以无限次互相交换这m条关系 ,问这条序列字典序最大可以为多少 ...
- Educational Codeforces Round 14 D. Swaps in Permutation
题目链接 分析:一些边把各个节点连接成了一颗颗树.因为每棵树上的边可以走任意次,所以不难想出要字典序最大,就是每棵树中数字大的放在树中节点编号比较小的位置. 我用了极为暴力的方法,先dfs每棵树,再用 ...
- codeforces 622C. Optimal Number Permutation 构造
题目链接 假设始终可以找到一种状态使得值为0, 那么两个1之间需要隔n-2个数, 两个2之间需要隔n-3个数, 两个3之间隔n-4个数. 我们发现两个三可以放到两个1之间, 同理两个5放到两个3之间. ...
- Educational Codeforces Round 4 A. The Text Splitting 水题
A. The Text Splitting 题目连接: http://www.codeforces.com/contest/612/problem/A Description You are give ...
- Codeforces Educational Codeforces Round 3 B. The Best Gift 水题
B. The Best Gift 题目连接: http://www.codeforces.com/contest/609/problem/B Description Emily's birthday ...
- Codeforces Educational Codeforces Round 3 A. USB Flash Drives 水题
A. USB Flash Drives 题目连接: http://www.codeforces.com/contest/609/problem/A Description Sean is trying ...
随机推荐
- DOS攻击和DDOS攻击有啥区别啊
DDOS是DOS攻击中的一种方法. DoS:是Denial of Service的简称,即拒绝服务,不是DOS操作系统,造成DoS的攻击行为被称为DoS攻击,其目的是使计算机或网络无法提供正常的服务. ...
- As3 常用日期工具
package com.lj.utils { import mx.controls.DateField; import mx.controls.dataGridClasses.DataGridColu ...
- js代码大全
超级实用且不花哨的js代码大全 事件源对象event.srcElement.tagNameevent.srcElement.type 捕获释放event.srcElement.setCapture() ...
- IA32系统级架构总览(一) 实模式和保护模式
应用程序的编写大部分的时候是不必关心系统级架构的,最多学习一下平台所给的API即可,也就是我们通常说的黑箱子.但是在学习操作系统的时候,系统级架构是要关心的. 系统级架构很难学习,其中一个很大的原因是 ...
- 【Unity入门】碰撞检测与触发检测
版权声明:本文为博主原创文章,转载请注明出处. 在Unity里面,游戏物体的碰撞我们可以通过刚体组件(Rigidbody)和碰撞器组件(Collider)来进行检测.首先在场景里面添加一个Plane面 ...
- C字符串和C++中string的区别 &&&&C++中int型与string型互相转换
在C++中则把字符串封装成了一种数据类型string,可以直接声明变量并进行赋值等字符串操作.以下是C字符串和C++中string的区别: C字符串 string对象(C++) 所需的头文件名称 ...
- mysql数据库修改密码
更改MySQL用户密码 方法1: 用SET PASSWORD命令 首先登录MySQL. 格式:mysql> set password for 用户名@localhost = password(' ...
- gcc命令行详解
介绍] ----------------------------------------- 常见用法: GCC 选项 GCC 有超过100个的编译选项可用. 这些选项中的许多你可能永远都不会用到, 但 ...
- 40个最好的Tumblr主题
如果安装了一款较好的Tumblr主题,你的Tumblr空间将焕然一新.然而找到一款合适的主题并不是一件容易的事,这正是本文中我整理那么多优质的Tumblr模板作为灵感的原因.其中有一些免费的Tumbl ...
- 在fedora20下配置hadoop2.5.1的eclipse插件
(博客园-番茄酱原创) 在我的系统中,hadoop-2.5.1的安装路径是/opt/lib64/hadoop-2.5.1下面,然后hadoop-2.2.0的路径是/home/hadoop/下载/had ...