首页 > 其他分享 >POJ2411 Mondriaan's Dream(多米诺密铺问题)

POJ2411 Mondriaan's Dream(多米诺密铺问题)

时间:2023-09-09 10:22:19浏览次数:42  
标签:right frac int Mondriaan 多米诺 POJ2411 pi include left

不妨设 \(n, m\) 相等,常规的状压 DP 做法时间复杂度为 \(O(n * 2^n)\),但是可以通过套用公式使复杂度变为 \(O(n^2)\)。

具体地,用 \(1*2\) 的小长方形覆盖 \(n*m\) 的棋盘的方案数为

\[\Large \prod\limits_{j = 1}^{\left\lceil\frac{m}{2}\right\rceil} \prod\limits_{k = 1}^{\left\lceil\frac{n}{2}\right\rceil} \left( 4 \cos^2 \frac{\pi j}{m + 1} + 4 \cos^2 \frac{\pi k}{n + 1} \right) \]

当 \(n\) 和 \(m\) 均为奇数时,上述公式能正确给出答案 \(0\)。

点击查看代码
#include<math.h>
#include<stdio.h>
#include<ctype.h>
#define pi 3.14159265358979323846
int n, m;
long double ans;
int main(){
	while(1){
		scanf("%d%d", &n, &m);
		if(!n) break;
		ans = 1;
		for(int i = 1; i <= (n + 1) / 2; i++){
			for(int j = 1; j <= (m + 1) / 2; j++){
				ans *= 4.0 * (cos((pi * i) / (n + 1)) * cos((pi * i) / (n + 1)) + cos((pi * j) / (m + 1)) * cos((pi * j) / (m + 1)));
			}
		}
		printf("%lld\n", (long long)(ans + 0.5));
	}
	return 0;
}

参考

https://en.wikipedia.org/wiki/Domino_tiling

标签:right,frac,int,Mondriaan,多米诺,POJ2411,pi,include,left
From: https://www.cnblogs.com/xj22yangyichen/p/17688982.html

相关文章

  • #轮廓线dp#HDU 1400 Mondriaan's Dream
    题目传送门分析状压dp会TLE,考虑用轮廓线dp,设\(dp[i][j][S]\)表示现在处理到\((i,j)\)这个位置轮廓线上状态为\(S\)的情况二进制位为1表示左边或者上方有骨牌跨过轮廓线,然后分类讨论转移一下即可代码#include<cstdio>#include<cstring>usingnamespacestd;con......
  • Mondriaan's Dream 【POJ2411】 题解
    Mondriaan'sDream【POJ2411】题解——ByZy注:原题中的\(h,w\)在本文中使用\(n,m\)代替。一.题意分析:题目要求给定一个一定大小的矩形棋盘,求出使用\(1\times2\)大小的木条填充一共有多少种方案。读题,发现数据范围\((1\leh,w\le11)\),考虑使用状压DP算法,于是......
  • 洛谷P1282 多米诺骨牌 【dp】
    参考:https://blog.csdn.net/qq_51354600/article/details/120623720题意给定\(n\)个多米诺骨牌,每个多米诺骨牌由上下两部分组成,每部分的点数为\(1\sim6\)中的某一个数......
  • poj2411 Mondriaan's Dream--状压dp
    原题链接:​​http://poj.org/problem?id=2411​​.题意:一个n*m的方格,给定一个1*2的方块,要求用这个方块填充方格,填满,一共多少种填充方法。分析:对于一行的某一列来说,该列有三......
  • 790. 多米诺和托米诺平铺 : 简单状态机 DP 运用题
    题目描述这是LeetCode上的​​790.多米诺和托米诺平铺​​,难度为中等。Tag:「状态机DP」有两种形状的瓷砖:一种是 ​​2x1​​​的多米诺形,另一种是形如 ​​"......
  • 2022NOIP A层联测30 分配 串串超人 多米诺游戏 大师
    T1[数论/贪心构造]给出n-1对限制形如(i,j,a,b),要求\(xi/xj=a/b\),xi和xj都是正整数。求长度是n的序列x,满足条件(保证给定条件和任意一个数可以唯一确定这个序列)的\(min(\su......
  • Leetcode第790题:多米诺和托米诺平铺(Domino and tromino tiling)
    解题思路采用动态规划思路。参考题解。核心代码如下:constlonglongmod=1e9+7;classSolution{public:intnumTilings(intn){vector<vector<lo......
  • 790. 多米诺和托米诺平铺
    790.多米诺和托米诺平铺有两种形状的瓷砖:一种是 2x1的多米诺形,另一种是形如 "L"的托米诺形。两种形状都可以旋转。给定整数n,返回可以平铺 2xn的面板的方法......
  • 790. 多米诺和托米诺平铺
    790.多米诺和托米诺平铺题解:dpnum数组表示的是:i-1列的瓷砖都被铺满了,第i列的状态枚举第i列的状态枚举有4种:11表示上下两行都被填充,10表示上面那行被填充,01......
  • 多米诺骨牌
    1128.等价多米诺骨牌对的数量icintnumEquivDominoPairs(int[][]dominoes){intans=0;int[]a=newint[100];for(int[]cur:dominoes){Arrays.sort(cur);......