GCJ 2009 Round 2 Problem A. Crazy Rows
来源:互联网 发布:租车软件排行知乎 编辑:程序博客网 时间:2024/05/29 02:24
https://code.google.com/codejam/contest/204113/dashboard
题目大意:
给你一个矩阵,让你转化为下三角矩阵,每次只能交换相邻的行,求最小的交换次数。
思路:
一开始觉得记录每一行最后一个1的位置,然后相邻交换排序可以直接冒泡法(甚至可以nlogn的合并排序),结果交上去错的。
想了想因为每一行最后一个1已经满足j<=i了,所以。。(设行i列j)
那么就只好贪心啦,每次选最近的要交换的。
#include<cstdio>#include<algorithm>using namespace std;const int MAXN=50;char matrix[MAXN][MAXN];int a[MAXN];int main(){ freopen("e:\\A-large-practice.in","r",stdin); freopen("e:\\out.out","w",stdout);int T;scanf("%d",&T);for(int kase=1;kase<=T;kase++){int n;scanf("%d",&n);for(int i=1;i<=n;i++)scanf("%s",matrix[i]+1);for(int i=1;i<=n;i++){a[i]=-1;for(int j=1;j<=n;j++){if(matrix[i][j]=='1')a[i]=j;//记录每行最后一个1的位置}}int ans=0;for(int i=1;i<=n;i++){if(a[i] <= i) continue;int j;for(j=i+1;j<=n;j++){if(a[j] <=i)break;}j--;for(;j>=i;j--){swap(a[j],a[j+1]);ans++;}}printf("Case #%d: %d\n",kase,ans);} return 0;}
2 0
- GCJ 2009 Round 2 Problem A. Crazy Rows
- GCJ Round 2 2009 Problem A. Crazy Rows
- GCJ 2009 Round2 Problem A. Crazy Rows
- GCJ 2009 Round2 A (Crazy Rows)
- GCJ--Crazy Rows (2009 Round2 A)
- GCJ 2009 Round2 A Crazy Rows
- GCJ 2009 Problem A. Crazy Rows【位运算要加LL】
- 每天水一水 Crazy Rows (2009 Round2 A) GCJ
- 挑战2.7.2 Round 2 2009 A. Crazy Rows 贪心
- GCJ Crazy Rows
- GCJ Crazy Rows 水题-贪心
- crazy Rows 2009 Round2 A
- Crazy Rows (GoogleCode Jam 2009 Round2 A)
- Code Jam 2009 Round2 Problem A. Crazy Rows —— 贪心
- Crazy Rows————GCJ 2009 Round2A(简单贪心)
- [GCJ] 2011 Round 1A Problem A FreeCell Statistics
- GCJ Round 1A 2008 Problem A. Minimum Scalar Product
- GCJ Round 1A 2008 Problem A. Minimum Scalar Product
- C++中引用传递与指针传递区别(进一步整理)
- BST 二叉搜索树 非指针版
- cocos2dx用jni调用Android函数
- cocos2d-x新建项目
- McBsp接口使用和概念
- GCJ 2009 Round 2 Problem A. Crazy Rows
- PAT (Advanced) 1055. The World's Richest (25)
- XMPP 实现IM(二)——openFire的配置和使用
- 终于可以tftp和nfs向开发板传送文件
- java动态代理(JDK和cglib)
- 使用MegaCli工具查看Raid磁盘阵列状态
- 相同端口的UDP套接字数量过多导致软中断占用CPU利用率高的原因分析
- STM32F103的GPIO 模式区分
- 跳台阶