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. HDU 2069 Coin Change

    Coin Change Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total S ...

  2. Doctor NiGONiGO’s multi-core CPU(最小费用最大流模板)

    题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=693 题意:有一个 k 核的处理器和 n 个工作,全部的工作都须要在一个核上处理一个单位的 ...

  3. ※C++随笔※=>☆C++基础☆=>※№→C++中 #include<>与#include""

    #include<> 使用尖括号表示在包含文件目录中去查找(包含目录是由用户在设置环境时设置的),而不在源文件目录去查找: #include"" 使用双引号则表示首先在 ...

  4. [AngularJS + Webpack] Production Setup

    Using Angular with webpack makes the production build a breeze. Simply alter your webpack configurat ...

  5. C# 二进制替换第一弹 byte 数组替换

    在做通讯相关的数据操作时常常须要用到 byte[]   byte 数组替换操作.比方协义转换相关的 如今提供了几种替换的方法 /// <summary> /// 二进制数据 操作 /// ...

  6. Qt 学习之路 :Qt Quick Controls

    自 QML 第一次发布已经过去一年多的时间,但在企业应用领域,QML 一直没有能够占据一定地位.很大一部分原因是,QML 缺少一些在企业应用中亟需的组件,比如按钮.菜单等.虽然移动领域,这些组件已经变 ...

  7. 使用DBOutputFormat把MapReduce产生的结果集导入到mysql中

    数据在HDFS和关系型数据库之间的迁移,主要有以下两种方式 1.按照数据库要求的文件格式生成文件,然后由数据库提供的导入工具进行导入 2.采用JDBC的方式进行导入 MapReduce默认提供了DBI ...

  8. JAVA学习笔记--二

    一.抽象类: 访问修饰符 abstract class 类名{ } 抽象类和普通类的区别: 1. 抽象类不能被实例化 2. 抽象类一般含有抽象方法 抽象方法:在抽象类中只有方法签名(方法声明),没有方 ...

  9. [原创] Fragment的添加、移除问题

    安卓一直在进化,Fragment就是个好东西,如果早5年做安卓开发,真要麻烦的多. 关于Fragment的讲解,这里很详尽: Android Fragment 真正的完全解析(上) Android F ...

  10. SlidingMenu侧换菜单的导入

    对于Adt-22.3有一种使用SlidingMenu(侧滑菜单的方式),直接加你放到lib文件夹下