HDU 5113 Black And White (dfs)

网络安全ctf常用解码工具cyberchef本地安装 CyberChef是一款由英国政府通信总部(GCHQ)开源的网络数据处理工具,被誉为“网络瑞士军刀”。以下是具体介绍: - **核心功能**: - **加密与解密**:支持AES、DES、RC4等多种算法,还可自定义密钥和IV。 - **编码转换**:能实现Base64、Hex、URL编码一键互转,也可处理EBCDIC等冷门编码。 - **数据解析**:可从IPv6地址到X.509证书,从JSON到压缩包等进行层层拆解。 - **网络分析**:能解析HTTP头、提取Shellcode,还可反混淆恶意脚本。 - **其他功能**:包含时间戳转换、文件压缩等日常办公功能,也有OCR识别、图片隐写分析等特色功能。 - **操作方式**:通过“菜谱”(Recipe)系统,以拖拽式组合功能,无需写代码即可完成复杂任务,且能实时预览结果。 - **隐私与安全性**:所有操作在浏览器本地完成,数据不上传,保障了用户的隐私安全。 立即下载

Black And White

Time Limit: 2000/2000 MS (Java/Others)    Memory Limit: 512000/512000 K (Java/Others)
Total Submission(s): 1707    Accepted Submission(s): 462
Special Judge


Problem Description
In mathematics, the four color theorem, or the four color map theorem, states that, given any separation of a plane into contiguous regions, producing a figure called a map, no more than four colors are required to color the regions of the map so that no two adjacent regions have the same color.
— Wikipedia, the free encyclopedia

In this problem, you have to solve the 4-color problem. Hey, I’m just joking.

You are asked to solve a similar problem:

Color an N × M chessboard with K colors numbered from 1 to K such that no two adjacent cells have the same color (two cells are adjacent if they share an edge). The i-th color should be used in exactly c i cells.

Matt hopes you can tell him a possible coloring.
 

Input
The first line contains only one integer T (1 ≤ T ≤ 5000), which indicates the number of test cases.

For each test case, the first line contains three integers: N, M, K (0 < N, M ≤ 5, 0 < K ≤ N × M ).

The second line contains K integers c i (c i > 0), denoting the number of cells where the i-th color should be used.

It’s guaranteed that c 1 + c 2 + · · · + c K = N × M .
 

Output
For each test case, the first line contains “Case #x:”, where x is the case number (starting from 1). 

In the second line, output “NO” if there is no coloring satisfying the requirements. Otherwise, output “YES” in one line. Each of the following N lines contains M numbers seperated by single whitespace, denoting the color of the cells.

If there are multiple solutions, output any of them.
 

Sample Input
  
4 1 5 2 4 1 3 3 4 1 2 2 4 2 3 3 2 2 2 3 2 3 2 2 2
 

Sample Output
  
Case #1: NO Case #2: YES 4 3 4 2 1 2 4 3 4 Case #3: YES 1 2 3 2 3 1 Case #4: YES 1 2 2 3 3 1
 

Source
 

Recommend
liuyiding   |   We have carefully selected several similar problems for you:   5426  5425  5424  5423  5422 
 


自以为找规律很完美,wa成狗,搜了题解 -> 搜索



#pragma comment(linker, "/STACK:1024000000,1024000000")
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<queue>
#include<stack>
#include<vector>
#include<set>
#include<map>

#define L(x) (x<<1)
#define R(x) (x<<1|1)
#define MID(x,y) ((x+y)>>1)

#define bug printf("hihi\n")

#define eps 1e-8

typedef long long ll;

using namespace std;

#define mod 1000000007

#define INF 0x3f3f3f3f

#define N 7

int a[N][N],num[N];
int k;
int ans[N][N];
bool flag;
int n,m;

inline bool judge(int x,int y,int i)
{
     if(ans[x-1][y]==i||ans[x][y-1]==i) return false;
     return true;
}

void dfs(int x,int y,int res)
{
      if(res==0) flag=true;
      if(flag) return ;
      if(y==m+1)
      {
          x++;
          y=1;
      }
      for(int i=1;i<=k;i++)
      {
          if((res+1)/2<num[i]) return ;
      }
      for(int i=1;i<=k;i++)
        if(num[i]&&judge(x,y,i))
      {
             ans[x][y]=i;
             num[i]--;
             dfs(x,y+1,res-1);
             if(flag) return ;
             ans[x][y]=0;
             num[i]++;
      }
}

int main()
{
    int i,j,t,ca=0;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d%d%d",&n,&m,&k);
        memset(ans,0,sizeof(ans));
        for(i=1;i<=k;i++)
            scanf("%d",&num[i]);
        flag=false;
        dfs(1,1,n*m);
        printf("Case #%d:\n",++ca);
        if(!flag)
            printf("NO\n");
        else
        {
            printf("YES\n");
            for(int i=1;i<=n;i++)
            {
                for(j=1;j<=m;j++)
                {
                    if(j!=1) printf(" ");
                    printf("%d",ans[i][j]);
                }
                printf("\n");
            }
        }
    }
    return 0;
}





渲染TA实战:冰面效果制作分享 这里画一张图:我们可以看到,如果深度图的范围没有进过缩放,那就是0-1,但是归一化的-viewDir的向量长度为1,如果-viewDir不和表面垂直(这是绝大多数的情况),那么viewDir.z的分量就是一个不定值,我们不好确定需要走多少步,viewDir才能和底面相交。然后我们需要冰面的Alpha图:因为冰是透明物体,所以相对于Albedo,我们更需要的是一张冰面裂纹的蒙版图,这张图需要记录冰面的裂纹走向和深浅、冰封的气泡、以及因为压力或气体等原因产生的类似雾的效果。 阅读详情

相关推荐

模糊控制——基本原理(附MATLAB程序)

模糊化:使用隶属函数将实际输入转换为模糊集合的隶属度值。规则库:利用“如果-那么”规则将模糊输入映射到模糊输出。推理机制:通过规则的模糊化和模糊集合的合成,生成模糊输出。去模糊化:将模糊输出转换为具体的控制信号,常用的方法包括质心法和最大隶属度法。这些步骤综合起来,实现了模糊控制系统对复杂和不确定系统的有效控制。模糊控制系统通过结合模糊逻辑和规则库来处理复杂系统中的不确定性和模糊性。它的核心在于模糊集合和隶属函数,通过推理机处理模糊规则,并最终通过去模糊化生成具体的控制信号。

qq_35623594的博客 5558

某行业攻防培训-----Black & White(图片隐写)

0x01:题目------Black & White 0x02:WR 1.有题目得出,黑和白,可能跟颜色有关系 2.打开图片,很容易发现图片上有一些key样的字母 3.把图片放到软件“Stegsolve图片三色素.jar”中,进行转换 4.使用工具: 点击file—>open图片 打开图片 点击一下左箭头后 0x03:flag/key/ctf key{forensics_is_...

qwsn 2350

ILI9488 TFT屏驱动与触摸协同开发指南

TFT-LCD显示模块是嵌入式人机交互系统的核心外设,其工作原理依赖于专用显示控制器(如ILI9488)对GRAM显存的精确读写,并通过SPI等串行总线接收指令与图像数据。理解RGB接口时序、寄存器初始化流程及DC/CS信号控制逻辑,是实现稳定显示的基础技术前提;而四线电阻式触摸功能则需配合XPT2046类ADC控制器,通过独立SPI或模拟时序完成坐标采集。该方案兼顾低功耗、高集成与工程可移植性,广泛应用于工业HMI、仪器仪表及STM32F407等MCU平台的教学与产品开发。本文围绕3.5英寸320×480

weixin_33814090的博客 149

HDOJ 5113 Black And White DFS+剪枝

DFS+剪枝... 在每次DFS前,当前棋盘的格子数量的一半小于一种颜色的数量时就剪掉 Black And White Time Limit: 2000/2000 MS (Java/Others)    Memory Limit: 512000/512000 K (Java/Others) Total Submission(s): 194    Accepted Submissio

码代码的猿猿 1265

中兴U30air随身WiFi刷机全攻略:从ABD开启到系统调试(附工具包)

本文提供中兴U30air随身WiFi刷机全攻略,从ADB开启到系统调试的详细步骤,包括必备工具清单、ADB调试模式解锁、Bootloader解锁及自定义ROM刷入与调优。适合技术爱好者深度定制设备,提升网络性能和功能扩展。

weixin_29235923的博客 1938

H.264 Profile与Level详解:如何为不同应用场景选择合适的编码配置

本文深入解析了H.264编码标准中的Profile与Level概念,指导开发者如何为不同应用场景选择合适的配置。文章对比了Baseline、Main和High三大Profile的特性与适用场景,并解释了Level如何限定视频的分辨率、帧率与码率上限。通过实战指南,帮助读者在视频通话、在线点播和专业制作等场景中,平衡画质、兼容性与性能,实现高效编码。

rgv2345678的博客 238

隐写术-----黑与白(二)

本人小白一个

qq_41326328的博客 1346

LLM之RAG实战(五十四)| 复杂文档处理RAG框架:Ragflow

RAGFlow 是一种结合了检索增强(Retrieval-Augmented Generation,RAG)与流程控制(Flow)的人工智能技术架构。它通过检索外部知识库中的信息,结合自然语言生成技术,为用户提供更准确、更丰富的回答。同时,它还引入了流程控制机制,能够根据任务需求动态调整信息检索和生成的流程,从而更好地完成复杂的任务。RAGFlow 的核心优势在于将检索和生成相结合,打破了传统生成模型仅依赖内部参数进行文本生成的局限。

wshzd的博客 1066

Black & White(思维+二分)

Black & White 思路一: 每次都向后改变m个,然后统计最长的连续的子串的长度。 注意要从当前位置p1开始,找到向后改变m+1个位置的p2,然后区间[p1+1,p2-1]内的是最长的连续的子串, 所以起始位置要从-1开始,结束位置为len。 #include<iostream> #include<cstdio> #include&l...

积少成多,水滴石穿 354

MIKE水动力笔记17_MIKE文件转shp、统计每个单元格的面积

MIKE的工具箱中自带一个转shp的工具,然后可以拖进ArcGIS中很方便的统计每个单元格的面积和每个网格点的水深。

晏长街的博客 4151

Doris磁盘空间管理(生命周期管理、清理磁盘空间方法)

在进行数据仓库开发时,比较头疼的是历史数据不删除,磁盘空间不断增长,如果磁盘空间不足时,spark调度任务写入时就会报错。

大模型大数据攻城狮的专栏 1717

HDU5113 Black And White【DFS】

Black And White Time Limit: 2000/2000 MS (Java/Others) Memory Limit: 512000/512000 K (Java/Others) Total Submission(s): 7121 Accepted Submission(s): 1907 Special Judge Problem Description In mat...

海岛Blog 668

直捣黄龙~

这篇文章描述了一个矩阵寻路问题,要求计算从起点到终点的最短路径数量及长度。主要思路是通过BFS算法解决:首先标记哨兵警戒区域为禁区,然后从起点出发进行广度优先搜索,记录每个位置的最短步数和路径条数。当到达终点时,输出路径数和步数;若不可达则返回(0,0)。算法使用队列实现BFS,同时处理路径统计和步数记录,适用于网格寻路类问题。

面试高手的博客 216

HDU 5113 Black And White dfs

传送门:HDU5113 本以为这么小的数据量可以不用剪枝,然而事实证明我还是多想了。。关键剪枝为: 当某种颜色的剩余数量大于剩余格子数的一半时,直接返回,因为这种情况继续搜下去无论怎么涂色必定有两个相邻的同色,请自行证明。。 #include #include #include #include using namespace std; int time[30]; int n,m,k

WA是一笔财富 338

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

hdu5113 Black And White(DFS+剪枝)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5113 题意: 有一个n*m的网格,有k种颜色,每种颜色有ci瓶,需要将相邻的网格涂成不同颜色,并且需要将所有颜料用完。问是否可行。 坑点:  adjacent regions竟然是左右相邻,若在行末尾则它的相邻在下一行。(excuse me???,我一直写四个方向 思路:

酱油拌面 1151

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

HDU 5113 Black And White(DFS+剪枝)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5113 题面: Black And White Time Limit: 2000/2000 MS (Java/Others)    Memory Limit: 512000/512000 K (Java/Others) Total Submission(s): 1336    A

David_Jett 1109

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

hdu 5113 Black And White (dfs+强力剪枝)

题意: 给出每种颜色的个数,现在要在n*m的各自上染色,问能否染成相邻颜色都不同的状态。 题解: dfs肯定能想到,但是剪枝比较难想到,当染色到某个状态时,如果某个颜色的个数大于剩下各自的一半就剪枝,可以这样想:因为同种颜色不能相邻,那么极端情况,将这种颜色格一个格子放置,那么如果这种情况还有剩肯定无法满足条件。还有一个自己YY的优化方法,就是尽量让个数多的颜色先放置,那么就将颜色按个数排序

ACM之梦 827

HDU 5113 Black And White(暴力dfs+减枝)

题目大意:给你一个n×m的矩阵,然后给你k种颜色,每种颜色有x种,所有的个数加起来恰好为n×m个。问你让你对这个矩阵进行染色问你,能不能把所有的小方格都染色,而且相邻两个颜色不同。 思路:一开始想的是构造,先按照个数进行排序,枚举每一个位置,贪心的策略先放多的,如果可以全部放下就输出YES,以及存贮的方案,否则输出NO,但是有bug,一直不对。。。 正解:dfs暴力枚举每一个点,裸的话需要25

I am a slow walker, but I never walk backwards! 1273

HDU - 5113 Black And White (DFS+技巧剪枝)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5113 看了看有的博客,看了hdu的discuss都是这样剪枝的… 即代码中的注释:当剩余的cell的一半(向上取整)小于某个颜色的剩余数,必有两个相邻cell颜色相同。 很好理解,因为颜色一定会用完,剩余的cell一半以上(不包括)会有同样的颜色。只看一种颜色的情况,在颜色不相邻的情况下,使得染色数目...

TK_wang_的博客 390

HDU 5113 Black And White dfs+剪枝

题意:给你一个n*m的矩阵,现有K种颜料,要涂满整个矩阵。每种颜料可以涂的矩阵个数为c[i],涂矩阵时要求相邻矩阵颜色不同。现求一种合法的涂法。 方法:dfs+剪枝 剪枝技巧,对未填方块进行黑白染色,则需当前颜料的个数大于(left+1)/2个,才能使满足要求。 #include #include #include #include #include #include using names

MY专栏 503

HDU5113--Black And White(dfs加剪枝)

题目:有N*M个格子的棋盘,用K种颜色去涂,相邻格子不能同色。给定每种颜色要涂的格子数,如果能满足题意,则输出YES和任意一种涂法,不能输出NO。思路:从左上到右下,深搜加剪枝,不剪的话会超时。剪枝方法:目前剩余的格子数number,因为相邻不能涂一样颜色,所以当(number+1)/2 <(某种颜色要涂的格子数),直接剪掉,找出最大值或者遍历都可以 #include <iostr...

HDU5113--Black And White (dfs加剪枝) 600

hdu-5113 Black And White(DFS)

Black And White Time Limit: 2000/2000 MS (Java/Others) Memory Limit: 512000/512000 K (Java/Others) Total Submission(s): 7780 Accepted Submission(s): 2131 Special Judge Problem Description In mathematics, the four color theorem, or the four color map the

weixin_47750287的博客 385

HDU 5113 Black And White (DFS+剪枝)*

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5113 #include&lt;bits/stdc++.h&gt; using namespace std; #define debug puts("YES"); #define rep(x,y,z) for(int (x)=(y);(x)&lt;(z);(x)++) #define ll lon...

满月照亮的路 327

hdu5113 Black And White(dfs+剪枝)

题目链接:点击打开链接 题意描述:给一个n*m的棋盘,现在有k种颜色的涂料,每种涂料可以使用ai次。求能否找出一种方案,给所有的格子染色,保证相邻的格子之间颜色不同。如果存在给出任意一种解决方案;否则输出NO 解题思路:dfs+剪枝 由于题目中棋盘最大为5×5所以可以考虑使用dfs,染色问题有一个结论貌似是:(剩余的格子的数量+1)>= 任意一种涂料的个数,否则染色必然失败。因此我们

Crazy_Bear 634

hdu 5113 Black And White (dfs回溯+剪枝)

hdu 5113 Black And White (dfs回溯+剪枝)—— black 的专栏 —— waShaXiu

black的专栏 2293

DFS+剪枝 hdu 5113 Black And White

有一个包含从1到K一共K种颜色的N×M棋盘,使得任意两个相邻的区块不能有相同的颜色(如果它们的上、下、左、右任意一边的颜色与自身颜色不同)。第i种颜色可以被使用Ci次 思路:因为n,m较小,所以可以想到搜索,一行一行的给格子上色,首先这个颜色要有剩余并且不能和上面的和左边的颜色相同。 一个重要的剪枝:当剩下的格子个数为n时,任意一种颜色最多只能为(n+1)/2 #incl...

digu4869的博客 165
上一篇: 南阳理工746整数划分(区间dp)
下一篇: Light oj 1021 Painful Bases(状压dp)
左眼皮跳跳~
博客等级 码龄13年 17粉丝 400原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值