首页 > Mondriaan's Dream
头像 瑜画
发表于 2020-08-17 21:36:00
用二维数组dp,第一维表示状态,第二维表示当前行。最后输出的是最后一行全部都横着放的状态。用1表示竖着放,0表示横着放,注释详细。。。 #include <bits/stdc++.h> using namespace std; #define ll long long ll dp[1&l 展开全文
头像 在刷题的单身狗很开心
发表于 2023-10-26 15:29:50
本题讨论的是每一行的矩形的摆放,而一开始因为纠结于将一个矩形用一个二进制表示,但矩形摆放的方式不同每一行的数位也就不同所以思路就此卡住了。。。。。。 但我们从矩形的摆放方式将其定义成1和0,并且每一个边长为1的小格都有一个0或1,这样就保证了每一层二进制位数的相同,那么这样写的状态转移方程是什 展开全文
头像 GenmCai
发表于 2019-08-26 22:38:23
【题目】 Squares and rectangles fascinated the famous Dutch painter Piet Mondriaan. One night, after producing the drawings in his 'toilet series' (where 展开全文
头像 华科不平凡
发表于 2020-09-29 00:32:07
由于长宽都比较小,采用棋盘式状态压缩DP解决,此类任务一般是在棋盘内填各种形状的块,然后求方案数。 核心思想是:总方案数等于合法横向摆放小矩形方案数之和。下面的图形中,绿色为横向填充,黄色为纵向填充,图1是合法的,图2则是非法的。 设状态矩阵为dp[i][j],其中i表示第i列,j表示横跨第i- 展开全文
头像 louhc
发表于 2019-08-26 20:39:56
思路 都这么小可以考虑考虑状态压缩.表示填了前行,只有第行还有一些位置没有填过(满足). 可以从上一种状态转移过来需要满足以下条件: 每段连续的都是偶数个. 因为数据范围比较小,并且你也不知道询问有多少,可以预处理出所有可能输入的答案(当然也可以打表,虽然好像不太厚道),然后每次询问直接输出答 展开全文