平板涂色

题目描述

CE数码公司开发了一种名为自动涂色机(APM)的产品。它能用预定的颜色给一块由不同尺寸且互不覆盖的矩形构成的平板涂色。

为了涂色,APM需要使用一组刷子。每个刷子涂一种不同的颜色C。APM拿起一把有颜色C的刷子,并给所有颜色为C且符合下面限制的矩形涂色:

为了避免颜料渗漏使颜色混合,一个矩形只能在所有紧靠它上方的矩形涂色后,才能涂色。例如图中矩形F必须在C和D涂色后才能涂色。注意,每一个矩形必须立刻涂满,不能只涂一部分。

写一个程序求一个使APM拿起刷子次数最少的涂色方案。注意,如果一把刷子被拿起超过一次,则每一次都必须记入总数中。

输入输出格式

输入格式:

第一行为矩形的个数N。下面有N行描述了N个矩形。每个矩形有5个整数描述,左上角的y坐标和x坐标,右下角的y坐标和x坐标,以及预定颜色。

颜色号为1到20的整数。

平板的左上角坐标总是(0, 0)。

坐标的范围是0..99。

N小于16。 

输出格式:

文件中记录拿起刷子的最少次数。

输入输出样例

输入样例#1: 

7
0 0 2 2 1
0 2 1 6 2
2 0 4 2 1
1 2 4 4 2
1 4 3 6 1
4 0 6 4 1
3 4 6 6 2

输出样例#1: 

3

其实这道题就是一道妥妥的深搜,但还有一群大佬用DP,诶(其实我不打DP是因为,我根本就不会⊙﹏⊙),我们发现这道题有一个坑,如果上面没有涂,就要先涂上面的。
代码:
#include<bits/stdc++.h>
using namespace std;
struct str
{int a1,a2,b1,b2,color;
}a[111000];
int b1[11000]={0};//有没有涂
int b[110][110],n,m,ans=999;
int b2[11000];//颜色数量 
int cmp(str x,str y)//排序 
{if(x.a1!=y.a1) return x.a1<y.a1;//在排横列 return x.a2<y.a2;//先排纵列
}
bool cha(int x)
{for(int i=0;i<n;i++){if(b[x][i]&&!b1[i]) return false;//上面没涂,反回false}return true;//反回true
}
void dfs(int x,int ji_lu,int sum)
{if(x>=ans)//如果当前的值大于你要找的值,那就不用找了呢!O(∩_∩)O~~ {return ;}if(sum==n)//涂完了{ans=x;return ;}for(int i=0;i<m;i++)//枚举每一种颜色 {int h=0;if(b2[i]&&i!=ji_lu)//可以涂,有颜色涂,没有被涂过 {for(int j=0;j<n;j++){//cha函数判断上面有没有被涂(颜色) if(!b1[j]&&a[j].color==i&&cha(j))//如果没涂过,且能涂 {b1[j]=1;//记录 h++;}else if(b1[j]&&a[j].color==i) b1[j]++;}if(h>0)//如果被涂了 {dfs(x+1,i,sum+h);//进行下一步 }for(int j=n-1;j>=0;j--)//回溯,不能上色 {if(b1[j]==1&&a[j].color==i&&cha(j)){b1[j]=0;h--;}else if(b1[j]>1&&a[j].color==i){b1[j]--;}}}}
}
int main()
{cin>>n;for(int i=0;i<n;i++){cin>>a[i].a1>>a[i].a2>>a[i].b1>>a[i].b2>>a[i].color;b2[a[i].color]++;//颜色的数量 }m=19;//从零开始 sort(a,a+n,cmp);//应为蒟蒻不会拓扑排序所以先排一下 for(int i=1;i<n;i++){for(int j=i-1;j>=0;j--){if(a[i].a1==a[j].b1&&((a[i].a2>=a[j].a2&&a[i].a2<=a[j].b2)||(a[i].b2>=a[j].a2&&a[i].b2<=a[j].b2))){b[i][j]=1;//如果i块的最上面,且紧邻j块最下面,并且两砖横坐标有重叠部分,即i块为j块,紧邻的那块砖}}}dfs(0,0,0);cout<<ans;
}

  做完之后,我只想去出题人面前说一句话:午时已到。



转载于:https://www.cnblogs.com/dai-jia-ye/p/9323687.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/397503.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

UVA - 1388 Graveyard 【数学】

题目链接 题意&#xff1a; 给一个周长为10000的圆&#xff0c;一开始有n个距离相等的点&#xff0c; 现在要添加m个点使其仍旧保持距离相等的状态&#xff0c;问最小的移动距离。 思路&#xff1a; 遍历原来的每一个点&#xff0c;找出离他最近的新的位置。 #include <map&…

Android API中被忽略的几个函数接口

1. MotionEvent的几个函数 下面的方法都支持多点触摸&#xff0c;即可以对单个触摸点调用下面的方法 1.1 getPressure() 这个api 可以获取到手指触摸屏幕时候的压力,但是需要硬件和驱动支持... 它有助于我们做出更加拟物化的设计&#xff0c;比如&#xff1a; 1. 手绘。可以根据…

error while loading shared libraries: libstdc++.so.6: cannot open shared object file

查看谁提供这个.so yum whatprovides libstdc.so.6 yum install libstdc-4.8.5-28.el7.i686 #安装上边查出来的.so 此时如果出错&#xff0c;最后一行是libstdc-4.8.5-28.el7.i686 ! libstdc-4.8.5-11.el7.x86_64 yum update libstdc-4.8.5-11.el7.x86_64 #更新一下,这个是上…

【转】为控制台窗口建立消息队列

介绍Windows的窗口、消息、子类化和超类化 这篇文章本来只是想介绍一下子类化和超类化这两个比较“生僻”的名词。为了叙述的完整性而讨论了Windows的窗口和消息&#xff0c;也简要讨论了进程和线程。子类化&#xff08;Subclassing&#xff09;和超类化&#xff08;Superclass…

hightmaps 按地图上显示的统计数据

离extjs 至 easyui 到html5到hightchars 再到hightmaps。Exjts和easyui很相似&#xff0c;extjs是重量级的&#xff0c;easyui轻量级的。比extjs容易上手。照着demo改就能够开发了。easyui入门demo见&#xff1a;easyui-demo&#xff0c;或者到官网http://www.jeasyui.com/&…

python pytorch 版本,python 如何查看pytorch版本

看代码吧~import torchprint(torch.__version__)补充&#xff1a;pytorch不同版本安装以及版本查看一&#xff1a;基于conda安装conda create --name pytorch_learn python3.6.7#创建一个名为pytorch_learn的环境source activate pytorch_learn #进入环境conda install pytorch…

Unity WebGL 窗口自适应

unity 打包好WebGL后&#xff0c;用文本编辑器编辑打包生成的 index.html 文件 在生成的html里面修改代码<script type"text/javascript">    function Reset() {       var canvas document.getElementById("#canvas");        …

python 会增加内存吗,Python+不断增加的内存分配

我正在写一个模块来训练一个大型数据集上的ML模型——它包括0.6米的数据点&#xff0c;每个数据点的维度都是0.15米。我在加载数据集本身时遇到了问题。(全是numpy数组)下面是一个代码片段(它复制了实际代码的主要行为)&#xff1a;import numpyimport psutilFV_length 150000…

非IT人士的云栖酱油之行 (程序猿迷妹的云栖之行)

摘要&#xff1a; 熟悉我的人都知道&#xff0c;我是一个贪玩儿且不学无术的姑娘&#xff0c;对于互联网我也是知之甚少&#xff1b;这次去到杭州参加阿里巴巴集团主办的为期4天的科技大会也是很例外&#xff1b;但是不得不说这次的会议真是让我很震惊。今天我就和大家分享一下…

MySQL 全文搜索支持, mysql 5.6.4支持Innodb的全文检索和类memcache的nosql支持

背景&#xff1a;搞个个人博客的全文搜索得用like啥的&#xff0c;现在mysql版本号已经大于5.6.4了也就支持了innodb的全文搜索了&#xff0c;刚查了下目前版本号都到MySQL Community Server 5.6.19 了&#xff0c;所以&#xff0c;一些小的应用可以用它做全文搜索了&#xff0…

搭建基于Jenkins的CI服务器

安装Jenkins和创建任务这些操作网上一搜一大把&#xff0c;这里就没必要写了&#xff0c;直接就开始编译、单元测试&#xff0c;覆盖&#xff0c;git提交触发构建&#xff0c;构建失败发送给提交人邮件。 因为项目比较复杂&#xff0c;为了懒省事我直接在CI服务器上安装了visua…

php打补丁,PHPMailer库打补丁后漏洞仍然存在,怎么解?

开源PHPMailer库被披露存有一个严重的远程代码执行漏洞。这个漏洞在被修补后&#xff0c;又进行了二次修复&#xff0c;因为第一次没有充分解决问题。那么&#xff0c;这个漏洞是如何工作的&#xff1f;为什么原始补丁没有解决问题&#xff1f;Michael Cobb&#xff1a;代码库和…

Ubuntu下安装jdk经验分享

Ubuntu下安装jdk经验分享http://www.jb51.net/article/55131.htm转载于:https://www.cnblogs.com/kangtuohongwai/p/6002555.html

BZOJ 1270: [BeijingWc2008]雷涛的小猫( dp )

简单的dp..dp(i,j) max(dp(x,y))cnt[i][j], (x,y)->(i,j)是合法路径.设f(i) max(dp(x,y))(1≤x≤N, 1≤y≤i), g(i,j) max(dp(i, k))(1≤k≤j)那么dp(i,j) max(f(jdelta), g(i,j1))cnt[i][j]. 递推即可. 时间复杂度O(NH)----------------------------------------------…

【校招面试 之 C/C++】第12题 C++ 重载、重写和重定义

1、成员函数重载特征&#xff1a; a.相同的范围&#xff08;在同一个类中&#xff09;&#xff1b; b.函数名字相同&#xff1b; c.参数不同&#xff08;参数个数不同或者参数类型不同&#xff0c;但是返回值不同不能使重载&#xff09;&#xff1b; d.virtual关键字可有可无…

mac php5.6.30与php7共存,认识Homebrew以及在Mac上同时安装PHP5及PHP7

Homebrew几乎是Mac上必备的软件&#xff0c;用于下载安装和管理其他软件。尤其对于程序员&#xff0c;讲真&#xff0c;本人到现在仍然不知道在Mac上如何不借助Homebrew来搭建php-apache-mysql开发环境。认识HomebrewHomebrew是一个开源项目&#xff0c;据说它的作者曾经去谷歌…

POJ 1141

题意&#xff1a;给出一个表达式的子序列&#xff0c;要你填充这个序列&#xff0c;保证最终形成的序列长度最短&#xff0c;也就是添加的括号最少 这个子序列要遵循括号匹配的原则。 分析&#xff1a;转移方程dp[i][j]min(dp[i][k],dp[k1][j]).i<k<j.dp[1][1]1; dp[i][j…

PHP array_count_values() 函数用于统计数组中所有值出现的次数。

定义和用法 array_count_values() 函数用于统计数组中所有值出现的次数。 本函数返回一个数组&#xff0c;其元素的键名是原数组的值&#xff0c;键值是该值在原数组中出现的次数。 语法 array_count_values(array) 参数 描述 array 必需。规定输入的数组。 例子 <?php …

SpringDay01

一&#xff1a;什么是Spring。 简单的理解就是一个可以装web层&#xff0c; service层&#xff0c; dao层&#xff0c;这三层对象的容器。 二&#xff1a;Spring搭建 1.导包&#xff1a;核心四个包和log4j两个包 2.注册对象&#xff1a;User类 3.书写配置注册对象到容器 a>导…

bom_clear.php,thinkphp清除BOM方法

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼在utf-8编码文件中BOM在文件头部&#xff0c;占用三个字节&#xff0c;用来标示该文件属于utf-8编码&#xff0c;现在已经有很多软件识别bom头&#xff0c;但是还有些不能识别bom头&#xff0c;比如PHP就不能识别bom头&#xff0c;…