题目

在游戏厅大赚了一笔的Randy 终于赢到了他想要的家具。乘此机会,他想把自己的房间好好整理一

下。

在百货公司,可以买到各种各样正方形的地砖,为了美观起见,Randy 不希望同样颜色的正方形地

砖相邻。所以他找到了Tio 来帮忙解决这件事情。

Tio 很快解决了这个任务。然而,出于某种强迫症,她希望在地上按照长宽划分成网格后,逐行逐

列每一块的颜色组成的序列的字典序最小。她希望你帮忙验证一下她的方案。

分析

贪心,

逐行逐列枚举,

枚举当前点(当前点没有字母)放什么字母,根据最优策略,显然放的字母越小答案越优。

假设枚举到点\((i,j)\),

那么\((i,j)\)的字母一定不能等于\((i,j+1)\)的和\((i-1,j)\)的,

但是如果\((i,j)\)的可以赋值的最优字母等于\((i,j-1)\)的,并且\((i,j-1)\)是某个正方形的右上角,那么就可以将这个正方形扩大,向右下角扩大一格,否则,\((i,j)\)直接赋值。

#include <cmath>
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <queue>
const int maxlongint=2147483647;
const int mo=1000000007;
const int N=105;
using namespace std;
int a[N][N],n,m,b[N][N];
int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
if(!a[i][j])
for(int k=1;k<=4;k++)
if(k!=a[i-1][j] && k!=a[i][j+1])
{
if(b[i][j-1] && k==a[i][j-1] && i+b[i][j-1]+1-1<=n)
{
int len=b[i][j-1]+1;
for(int l=i;l<=i+len-1;l++)
a[l][j]=k;
for(int l=j-len+1;l<=j;l++)
a[i+len-1][l]=k;
b[i][j]=b[i][j-1]+1;
break;
}
else
if(k!=a[i][j-1])
{
a[i][j]=k;
b[i][j]=1;
break;
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++) printf("%c",a[i][j]+64);
cout<<endl;
}
}

【NOIP2014模拟8.25】地砖铺设的更多相关文章

  1. 【NOIP2014模拟8.25】设备塔

    题目 为了封印辉之环,古代塞姆利亚大陆的人民在异空间中建造了一座设备塔. 简单的说,这座设备塔是一个漂浮在异空间中的圆柱体,圆柱体两头的圆是计算核心,而侧面则是 传输信息所用的数据通道,划分成N *m ...

  2. JZOJ 3929. 【NOIP2014模拟11.6】创世纪

    3929. [NOIP2014模拟11.6]创世纪 (Standard IO) Time Limits: 1000 ms Memory Limits: 65536 KB Description 上帝手 ...

  3. JZOJ 3928. 【NOIP2014模拟11.6】射击

    3928. [NOIP2014模拟11.6]射击 (Standard IO) Time Limits: 1000 ms Memory Limits: 65536 KB Description 有问题, ...

  4. JZOJ 3927. 【NOIP2014模拟11.6】可见点数

    3927. [NOIP2014模拟11.6]可见点数 (Standard IO) Time Limits: 1000 ms Memory Limits: 65536 KB Description ZP ...

  5. NOIP模拟测试2-5

    该补一下以前挖的坑了 先总结一下 第二次 T1 搜索+剪枝 #include<cstdio> #include<iostream> #define ll long long u ...

  6. 【题解】 2月19日 厦门双十中学NOIP2014模拟D2 T1 采药人的切题规则

    Made by 退役的OIer 第一次写博客,写得不好 or 不清楚的可以 在下方留言,我会尽量改进的! 好啦~~~回到正题,题面见传送门 [问题描述] 采药人最近在认真切题,但回旋的转盘时常在眼前浮 ...

  7. 【模拟7.25】回家(tarjan V-DCC点双连通分量的求法及缩点 求割点)模板题

    作为一道板子题放在第二题令人身心愉悦,不到一个小时码完连对拍都没打. 关于tarjan割点的注意事项: 1.在该板子中我们求的是V-DCC,而不是缩点,V-DCC最少有两个点组成,表示出掉一个块里的任 ...

  8. 【NOIP2014模拟赛No.1】我要的幸福

    OJ题号:ZHOJ1297 思路:搜索. 先预处理注定不能走的路径,然后dfs可以走的路径. #pragma GCC optimize ("O2") #include<cst ...

  9. HNOI模拟 Day3.25 By Yqc

    怕老婆 [问题描述] 有一天hzy9819,来到了一座大城市拥有了属于他自己的一双滑板鞋.但是他还是不满足想要拥有属于自己的一栋楼,他来到了一条宽敞的大道上,一个一个记录着这些楼的层数以方便自己选择. ...

随机推荐

  1. arguments对象的callee属性详解

    在函数内部,有两个特殊的对象:arguments和this. argument对象有一个名叫callee的属性,该属性是一个指针,指向拥有这个arguments对象的函数.请看下面这个非常经典的阶乘函 ...

  2. Prometheus在Kubernetes下的服务发现机制

    Prometheus作为容器监控领域的事实标准,随着以Kubernetes为核心的云原生热潮的兴起,已经得到了广泛的应用部署.灵活的服务发现机制是Prometheus和Kubernetes两者得以连接 ...

  3. Spring MVC -- 去掉静态资源的拦截

    <!-- springmvc的前端控制器 --> <servlet> <servlet-name>springMVC</servlet-name> &l ...

  4. H3C版本升级

    H3C S5500和S3100都可以通过TFTP方式进行升级,1.设置交换机的vlan1的ip地址,如10.10.10.2/242.设置电脑和交换机连接的ip地址,如10.10.10.1/243.在交 ...

  5. JAVA 编程思想一

    1: 动态绑定和静态绑定 使用private或static或final修饰的变量或者方法,使用静态绑定.而虚方法(可以被子类重写的方法)则会根据运行时的对象进行动态绑定: 静态绑定使用类信息来完成,而 ...

  6. 【miscellaneous】星光级超低照度摄像机技术分析

    低照度摄像机采用了超灵敏度图像传感器和独有的电子倍增和噪点控制技术能够极大地提高摄像机的灵敏度,并且具备24小时全彩色实时效果,绝无普通低照度摄像机出现的拖尾现象,以满足对夜间高品质监控的需求.    ...

  7. 常用DOS命令及编程软件fa

    1.常用的dos命令(应用) 在接触集成开发环境之前,我们需要使用命令行窗口对Java程序进行编译和运行,所以需要知道dos命令. 打开命令行窗口的方式:win + r打开运行窗口对java程序进行编 ...

  8. Maven - Maven3实战学习笔记(2)坐标和依赖

    1.maven坐标元素 maven坐标元素包括:groupId.artifactId.version.packaging.classifier. classifier:定义输出的附属构件.groupI ...

  9. nodejs 写服务器解决中文乱码问题

    nodejs 写服务器解决中文乱码问题:https://blog.csdn.net/worldmakewayfordream/article/details/77483423     本文链接:htt ...

  10. mysql for update 高并发 死锁研究

    mysql for update语句     https://www.cnblogs.com/jtlgb/p/8359266.html For update带来的思考 http://www.cnblo ...