【例题 7-14 UVA-1602】Lattice Animals】的更多相关文章

题目链接 题意:求能放进w*h的网格中的不同的n连通块个数(通过平移/旋转/翻转后相同的算同一种),1<=n<=10,1<=w,h<=n. 刘汝佳的题真是一道比一道让人自闭...QAQ~~ 这道题没什么好的办法,Polya定理也毫无用武之地,只能暴力构造出所有可能的连通块,然后用set判重,比较考验基本功. 连通块可以用一个结构体D来表示,D的n代表黑块数量,然后有至多10个点P(x,y),用另一个结构体数组P[N]来表示. 问题的关键在于如何判重. 首先要知道set是通过<…
题目 输入n.w.h($1\leqslant n \leqslant 10, 1\leqslant w,h \leqslant n$),求能放在w*h网格里的不同的n连块的个数(注意,平移.旋转.翻转后相同的算作一种).例如,2*4里的5连块有5种(第一行),而3*3里的8连块有以下3种(第二行),如图所示. 题解 判重部分有点难……茫然 看了紫书 平移可以强制整个图放左上角 旋转和翻转比较不好判断= = 因为旋转加翻转可能有多种情况(不知道有8种),害怕太慢不敢写 但输入比较少,直接打表 代码…
题意 : 给定一个 w * h 的 矩阵,在矩阵中找不同n个连通块的个数(旋转,翻转,平移算作一种) 分析 : 这题的关键点有两个 ① 生成n连块并且存储起来(因为题目是多测试用例,如果每一次都重新生成必将浪费很多时间) ② 判断是否生成了重复的n连块 存储 :首先先确定用什么结构来存储n连块的信息才能更好的进行操作,n连块是多个二维坐标的集合,所以这里先定义结构体 Cell {int x, int y} 表示坐标,然后将其塞到一个集合里面set<Cell>,n连块可能有不同的多种,所以这些n…
[ZOJ2669]Lattice Animals Time Limit: 5 Seconds      Memory Limit: 32768 KB Lattice animal is a set of connected sites on a lattice. Lattice animals on a square lattice are especially popular subject of study and are also known as polyminoes. Polymino…
UVA 11768 - Lattice Point or Not option=com_onlinejudge&Itemid=8&page=show_problem&category=516&problem=2868&mosmsg=Submission+received+with+ID+13823461" target="_blank" style="">题目链接 题意:给定两个点,构成一条线段.这些点都是十分…
这道题想了很久不知道怎么设置状态,怎么拓展,怎么判重, 最后看了这哥们的博客 终于明白了. https://blog.csdn.net/u014800748/article/details/47400557 这道题的难点在于怎么设置联通的状态,以及怎么拓展判重 . (1)状态:这里状态先定义了一个格子cell, 有x和y坐标.然后set<cell>表示一个联通块, 再用set<set<cell>>表示n个连块可以组成的所有联通块, 这里是集合套集合. (2)拓展:每个格…
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 借鉴网上的题解的. 思路是. 用"标准化"的思想. 确定基准点(0,0) 然后假设(0,0)是第一个连通块. 然后通过大小为1的连通块(0,0)得到所有大小为2的连通块. 然后得到所有大小为3的连通块.. 以此类推 这样可以避免回溯的过程. 直接递推就好. 然后判重. 就是 (标准化->旋转)[4] 以及 翻转-> (标准化->旋转)[4] ()[x]表示括号内的过程重复4次 看看每一种是不是都不存在…
题目链接 https://vjudge.net/problem/UVA-1602 紫书的一道例题,跟之前的很多题目有很多不同. 本题不像是一般的dfs或bfs这样的搜索套路,而是另一种枚举思路. 题意: 输入n. w. h(1≤n≤10,1≤w,h≤n),求能放在w*h网格里的不同的n连块的个数(平移. 旋转. 翻转后相同的图形算作同一种). 思路: 思路很明确,生成图形后判重,加入重复表或弃掉. 本题的重点就在生成和判重. 我的思路: 连通块的生成:通过维护一个int open[10][10]…
将直线转化为ax + by = c的形式,然后扩展欧几里得求在[x1, x2]之间的解 对直线与坐标轴平行的特判 调试了好长时间,注意: 1 正负数转化为整型的处理 2 注意判断有无解 #include<cstdio> #include<iostream> #include<cstdlib> #include<cstring> #include<string> #include<algorithm> #include<map&g…
1. 题目描述给定$n \times m, n.m \in [1, 10]$的方格,求不同形状的$[1 \cdots 10]$联通块的个数?所谓不同形状,表示不能通过平移.旋转.镜像实现相同的形状.2. 基本思路显然数据不大, 那么可以打表.首先考虑,这个表怎么打?不妨使用$cn$表示连通块数.那么对于$n \times m, m.n \ge cn$的种类数与$cn \times cn$中$cn$连通块数完全相同.否则搜索$cn \times cn$中$cn$中的连通块,找出那些在边界$n \t…