codeforces724-B. Batch Sort
想着想着就忘了有什么问题没解决,坑啊
一开始读错题意了,而且一着急写了两大段差不多的代码,冗余度啊,不说了。。
显然的一点,给的数据是绝对离散的,每行都是1~m的排列
难点一、如何移动能使未排序的数组移动后有序,并且移动步数最小
从前到后,遇到不是位置等于名次的数,就和在他名次的位置的那个数的位置交换
算法可以保证终止,但不能证明其最小
//其实只要小于n+1
发现事实:对于相同的交换操作,如果每一行都有,我们显然可以都顺便做掉
难点二、移动先后的选择,如果你先移动好了一个有序组,后面又加了交换所有行的两列操作
你这个操作很可能就被无效化了,
(所以解决方案之1是先进行交换所有行的两列的操作,然后进行交换单行的两列)
1 3 2 4
1 3 4 2
1 3 4 2
1 3 4 2
当然这个调整的方法是我上面自己想的。。
这个数据,我们先把第一组单列调整有序,不波及其他的行的列
然后后面的三个一起调整,当后面的调整好了之后,我们发现第一组无序了
然后还有剩余步数,它只动自己的次数已经用完,所以每次交换所有行的列
当第一组又变得有序的时候,第一步数超了,第二其他组都不是有序的了 当有某一组单独有序的时候,我们不能保证调整波及有序组之后
这一组变无序之后还能在有限合法步数内变成有序,而且变换后
所有组都是有序的 搞不动了,我发现好像没什么规律,然后想写个暴力冲一发,这是q神的策略之一,看不出规律就暴力冲一发 我发现暴力好像不太好写啊。。 我又发现一个事实,当我对于整体里有一个有序组的情况困惑时
我手算了一下,如果你每次移动都带着一个有序组,当前有无序组,那么由于一一对应的关系,无论你怎么交换
最后肯定有无序的,
所以说碰到有序组,要考虑每组一个单独的列交换要么花在这个有序组变无序又想变有序的过程中
要么花在其他无序组
上面那个操作可以简单解释为,用了单独列交换变成有序组,然后其他组带着有序组交换,有序组最终变无序
其他组又变有序,此时又没有什么单独列交换可做,只做所有行的列交换已经被证明不可以 尽量多的组变成有序,其他剩下的组每个用一次单独列交换
这样会不会比全部单独列交换
或者所有行列交换和单独列交换各占一部分
的步数多呢。。
我刚刚想解决的问题是,对应两组数,选定之后对应的两个列,交换后有什么后果
如果其中一个组的两个列都在自己对应的位置,那么交换后,对应位置只增不减,要么另外一组变有序,这组有序变无序,要么两个都变无序
都不在对应位置,相同的话,交换后可能都在对应位置 选择某一组进行调整,那么如果你选的顺序不同会造成,对于完全相同的组的所有行列交换操作的影响 还是在困惑如何解决这个可行性的问题,判定方法一般在题目里
所以我又想起来,我还是去求最小值,然后判最小值的大小,或者暴力求可行解 两个都错位的序列是有区别的,2,1,4,3和2,3,4,1 虽然说都错位了,但是像这种1,2变成2,1的距离有序序列的距离就短
手算了一下2,3,4,1 我发现无论交换顺序如何(每次交换到自己的本位),交换步数不变。。
按这样的交换的方法,无序组最多交换n-1次就能变成有序的,因为每次交换都至少让一个元素就位(会有两个),而已经就位的元素就不会有元素再指向它目前的位置(它不动了,稳了) 考虑一组样例,若干只交换某一个元素就能变成完全相同的序列(交换距离为1),还有若干完全跟这些序列不同的序列。。
如果没法判别这些序列。。
(不能保证劳动成果的交换,我们是不是都不应该考虑呢)
关键是在都不相同的情况下,如果考虑每个单换成有序的, 1 3 2 4
1 3 4 2 我考虑了最后一步是什么操作,好像不太确定。。
一步能变成有序的话,我们不动它,然后变换成最像那个一步变换成有序的序列,如果都变换得很像的话。。最后用所有行的列交换,把若干相同的序列一步交换变成有序 但是对于
2 1 3 4 5 6
1 2 4 3 5 6
1 2 3 4 6 5
谁都变不成谁。。特判吧。。都是一步成仙的,就直接ok好了。。
对于
1 2 3 4
2 3 4 1
3 4 1 2
4 1 2 3
有这种直接有序的组。。先算一下剩下的组单列能不能一步升仙,然后找不到一步升仙的,也找不到像的。。
(最后考虑多个相同组的全行列交换,交换后不满足条件的看能不能单列一步升仙) 我发现这个跟完全有序的组的数量有关。。
假设前面这种组为n,而后面组数量为m,变成一步相似组,m-1,最后来一步交换+1,还是m,但是前面的n组从有序变成了无序
变回来还要+n,所以一共是n+m
如果我们不集体处理的话,后m组就会变成1+(m-1),不动前面的n组就只能组内移动一次,所以如果可能的话是m,不过这很可能导致NO的结果 我觉得题目中最勉强的情况是。。都一步变换成同一个一步成仙型,然后都一步到位?
codeforces724-B. Batch Sort的更多相关文章
- CF724B. Batch Sort[枚举]
B. Batch Sort time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...
- CodeForces 742B Batch Sort
B. Batch Sort time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...
- Batch Sort
Batch Sort time limit per test 2 seconds memory limit per test 256 megabytes input standard input ou ...
- Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined) B. Batch Sort 暴力
B. Batch Sort 题目连接: http://codeforces.com/contest/724/problem/B Description output standard output Y ...
- 【39.77%】【codeforces 724B】Batch Sort
time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...
- Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined) B. Batch Sort
链接 题意:输入n,m,表示一个n行m列的矩阵,每一行数字都是1-m,顺序可能是乱的,每一行可以交换任意2个数的位置,并且可以交换任意2列的所有数 问是否可以使每一行严格递增 思路:暴力枚举所有可能的 ...
- Codeforces Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined) B. Batch Sort(暴力)
传送门 Description You are given a table consisting of n rows and m columns. Numbers in each row form a ...
- codeforces 724B Batch Sort(暴力-列交换一次每行交换一次)
题目链接:http://codeforces.com/problemset/problem/724/B 题目大意: 给出N*M矩阵,对于该矩阵有两种操作: (保证,每行输入的数是 1-m 之间的数且不 ...
- [CF724B]Batch Sort(暴力,思维)
题目链接:http://codeforces.com/contest/724/problem/B 题意:给出n*m的数字阵,每行数都是1-m的全排列,最多可以交换2个数一次,整个矩阵可以交换两列一次. ...
随机推荐
- nginx 原理&知识
2015年6月4日 17:04:20 星期四 发现两个关于nginx原理的系列文章, 非常好 http://blog.sina.com.cn/s/blog_6d579ff40100wi7p.html ...
- Qt 文件处理
1.删除目录下所有的文件 void deleteAllFiles(const QString& fileDir) { QDir dir(fileDir); if(!dir.exists()) ...
- 一名Delphi程序员的开发习惯
一名Delphi程序员的开发习惯 有关开发习惯的一些想法,如鲠在喉,不吐不快.究其发贴动机,当然不排除有骗取参与分的可能,但另一方面,也希望能给同行(念Xing)者提供一些 建议,或者参考(希望不是误 ...
- 让最新官方编译的 ffmpeg 在 XP 上 跑起来
下载 fix-ffmpeg-bin.7z , 解压到 ffmpeg 的 bin 目录下, 运行 fixff.cmd 即可. fix-ffmpeg-bin.7z FT ft[]={ {"_wf ...
- WCF服务与WCF数据服务的区别
问: Hi, I am newbie to wcf programming and a little bit confused between WCF Service and WCF Data Se ...
- asp.net mvc在Model中控制日期格式
这是默认的日期格式如下图:
- September 19th 2016 Week 39th Monday
We come nearest to the great when we are great in humility. 我们最为谦逊的时候越接近伟大. When you are powerful en ...
- ios layer 动画-(transform.rotation篇)
x轴旋转: CABasicAnimation *theAnimation; theAnimation=[CABasicAnimation animationWithKeyPath:@"tra ...
- Hive学习路线图(转)
Hadoophivehqlroadmap学习路线图 1 Comment Hive学习路线图 Hadoop家族系列文章,主要介绍Hadoop家族产品,常用的项目包括Hadoop, Hive, Pig ...
- 一般处理程序获取session值
1.要在一般处理程序中获取其他页面的session值,需要引用名空间: using System.Web.SessionState; 2.然后继承一个接口:IRequiresSessionState, ...