cf C. Dominoes
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的更多相关文章
- 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 ...
- cf之路,1,Codeforces Round #345 (Div. 2)
cf之路,1,Codeforces Round #345 (Div. 2) ps:昨天第一次参加cf比赛,比赛之前为了熟悉下cf比赛题目的难度.所以做了round#345连试试水的深浅..... ...
- POJ1717 Dominoes[背包DP]
Dominoes Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 6731 Accepted: 2234 Descript ...
- cf Round 613
A.Peter and Snow Blower(计算几何) 给定一个点和一个多边形,求出这个多边形绕这个点旋转一圈后形成的面积.保证这个点不在多边形内. 画个图能明白 这个图形是一个圆环,那么就是这个 ...
- ARC下OC对象和CF对象之间的桥接(bridge)
在开发iOS应用程序时我们有时会用到Core Foundation对象简称CF,例如Core Graphics.Core Text,并且我们可能需要将CF对象和OC对象进行互相转化,我们知道,ARC环 ...
- [Recommendation System] 推荐系统之协同过滤(CF)算法详解和实现
1 集体智慧和协同过滤 1.1 什么是集体智慧(社会计算)? 集体智慧 (Collective Intelligence) 并不是 Web2.0 时代特有的,只是在 Web2.0 时代,大家在 Web ...
- 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 ...
- 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 ...
- 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 ...
随机推荐
- ||和 && 符号的赋值运用(转)
javascript “||”.“&&”的灵活运用 博客分类: Jquery javascript javascript中运用“||”.“&&”javascript 真 ...
- Qt 学习之路:QML 组件
前面我们简单介绍了几种 QML 的基本元素.QML 可以由这些基本元素组合成一个复杂的元素,方便以后我们的重用.这种组合元素就被称为组件.组件就是一种可重用的元素.QML 提供了很多方法来创建组件.不 ...
- Bat命令知识[转]
基础部分: 一.基础语法: 1.批处理文件是一个".bat"结尾的文本文件,这个文件的每一行都是一条DOS命令.可以使用任何文本文件编辑工具创建和修改. 2.批处理是一种简单的程序 ...
- android Services注意地方
使用service前需要在manifest声明: <manifest ... > ... <application ... > <service android:name ...
- ActionScript:Resampling PCM data
使用基于flash的麦克风录音,如果想在获取完PCM采样数据后,通过Sound马上回放,必须经过resampling.(注意:如果录音是采用的44KHz的话,则不需要) 因此,需要as实现一个简便的函 ...
- 如何让 .Net Console 控制台显示界面在最上层
可以利用 Win32 API 来控制 Console 窗口的 最大化 或 最小化. 废话不多说见以下代码: [DllImport("user32.dll", SetLastErro ...
- awk中split函数的用法
time='12:34:56' echo $time | awk '{split($0,a,":" ); print a[1]}' 12 echo $time | awk '{sp ...
- iOS英文 汉化,如调用相册,相机改“cancel”,“photos”为“取消”,“相机”
调用系统相册.相机发现是英文的系统相簿界面后标题显示“photos”,但是手机语言已经设置显示中文,纠结半天,最终在info.plist设置解决问题. 只需要改三个地方: 1.plist文件中: 2. ...
- OC - 27.CATransition
概述 简介 CATransition又称转场动画,是CAAnimation的子类,可以直接使用 转场动画主要用于为图层提供移入/移出屏幕的动画效果 转场动画常见的应用是UINavigationCont ...
- c# web 删除时弹出提示框
方法1: 在控件中增加属性 <asp:Button ID="btnSub" runat="server" Text="提交" oncl ...