HDU 5113 Black And White (dfs、剪枝)

OpenAI Realtime API实时语音交互实战指南 实时语音交互是人机自然对话的核心能力,其本质在于构建低延迟、双向、流式协同的音频-语义闭环。它突破传统REST API的请求-响应范式,依托WebSocket实现毫秒级音频输入流(audio.delta)、模型生成流(text/audio.delta)与动态控制流(session.update)三重并行。该技术显著降低端到端延迟至300ms以内,支撑语音助手、智能客服、对话式教育等强实时场景。本文聚焦OpenAI Realtime API的工程落地,详解PCM音频流处理、VAD语音活动检测、AudioCon 阅读详情

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5113

题意:N*M的棋盘,K种颜色,每种颜色有c[i]个(sigma(c[i]) = N*M),现在给棋盘染色,使得相邻的两个棋盘染成不同的颜色,并且把所有颜色用完。


就像数独一样,因为棋盘比较小,可以想到用搜索写。不过爆搜会超时,需要一个强有力的剪枝。

容易想到,当现在剩下的空格子数的一半是小于某一个c[i]的,那么这种颜色一定会在以后相邻,当然需要考虑一下剩下空格子的奇偶。加上了这个剪枝还是TLE.....

后来看了题解,发现思想和我想的一模一样。只不过人家对于空格子的奇偶判断的比我好,剪枝的界限比我小了1,然后就能过了。。。。时间还特快,62M。。。。

不太懂为什么,为什么就差这一点时间就会差这么多。

不过这题还是提醒我以后不要算着差不多就写,一定要搞精确了,不然改都不知道怎么改.......


#include <bits/stdc++.h>
using namespace std;
int n, m, k;
int grid[10][10];
int col[30];
int flag = 0;
void dfs(int x, int y, int blank) {
    //if(flag) return;
    if(x == n + 1) {
        flag = 1;
        return;
    }
    for(int i = 1; i <= k; i++) {
        if(col[i] > (blank + 1) / 2) return;  //剪枝的关键。 写成blank/2 + 1就会TLE,仔细分析一下确实(blank+1)/2更加精确一些。
    }
    int nx, ny;
    if(y == m) {
        nx = x + 1;ny = 1;
    }
    else {
        nx = x;ny = y + 1;
    }
    for(int i = 1; i <= k; i++) {
        if(col[i]) {
            if(x > 1 && grid[x - 1][y] == i) continue;
            if(y > 1 && grid[x][y - 1] == i) continue;
            col[i]--;
            grid[x][y] = i;
            dfs(nx, ny, blank - 1);
            if(flag) return;
            col[i]++;
        }
    }
}
int main() {
    int t;
    scanf("%d", &t);
    for(int kase = 1; kase <= t; kase++) {
        scanf("%d %d %d", &n, &m, &k);
        for(int i = 1; i <= k; i++) scanf("%d", col + i);
        flag = 0;
        memset(grid, 0, sizeof grid);
        dfs(1, 1, m * n);
        printf("Case #%d:\n", kase);
        if(flag) {
            puts("YES");
            for(int i = 1; i <= n; i++) {
                for(int j = 1; j <= m; j++) {
                    printf("%d", grid[i][j]);
                    if(j == m) puts("");
                    else putchar(' ');
                }
            }
        }
        else puts("NO");
    }
    return 0;
} 


复分析 阿尔福斯(Ahlfors) 第三版答案 英文 答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案 立即下载

相关推荐

Ubuntu20.04下Intel AX201网卡驱动安装全攻略:从内核升级到固件更新

本文详细介绍了在Ubuntu 20.04系统上解决Intel AX201无线网卡驱动问题的完整方案。针对戴尔游匣G15等新硬件,通过升级内核至HWE版本、从官方仓库获取最新固件文件,并调整BIOS设置,彻底解决Wi-Fi无法识别或连接不稳定的问题,为开发者提供了一套从诊断到修复的实践指南。

gpt4scribbler的博客 690

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

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

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

用Matlab系统辨识工具箱搞定温控系统建模:从阶跃响应到传递函数(附完整代码)

本文详细介绍了如何使用Matlab系统辨识工具箱进行温控系统建模,从阶跃响应数据采集到传递函数参数辨识的全过程。通过实际案例和完整代码,帮助工程师快速掌握PID控制参数整定技巧,提升温控系统设计效率。特别适合单片机开发者和自动化控制工程师参考。

weixin_30736301的博客 310

hdu 5113(dfs+剪枝+回溯)

B - Black And White  HDU - 5113  题意: 给定n,m,k;代表n行m列的矩形,要求用k总颜色进行染色,要求任意两个相连的位置颜色不能相等,其中每种颜色有a【i】个; 思路: 暴力搜索加剪枝,首先记录数量最多的颜色有多少个,然后判断是否满足maxx>(n*m+1)>>1;如果满足,直接输出NO; 否则就是一定能染成的。 如何剪枝?当搜

The_star_is_at的博客 536

视觉机器人抓取实战:从物体定位到抓取估计的完整流程解析(附Python代码示例)

本文详细解析了视觉引导机器人抓取的完整技术流程,涵盖从物体定位、位姿估计到抓取估计的核心步骤。通过Python代码示例,演示了如何使用Open3D等工具进行点云处理、平面分割、PCA与ICP位姿估计,以及基于几何启发式的抓取生成方法,为机器人视觉抓取开发提供了清晰的实战指南。

peach的博客 914

告别“盲开”:手把手教你用MCU内置比较器搞定BLDC无感方波启动(附代码片段)

本文详细介绍了如何利用MCU内置比较器实现BLDC无感方波启动,解决传统无传感器控制中的'盲开'问题。通过虚拟中性点电路设计和三段式启动流程,结合反电动势检测和过零检测技术,提供了一套经济高效的解决方案,并附有可直接移植的代码片段,助力工程师快速实现可靠的无感控制。

weixin_33694172的博客 504

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

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

TK_wang_的博客 390

从零到一:树莓派OpenWrt squashfs固件扩容背后的文件系统魔法

本文深入解析树莓派OpenWrt系统中squashfs固件的扩容原理与操作。通过理解squashfs与overlayfs的协同机制,掌握分区调整和文件系统扩容技巧,解决存储空间限制问题,提升设备可用性。

hadoop5ranger的博客 1038

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

数学不好是原罪——高等数学笔记(汇总版)

这是本人之前考研的高数手写笔记,工科学硕数一考了146(满分150),笔记有一定参考价值,欢迎大家收藏借鉴。

xuuyann 5万+

【连接器专题】 EIA-364 系列标准的完整列表

EIA-364 系列标准在电子工业中具有重要的地位,为电子连接器和互连系统的测试和验证提供了统一的、可操作的流程和方法,有助于提高电子产品的质量和可靠性,促进了电子工业的发展

一点硬件 2660

hdu5113(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): 1468 Accepted Submiss

随心丶而遇的博客 1120

022、Conv-BN-SiLU 基础卷积块:构造函数参数计算,前向传播的 PyTorch 逐行实现

本文详细解析了Conv-BN-SiLU卷积块的实现细节与注意事项。作者从调试经历出发,指出bias参数冗余会导致数值不稳定,强调卷积层应设置bias=False。文章对比了SiLU与ReLU的特性差异,逐行分析了构造函数参数计算(包括自动填充、分组卷积等)和前向传播过程,特别讲解了BN层与SiLU激活的数值特性。最后分享了三个实践中的常见问题:BN的momentum设置、SiLU输出范围的影响,以及分组卷积的通道对齐要求,并提供了卷积与BN融合的推理优化技巧。全文聚焦实际工程实现中的关键细节,具有较强实操指

ai技术增长的博客 218

hdu5113 Black And White(DFS+剪枝)

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

酱油拌面 1151

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

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

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

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 1110

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

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

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

ACM之梦 827

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

hdu5113Black And White dfs暴搜 +剪枝

//n(n<=5)*m(m<=5)的格子 //k种颜料,每种颜料有ai个 //问这k种颜料能否将这n*m涂满且 //每相邻的格子颜色不同 //暴搜 , 剪枝剩下的颜色的数量大于剩下(sum+1)/2 //直接return #include #include #include using namespace std ; const int maxn = 30 ; int map[maxn][maxn

ijbuhv的专栏 640

DFS+剪枝 hdu 5113 Black And White

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

digu4869的博客 165

Black And White HDU - 5113 dfs+剪枝

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 a

mayuqing98的博客 222

HDU 5113 Black And White DFS+剪枝

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 a...

Harington的博客 280

hdu 5113 Black And White(dfs+剪枝)

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5113 解题思路: 题目大意: 给你一个N*M的棋盘,要求用K种颜色对每个格染色,相邻的格的颜色不能相同。并且第i种颜色必须恰好出现c[i]次。求是否存在该方案,如果存在,输出任意一种。 算法思想: 因为n,m都比较小,所以直接搜索即可,但是需要加一个剪枝,因为当剩下的容量为n时,

piaocoder 436

hdu 5113 Black And White dfs剪枝

这个。。。减枝方案看了题解才发现是自己思维太僵。。。 如果剩下的某种颜色大于剩下的格子数量的1/2那必有两个格子颜色相同然后return 鸽巢原理#include<cstdio> #include<cstring> #include<algorithm> #include<iostream> using namespace std; int am[50],n,m,k,ans[10][10],f

acblacktea的博客 501
上一篇: codeforces 732D Exams
下一篇: HDU 5115 Dire Wolf (区间DP)
Strokess
博客等级 码龄11年 62粉丝 206原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值