Problem Description

HDU ACM集训队的队员在暑假集训时经常要讨论自己在做题中遇到的问题.每当面临自己解决不了的问题时,他们就会围坐在一张圆形的桌子旁进行交流,经过大家的讨论后一般没有解决不了的问题,这也只有HDU ACM集训队特有的圆桌会议,有一天你也可以进来体会一下哦:),在一天在讨论的时候,Eddy想出了一个极为古怪的想法,如果他们在每一分钟内,一对相邻的两个ACM队员交换一下位子,那么要多少时间才能得到与原始状态相反的座位顺序呢?(即对于每个队员,原先在他左面的队员后来在他右面,原先在他右面的队员在他左面),这当然难不倒其他的聪明的其他队友们,马上就把这个古怪的问题给解决了,你知道是怎么解决的吗?

Input

对于给定数目N(1<=N<=32767),表示有N个人,求要多少时间才能得到与原始状态相反的座位顺序(reverse)即对于每个人,原先在他左面的人后来在他右面,原先在他右面的人在他左面。

Output

对每个数据输出一行,表示需要的时间(以分钟为单位)

Sample Input

4

5

6

Sample Output

2

4

6

思路:

把圆桌分成两部分,分别求两部分的逆序数,然后再让分开后的圆桌合并(即让两逆序数相加),n个有序数的逆序数为:n*(n-1)/2; 所以为了让结果逆序数最小,则尽量要让两部分等分(也就是说若为n个人的圆桌,则一部分是 n/2,另一部分为 n-n/2)

由题意可知目的是将123…n 转化为n….321 可知要转换n+n-1+…1 = n*(n-1)/2 次, 即1转到最后一位需要n次, 2转换到n-1的位置需要n-1次…

又因为是首尾相接的所以可以一半从这边交换, 另一半从那边交换.

import java.util.Scanner;

public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
int n = sc.nextInt();
System.out.println(f(n/2)+f(n-n/2));
}
} private static int f(int i) {
return i*(i-1)/2;
}
}

最新文章

  1. git 常见问题
  2. php 投票系统练习
  3. JS实时数据运算
  4. FLASH CC 2015 CANVAS (四)制作响应式设计(自适应)的项目
  5. IE6/IE7下:inline-block解决方案
  6. epoll在socket通信中的应用
  7. LeetCode 326
  8. swift基础--字符串
  9. 初见Javascript
  10. [CSAPP笔记][第八章异常控制流][呕心沥血千行笔记]
  11. Asp.net MVC4 下二级联动
  12. javaScript-什么是变量?
  13. HttpServletRequest获取URL?后面的内容
  14. 运行python “没有那个文件或目录3” 或 “/usr/local/bin/python3^M: bad interpreter: 没有那个文件或目录” 错误
  15. 用count sql做jmeter的while条件
  16. LeetCode(169. 求众数)
  17. bzoj1133: [POI2009]Kon
  18. [PHP] 算法-数组重复数字统计的PHP实现
  19. flask表单
  20. [02] mybatis-config.xml 全局配置文件解析

热门文章

  1. CentOS7下安装SVN服务端
  2. Oracle数据导入导出imp/exp命令总结
  3. 【BZOJ2281】【博弈论+DP】 [Sdoi2011]黑白棋
  4. 读书笔记之 - javascript 设计模式 - 组合模式
  5. Bootstrap_表单_表单控件状态
  6. Node 之 Express 学习笔记 第二篇 Express 4x 骨架详解
  7. UFLDL实验报告1: Softmax Regression
  8. asp.net mvc4 webapi Post 参数 字符串
  9. you don&#39;t have permission&#160;错误
  10. 转 四大Java EE容器(Tomcat、JBoss、Resin、Glassfish)之简单比较