网站安全证书出错怎么做,苏州网站建设找苏州聚尚网络首选,菜单设计制作公司,成都品牌建设网站公司想看官方描述–传送门
n 2, artifacts [[0,0,0,0],[0,1,1,1]], dig [[0,0],[0,1]]
就是讲#xff0c;在子集网格中#xff0c;如果所提供的dig 能把该子网格完全填充#xff0c;则该子网格就是其中的结果#xff0c;遍历所有的子网格#xff0c;得到所有可以被填…想看官方描述–传送门
n 2, artifacts [[0,0,0,0],[0,1,1,1]], dig [[0,0],[0,1]]
就是讲在子集网格中如果所提供的dig 能把该子网格完全填充则该子网格就是其中的结果遍历所有的子网格得到所有可以被填充的子网格官方叫组件) 其实也好理解就是不太好设计。 这个lambda set.count({}) 直接降本增效 挨个遍历子网格的所有最小单元如果dig能做到每个都填充最后retuen true只要中间出现一个不满足的条件就return false
class Solution {
public:int digArtifacts(int n, vectorvectorint artifacts, vectorvectorint dig) {//看了大半天终于了解大意//提供的artifacts是描述矩形工件的分布情况也就是两对角线所包围的内容//要求从给定挖掘单元格提取工件意思是若给定的单元格全部覆盖指定工件既可开挖完整工件//根据小给定单元格去子网格中占位子网格如果全部给定单元格占满指定子网格则可以获取该工件//怎么塞/*| r1i,c1i || r2i,c2i|artifacts[i] [r1i, c1i, r2i, c2i]n 2, artifacts [[0,0,0,0],[0,1,1,1]], dig [[0,0],[0,1]]dig [[x1,y1], [x2,y2]]*///和我想的一样遍历子网格里头的最小单元然后把dig一个一个的往里头塞用hash记录应该会更快一点//把dig的坐标通过set 传入容器setpairint, int s;for(const auto d: dig){int x d[0], y d[1];s.emplace(x, y);}//这个lambda是真的牛auto jude [s, artifacts](int i) -bool{//先确定行 再确定列for(int x artifacts[i][0]; x artifacts[i][2]; x){for(int y artifacts[i][1]; y artifacts[i][3]; y){if(s.count({x, y}) 0){return false;//想一想在这里设为true}}}//这里设为false 为什么不行return true;};//是这样的必须全部填充才返回true一旦里面有一部分是dig中所没有的就不能提取这个部件int ans 0;for(int i 0; i artifacts.size();i){if(jude(i)){ans;}}return ans;}
};参考
struct hash_func {std::size_t operator()(pairint, int p) const {return std::hashint()(1000 * p.first p.second);};
};
struct equal_func {bool operator()(pairint, int p1, pairint, int p2) const {return p1 p2;};
};
unordered_setpairint, int, hash_func, equal_func us {dig.size()}; auto hash_func [](pairint, int p) - std::size_t {return std::hashint()(1000 * p.first p.second);
};
auto equal_func [](pairint, int p1, pairint, int p2) - bool {return p1 p2;
};
unordered_setpairint, int, decltype(hash_func), decltype(equal_func) us{dig.size(), hash_func, equal_func};