uvalive 6588
2014-10-06 18:55
253 查看
题目链接:点击打开链接
题意:通过不大于9^6次的等区间交换使得原来一个乱序数列变成一个顺序数列。
思路:可证对于任意一个数都可以在两步之内将之移动到指定位置,所以可以用o(n^2)的复杂度暴力求姐。
cpp:
题意:通过不大于9^6次的等区间交换使得原来一个乱序数列变成一个顺序数列。
思路:可证对于任意一个数都可以在两步之内将之移动到指定位置,所以可以用o(n^2)的复杂度暴力求姐。
cpp:
#include <cstdio> #include <map> #include <iostream> #include <cstring> #include <cmath> #include <queue> #include <algorithm> #include <vector> using namespace std; int data[10010],n; struct node{ int a,b; }; vector<node> ans; int find(int x) { for(int i=1;i<n+1;i++) { if(data[i]==x) { return i; } } return 0; } void solve(int st,int ed) { node tp; tp.a=st;tp.b=ed; ans.push_back(tp); int mid=st+ed; int l=ed-st+1; l=l/2; mid=mid/2; for(int i=0;i<l;i++) { swap(data[i+st],data[i+l+st]); } } int main() { int T; //freopen("data.in","r",stdin); //freopen("data.out","w",stdout); scanf("%d",&T); while (T--){ ans.clear(); scanf("%d",&n); for(int i=1;i<=n;i++){ scanf("%d",data+i); } for(int i=1;i<=n;i++){ // for(int j=1;j<=n;j++) printf("%d ",data[j]);puts(""); int x=find(i),l=n+1-i; if(x==i) {continue;} if((l/2)+i<x){ int p=x-(x-(i+(l/2)))*2+1; solve(p,x); solve(i,(l/2)*2+i-1); } else { int p=x-i+x-1; solve(i,p); } } printf("%d\n",ans.size()); for(int i=0;i<ans.size();i++) { printf("%d %d\n",ans[i].a,ans[i].b); } } return 0; }
相关文章推荐
- UVALive 6588 Crane (思维+贪心) -- 解题报告
- UVaLive 6588 && Gym 100299I (贪心+构造)
- UVA 1611&& UVALive 6588 Crane (贪心思路)
- I - Crane UVALive - 6588
- Duopoly UVALive - 3487
- UVALive - 7511 Multiplication Table (模拟)
- UVALive 7226 Coin Swap
- UVALive - 5052 Genome Evolution 贪心
- UVALive - 7722 The 2016 ACM-ICPC Asia Jakarta Regional Contest L - Tale of a Happy Man dp+线段树
- uva live 2326 - Moving Tables
- UVALive 5733|Iterated Difference|暴力
- UVALive-4839 HDU-3686 Traffic Real Time Query System 题解
- UVALive2363 POJ1005 HDU1065 ZOJ1049 I Think I Need a Houseboat【数学计算+水题】
- UVALive 7661 The Size of the Smallest Hole(dfs)
- UVALive2953 POJ1775 ZOJ2358 Sum of Factorials【打表+暴力+水题】
- UVALive - 7454 Parentheses 栈应用
- UVALive 3634 熟悉一下STL
- UVALive - 7008 Tactical Multiple Defense System——二分图最大匹配
- UVAlive 5792 Diccionário Portuñol (Trie)
- 【UVALive】2147 - Push!!(bfs+dfs+优先队列)