http://codeforces.com/contest/394/problem/C

题意:有n*m个骨牌,每个骨牌上有四种样式(“01,10,11,00”),让你重新排列成一个N*M的矩阵,使2*m列的每一列和的最大值最小。

思路:先排序,先正着排全是‘11’的牌,如果在一行,没有排满,用剩下的牌补齐,补齐之后,剩下的每一行都倒着排牌就可以了;如果上面的牌是'10',那么下面的牌是‘01’,上面的牌是‘01‘,那么下面的牌是’10‘;

 #include <cstdio>
#include <cstring>
#include <algorithm>
#define ll long long
#define maxn 1000100
using namespace std; int n,m;
struct node
{
int x,y;
bool operator <(const node &a)const
{
return (x+y)>(a.x+a.y);
}
} p[maxn],q[maxn];
char str[maxn];
int g[][]; int main()
{
while(scanf("%d%d",&n,&m)!=EOF)
{
int cnt=;
getchar();
for(int i=; i<=n; i++)
{
gets(str);
int k=strlen(str);
for(int j=; j<k;)
{
if(str[j]!=' ')
{
p[cnt].x=str[j]-'';
p[cnt++].y=str[j+]-'';
j+=;
}
else
j++;
}
}
sort(p,p+cnt);
int x=,t1=;
bool flag=false;
for(int i=; i<=n; i++)
{
if(!flag)
{
for(int j=; j<m; j++)
{
if(p[x].x==&&p[x].y==)
{
q[t1].x=;
g[i][j]=t1;
q[t1++].y=;
x++;
}
else
{
flag=true;
for(int k=j; k<m; k++)
{
q[t1].x=p[x].x;
g[i][k]=t1;
q[t1++].y=p[x].y;
x++;
}
break;
}
}
}
else
{
for(int j=m-; j>=; j--)
{
int xx=q[g[i-][j]].x;
int yy=q[g[i-][j]].y;
if(xx==&&yy==)
{
if((p[x].x==&&p[x].y==)||(p[x].x==&&p[x].y==))
{
q[t1].x=;
g[i][j]=t1;
q[t1++].y=;
x++;
}
else
{
q[t1].x=p[x].x;
g[i][j]=t1;
q[t1++].y=p[x].y;
x++;
}
}
else if(xx==&&yy==)
{
if((p[x].x==&&p[x].y==)||(p[x].x==&&p[x].y==))
{
q[t1].x=;
g[i][j]=t1;
q[t1++].y=;
x++;
}
else
{
q[t1].x=p[x].x;
g[i][j]=t1;
q[t1++].y=p[x].y;
x++;
}
}
else
{
q[t1].x=p[x].x;
g[i][j]=t1;
q[t1++].y=p[x].y;
x++;
}
}
}
}
for(int i=; i<=n; i++)
{
for(int j=; j<m; j++)
{
printf("%d%d ",q[g[i][j]].x,q[g[i][j]].y);
}
printf("\n");
}
}
return ;
}

cf C. Dominoes的更多相关文章

  1. ORA-00494: enqueue [CF] held for too long (more than 900 seconds) by 'inst 1, osid 5166'

    凌晨收到同事电话,反馈应用程序访问Oracle数据库时报错,当时现场现象确认: 1. 应用程序访问不了数据库,使用SQL Developer测试发现访问不了数据库.报ORA-12570 TNS:pac ...

  2. cf之路,1,Codeforces Round #345 (Div. 2)

     cf之路,1,Codeforces Round #345 (Div. 2) ps:昨天第一次参加cf比赛,比赛之前为了熟悉下cf比赛题目的难度.所以做了round#345连试试水的深浅.....   ...

  3. POJ1717 Dominoes[背包DP]

    Dominoes Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 6731   Accepted: 2234 Descript ...

  4. cf Round 613

    A.Peter and Snow Blower(计算几何) 给定一个点和一个多边形,求出这个多边形绕这个点旋转一圈后形成的面积.保证这个点不在多边形内. 画个图能明白 这个图形是一个圆环,那么就是这个 ...

  5. ARC下OC对象和CF对象之间的桥接(bridge)

    在开发iOS应用程序时我们有时会用到Core Foundation对象简称CF,例如Core Graphics.Core Text,并且我们可能需要将CF对象和OC对象进行互相转化,我们知道,ARC环 ...

  6. [Recommendation System] 推荐系统之协同过滤(CF)算法详解和实现

    1 集体智慧和协同过滤 1.1 什么是集体智慧(社会计算)? 集体智慧 (Collective Intelligence) 并不是 Web2.0 时代特有的,只是在 Web2.0 时代,大家在 Web ...

  7. CF memsql Start[c]UP 2.0 A

    CF memsql Start[c]UP 2.0 A A. Golden System time limit per test 1 second memory limit per test 256 m ...

  8. CF memsql Start[c]UP 2.0 B

    CF memsql Start[c]UP 2.0 B B. Distributed Join time limit per test 1 second memory limit per test 25 ...

  9. 2016 Multi-University Training Contest 1 I. Solid Dominoes Tilings

    Solid Dominoes Tilings Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/O ...

随机推荐

  1. ||和 && 符号的赋值运用(转)

    javascript “||”.“&&”的灵活运用 博客分类: Jquery javascript javascript中运用“||”.“&&”javascript 真 ...

  2. Qt 学习之路:QML 组件

    前面我们简单介绍了几种 QML 的基本元素.QML 可以由这些基本元素组合成一个复杂的元素,方便以后我们的重用.这种组合元素就被称为组件.组件就是一种可重用的元素.QML 提供了很多方法来创建组件.不 ...

  3. Bat命令知识[转]

    基础部分: 一.基础语法: 1.批处理文件是一个".bat"结尾的文本文件,这个文件的每一行都是一条DOS命令.可以使用任何文本文件编辑工具创建和修改. 2.批处理是一种简单的程序 ...

  4. android Services注意地方

    使用service前需要在manifest声明: <manifest ... > ... <application ... > <service android:name ...

  5. ActionScript:Resampling PCM data

    使用基于flash的麦克风录音,如果想在获取完PCM采样数据后,通过Sound马上回放,必须经过resampling.(注意:如果录音是采用的44KHz的话,则不需要) 因此,需要as实现一个简便的函 ...

  6. 如何让 .Net Console 控制台显示界面在最上层

    可以利用 Win32 API 来控制 Console 窗口的 最大化 或 最小化. 废话不多说见以下代码: [DllImport("user32.dll", SetLastErro ...

  7. awk中split函数的用法

    time='12:34:56' echo $time | awk '{split($0,a,":" ); print a[1]}' 12 echo $time | awk '{sp ...

  8. iOS英文 汉化,如调用相册,相机改“cancel”,“photos”为“取消”,“相机”

    调用系统相册.相机发现是英文的系统相簿界面后标题显示“photos”,但是手机语言已经设置显示中文,纠结半天,最终在info.plist设置解决问题. 只需要改三个地方: 1.plist文件中: 2. ...

  9. OC - 27.CATransition

    概述 简介 CATransition又称转场动画,是CAAnimation的子类,可以直接使用 转场动画主要用于为图层提供移入/移出屏幕的动画效果 转场动画常见的应用是UINavigationCont ...

  10. c# web 删除时弹出提示框

    方法1: 在控件中增加属性 <asp:Button ID="btnSub" runat="server" Text="提交" oncl ...