BOJ1131 Crazy tea party 冒泡排序变形
来源:互联网 发布:mac收藏网页怎么删除 编辑:程序博客网 时间:2024/05/13 20:57
题意:给一行数字,只能相邻的两个交换位置。为交换多少次之后能使得这行数字里的每个数的左右数字交换。(reverse)。
注意!这行数是不是在一行里,是around the table ,即是一个环。
思路:如果这个不是环的话,很显然,就是冒泡排序。1 2 3 4 5冒泡排序成5 4 3 2 1 交换次数是n*(n-1)/2。
但是关键点也是蛋疼点就是这个是环:当时做的时候是写了不少数组都算看看,猜出蹊跷点。
这里让我想到我一个获得过acm区域赛的金奖老乡给我说有次参加某校赛的时候,
本来是没戏了,但是在最后一个小时的时候,猜了三道题的解法,都是自己设定出一些数组来猜想。
没想到三道题都ac了。一下次就名次上升到第二。
其实有环和没环的区别在于,比如123 只要交换一次成213,就可以。如果是12345,即交换到321 54 (次数4),但是交换到4321 5(次数6)这样次数不是最小。
原因很显然n*(n-1)/2是n的平方增长。
因为环的原因我们可以使之截成两段,很显然是均匀截成两段使之总次数是最小。
#include<iostream>#include<math.h>using namespace std;const int N=105;int n;int main(){ int cases; scanf("%d",&cases); while(cases--) { scanf("%d",&n); if(!(n%2)) { printf("%d\n",(n/2)*(n/2-1)); } else printf("%d\n",(n/2)*(n/2 -1)/2 + (n/2 +1)*(n/2)/2); } return 0;}
- BOJ1131 Crazy tea party 冒泡排序变形
- POJ 1455 Crazy tea party 冒泡排序的想法
- poj 1455-Crazy tea Party-类似冒泡排序
- Crazy tea party
- zoj1730-----------------Crazy Tea Party
- LA2756--Crazy tea party
- Crazy tea party
- Crazy Tea Party
- Crazy tea party
- Crazy tea party-1455
- Crazy tea party
- fjnu 1655 Crazy tea party
- FOJ 1157 Crazy Tea Party
- zoj 1730 Crazy Tea Party
- POJ 1455 Crazy tea party
- ZOJ 1730 Crazy Tea Party
- UVA 1315 - Crazy tea party
- ZOJ 1730 Crazy Tea Party
- (2)使用Jobs之管理jobs
- YII Framework学习教程-YII的Model-数据库操作4-Query Builder使用举例
- GDB手册
- centos5.6下安装python2.6及相关环境
- Java 删除文件夹的办法
- BOJ1131 Crazy tea party 冒泡排序变形
- SPI,UART,I2C都有什么区别,及其各自的特点
- POJ3436
- 使<td>中的内容不换行
- 签offer前的注意事项
- 器件选型结果
- VIM中文乱码原理详解及终极解决方案
- ubuntu11.10 使用投影仪
- DropDownList 数据绑定