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. [Reactive Programming] Using an event stream of double clicks -- buffer()

    See a practical example of reactive programming in JavaScript and the DOM. Learn how to detect doubl ...

  2. iOS--日历事件的获取和添加

    日历添加事件 EKEventStore* eventStore = [[EKEventStore alloc] init];//获取日历类 EKEvent *event = [EKEvent even ...

  3. #IOS-navigation中左滑pop的三种方法

    IOS-navigation中左滑pop的三种方法 系统自带pop方法 如果我们没有对navigation中的back按钮进行自定义,我们可以直接使用系统自带的左滑pop方法.但是如果我们对back按 ...

  4. android开发之调试技巧 分类: android 学习笔记 2015-07-18 21:30 140人阅读 评论(0) 收藏

    我们都知道,android的调试打了断点之后运行时要使用debug as->android application 但是这样的运行效率非常低,那么我们有没有快速的方法呢? 当然有. 我们打完断点 ...

  5. Java基础知识强化之集合框架笔记16:List集合的特有功能概述和测试

    1. List集合的特有功能概述: (1)添加功能: void add(int index, Object element):在指定位置添加元素 (2)获取功能: Object get(int ind ...

  6. svn 树冲突

    情况类似如下:(其中 removed_directory 是你工作的某个目录)  代码如下 复制代码 $svn statusD     C removed_directory>   local ...

  7. mysql 安装配置详解

    作为演示,是不可能完全模拟到生产环境的,因此不可能尽善尽美.由于是在virtualbox里面的centos6.5最小化安装版中安装配置mysql,因此前期的准备工作有很多,那么开始吧.添加一块硬盘,用 ...

  8. 使用CDN加载jQuery类库后备代码

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></ ...

  9. Oracle 10G强大的SQL优化工具:SQL Tuning Advisor

    p { margin-bottom: 0.25cm; direction: ltr; color: rgb(0, 0, 0); line-height: 120%; orphans: 2; widow ...

  10. 解决UITableView中Cell重用机制导致内容出错的方法总结

    UITableView继承自UIScrollview,是苹果为我们封装好的一个基于scroll的控件.上面主要是一个个的 UITableViewCell,可以让UITableViewCell响应一些点 ...