阿里 笔试 4.10 第二题

大致题意:
有 k 种颜色的颜料,每种颜料有 c[i] 升。让你给 n * m 的格子涂颜色,每涂一个格子消耗 1 升颜料。要求每个格子跟其上下左右格子的颜色都不一样,判断给定条件能否满足要求。

输入格式:
首先是样例数目
之后是格子的大小 m n 以及颜料种类数目 k
再之后是每种颜料的数量

例如:
1
1 5 2
2 3

AC 代码如下:
a = int(input())

for i in range(a):
    b,c,d = map(int, input().split())
    num = (b * c + 1) // 2
    e = map(int, input().split())
    flag = 0
    for j in e:
        if j > num:
            flag = 1
            print("NO")
            break
    if not flag:
        print("YES")


#阿里巴巴##笔试题目#
全部评论
其实有种题叫做结论题(也算思维题吧),没想到阿里也出这种题了
点赞 回复 分享
发布于 2020-04-11 00:04
大佬可以帮忙看看我第二题和你一样的思路,但是ac0 哪里出问题了吗
点赞 回复 分享
发布于 2020-04-10 11:13
大佬,这种颜料的数量不超过方格数一半就说明有解的思想,有证明吗
点赞 回复 分享
发布于 2020-04-10 10:42
贴下我写的第二题的代码,ac了。把二维坐标映射成一维坐标应该还可以继续优化一下。 ```cpp #include <iostream> #include <algorithm> using namespace std; const int MAXN = 100; int n, m, c; int C[MAXN]; int A[MAXN][MAXN]; bool judge(int row, int col, int c) { if (row > 0) { if (A[row - 1][col] == c) return false; } if (col > 0) { if (A[row][col - 1] == c) return false; } return true; } int flag; void dfs(int row, int col) { if (flag != 0) return; if (row == n && col == 0) { flag = 1; return; } for (int t = 0; t < c; t++) { if (C[t] == 0) continue; if (!judge(row, col, t)) continue; A[row][col] = t; C[t]--; if (col + 1 < m) { dfs(row, col + 1); } else { dfs(row + 1, 0); } C[t]++; A[row][col] = -1; } } int main() { int T; cin >> T; while (T--) { flag = 0; fill(A[0], A[0] + MAXN * MAXN, -1); cin >> n >> m >> c; for (int i = 0; i < c; i++) { cin >> C[i]; } dfs(0, 0); cout << (flag == 1 ? "YES" : "NO") << endl; } return 0; } ```
点赞 回复 分享
发布于 2020-04-10 10:30
各位有第二题的测试用例嘛
点赞 回复 分享
发布于 2020-04-10 10:30
我惊了,这个思想是啥
点赞 回复 分享
发布于 2020-04-10 10:19
&所以两道编程题,其实都是数学题……😥
点赞 回复 分享
发布于 2020-04-10 10:19
我第一题用最最无脑的办法,从minX到maxX对于每一个可能的x坐标都计算一次其到每个点的距离,最后取最小值...然后就骗了60%的分😂😂😂
点赞 回复 分享
发布于 2020-04-10 10:15
所以这是一个数学问题了...给大佬跪了 不过还好这题就用常规的dfs搜索也能ac...
点赞 回复 分享
发布于 2020-04-10 10:11
同学能分享下第一题的思路吗?我过了自己的test case但就是过不了
点赞 回复 分享
发布于 2020-04-10 10:11

相关推荐

牛客41406533...:回答他在课上学,一辈子待在学校的老教授用三十年前的祖传PPT一字一句的讲解,使用谭浩强红皮书作为教材在devc++里面敲出a+++++a的瞬间爆出114514个编译错误来学这样才显得专业
点赞 评论 收藏
分享
评论
3
11
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务