想着想着就忘了有什么问题没解决,坑啊

一开始读错题意了,而且一着急写了两大段差不多的代码,冗余度啊,不说了。。

显然的一点,给的数据是绝对离散的,每行都是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的更多相关文章

  1. CF724B. Batch Sort[枚举]

    B. Batch Sort time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...

  2. CodeForces 742B Batch Sort

    B. Batch Sort time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...

  3. Batch Sort

    Batch Sort time limit per test 2 seconds memory limit per test 256 megabytes input standard input ou ...

  4. 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 ...

  5. 【39.77%】【codeforces 724B】Batch Sort

    time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...

  6. Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined) B. Batch Sort

    链接 题意:输入n,m,表示一个n行m列的矩阵,每一行数字都是1-m,顺序可能是乱的,每一行可以交换任意2个数的位置,并且可以交换任意2列的所有数 问是否可以使每一行严格递增 思路:暴力枚举所有可能的 ...

  7. 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 ...

  8. codeforces 724B Batch Sort(暴力-列交换一次每行交换一次)

    题目链接:http://codeforces.com/problemset/problem/724/B 题目大意: 给出N*M矩阵,对于该矩阵有两种操作: (保证,每行输入的数是 1-m 之间的数且不 ...

  9. [CF724B]Batch Sort(暴力,思维)

    题目链接:http://codeforces.com/contest/724/problem/B 题意:给出n*m的数字阵,每行数都是1-m的全排列,最多可以交换2个数一次,整个矩阵可以交换两列一次. ...

随机推荐

  1. cf555b

    题意:按顺序给出多个互不相交的区间(表示一些小岛),和一些可以连接区间的桥,每个桥有固定的长度.区间和桥的数量都是2*10^5. 两个相邻的小岛之间的桥的长度必须小于等于最远点距离,大于等于最近点距离 ...

  2. 项目管理工具~Jira

    作用:工程管理 提交BUG 描述,截图,记录BUG ID 自定义DashBoard 添加Gadget 自定义布局 统计要素 TimeSheet 1.组内人力使用分布 2.员工工作量 Jira 过滤器设 ...

  3. codeforces 496B. Secret Combination 解题报告

    题目链接:http://codeforces.com/problemset/problem/496/B 题目意思:给出 n 位数你,有两种操作:1.将每一位数字加一(当某一位 > 9 时只保存个 ...

  4. 通过configSource提高web.config配置灵活性

    很多时候我们会有这样的情况,开发环境和测试环境中的配置文件是不一样的,最明显的就是数据库连接串,这样,每次我们发布一个测试版本,都要手动去修改一下配置文件,是不是很麻烦的说.其实利用web.confi ...

  5. 【leetcode】 Search a 2D Matrix (easy)

    Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the follo ...

  6. 【python】编码

    来源:廖雪峰 看到一篇很不错的讲python编码的文章,转过来 划重点: unicode是一种统一的编码方式,它将所有的编码方式都统一到了同一套规范中,避免了乱码问题. encode() 表示从 un ...

  7. October 13th 2016 Week 42nd Thursday

    If the world seems cold to you, kindle fires to warm it. 若世界以寒相待,请点燃火堆以温暖相报. Kindle fires to warm th ...

  8. August 30th 2016 Week 36th Tuesday

    If you keep on believing, the dreams that you wish will come true. 如果你坚定信念,就能梦想成真. I always believe ...

  9. Hyper snap

    图像->分辨率,设置成300dpi,一般论文的分辨率要求.

  10. 数独挑战(codevs 2924)

    2924 数独挑战  时间限制: 1 s  空间限制: 1000 KB  题目等级 : 钻石 Diamond 题解  查看运行结果     题目描述 Description “芬兰数学家因卡拉,花费3 ...