题目:http://poj.org/problem?id=2279

有dp做法,但会MLE。

  dp的思想很好,是通过 “按身高由小到大往进放” 把 “身高小于” 的条件转化成 “放进去的先后” ,于是又变成 “当前位置的上边和左边是否已放” 。

  “左边” 通过对每一行长度的记录;“上边” 通过与上一行长度的比较,就可以状态转移了。

正解是用公式。杨氏矩阵(虽然没用上)+钩子公式。

dp代码:

#include<iostream>
#include<cstdio>
using namespace std;
int n,k,lm[];
unsigned long long d[][][][][];
int main()
{
scanf("%d%d",&n,&k);
for(int i=;i<=k;i++)
scanf("%d",&lm[i]);
d[][][][][]=;
for(int i=;i<=lm[];i++)
for(int j=;j<=lm[]&&j<=i&&i+j<=n;j++)
for(int r=;r<=lm[]&&r<=j&&i+j+r<=n;r++)
for(int l=;l<=lm[]&&l<=r&&i+j+r+l<=n;l++)
for(int k=;k<=lm[]&&k<=l&&i+j+r+l+k<=n;k++)
{
d[i][j][r][l][k]+=d[i-][j][r][l][k];
if(j>)d[i][j][r][l][k]+=d[i][j-][r][l][k];
if(r>)d[i][j][r][l][k]+=d[i][j][r-][l][k];
if(l>)d[i][j][r][l][k]+=d[i][j][r][l-][k];
if(k>)d[i][j][r][l][k]+=d[i][j][r][l][k-];
}
printf("%lld",d[lm[]][lm[]][lm[]][lm[]][lm[]]);
return ;
}

公式代码:

#include<iostream>
#include<cstdio>
#define ull unsigned long long
using namespace std;
ull n,k,r,c[],a[][],cnt;
ull gcd(ull a,ull b)
{
return b==?a:gcd(b,a%b);
}
int main()
{
while()
{
scanf("%lld",&n);
if(!n)return ;
for(int i=;i<=n;i++)
{
scanf("%lld",&c[i]);
for(int j=;j<=c[i];j++)
a[i][j]=c[i]-j;
}
k=;r=;cnt=;
for(int i=n;i;i--)
{
for(int j=;j<=c[i];j++)
{
for(int l=i;l;l--)
a[l][j]++;
ull gd=gcd(k*(++cnt),r*a[i][j]);
k=k*(cnt)/gd;
r=r*a[i][j]/gd;
// printf("i=%d j=%d a=%lld k=%lld r=%lld\n",i,j,a[i][j],k,r);
}
}
printf("%lld\n",k/r);
}
}

POJ2279杨氏矩阵+钩子定理的更多相关文章

  1. HihoCoder 1480:矩阵填数 (杨氏矩阵 || 钩子公式 + 筛逆元)

    描述 小Hi在玩一个游戏,他需要把1, 2, 3, ... NM填入一个N行M列的矩阵中,使得矩阵每一行从左到右.每一列从上到下都是递增的. 例如如下是3x3的一种填法: 136 247 589 给定 ...

  2. poj2279排队——杨氏矩阵与钩子公式(DP爆内存)

    题目:http://poj.org/problem?id=2279 书上的DP做法会爆内存,尝试写了一个,过了样例. 转载: 代码如下: #include<iostream> #inclu ...

  3. 杨氏矩阵:查找x是否在矩阵中,第K大数

    参考:http://xudacheng06.blog.163.com/blog/static/4894143320127891610158/ 杨氏矩阵(Young Tableau)是一个很奇妙的数据结 ...

  4. 杨氏矩阵定义及其查找的实现C++

    先介绍一下这个数据结构的定义,Young Tableau有一个m*n的矩阵,然后有一数组 a[k], 其中 k<=m*n ,然后把a[k]中的数填入 m*n 的矩阵中,填充规则为: 1.  每一 ...

  5. BZOJ-1002 轮状病毒 高精度加减+Kirchhoff矩阵数定理+递推

    1002: [FJOI2007]轮状病毒 Time Limit: 1 Sec Memory Limit: 162 MB Submit: 3543 Solved: 1953 [Submit][Statu ...

  6. 【杨氏矩阵+勾长公式】POJ 2279 Mr. Young's Picture Permutations

    Description Mr. Young wishes to take a picture of his class. The students will stand in rows with ea ...

  7. [spoj104][Highways] (生成树计数+矩阵树定理+高斯消元)

    In some countries building highways takes a lot of time... Maybe that's because there are many possi ...

  8. 杨氏矩阵查找元素位置Java实现

    杨氏矩阵是一个二维矩阵,特点是每一行的右边的元素比左边的大,每一列下面的元素比上面的大: 比如 1 2 8 9 2 4 9 12 4 7 10 13 6 8 11 15 假设要查找的变量为target ...

  9. BZOJ 4766: 文艺计算姬 [矩阵树定理 快速乘]

    传送门 题意: 给定一个一边点数为n,另一边点数为m,共有n*m条边的带标号完全二分图$K_{n,m}$ 求生成树个数 1 <= n,m,p <= 10^18 显然不能暴力上矩阵树定理 看 ...

随机推荐

  1. apache-service的使用

    apache service目录设置 设置Apache HTTP Server的文件根目录(DocumentRoot) 安装Apache 时,系统会给定一个缺省的文件根目录 如果你觉得这个网页存在这个 ...

  2. golang模拟动态高优先权优先调度算法

    实验二  动态高优先权优先调度 实验内容 模拟实现动态高优先权优先(若数值越大优先权越高,每运行一个时间单位优先权-n,若数值越小优先权越高,没运行一个时间单位优先权+n),具体如下: 设置进程体:进 ...

  3. pywin32 的安装

    这个东西不是在包管理器安装一下就可以的. https://github.com/mhammond/pywin32/releases 请到git下载exe安装文件.

  4. eclipse中使用Maven新建Servlet2.5的Web项目

    前言 我们用Eclipse创建Maven结构的web项目的时候选择了Artifact Id为maven-artchetype-webapp,由于这个catalog比较老,用的servlet还是2.3的 ...

  5. 玩转X-CTR100 l STM32F4 l DS18B20单总线温度传感器

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ]      本文介绍X-CTR100控制器 扩展DS1 ...

  6. JAVA中int转string及String.valueOf()的使用

    日常java开放中,经常会遇到int和String的互转,一般图省事的做法就是: String length = ""+100; length的生成需要使用两个临时字符串" ...

  7. 设置 placeholder 字体颜色 : ::

    ::-webkit-input-placeholder {  color: red;} :-moz-placeholder {  color: red;}::-moz-placeholder{colo ...

  8. mysql left join 查询

    inner join(等值连接) 只返回两个表中联结字段相等的行 left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 左连接实例: SELECT t. NAME, t1. ...

  9. kbmMW CopyRawRecords 用法

    复制一个ClientQuery数据集到另外一个ClientQuery,我们应该怎么做?并注意什么呢? kbmMW为我们提供了好几个方法,有LoadFromDataSet,CopyRawRecords, ...

  10. 安装 Java 6

    从服务器下载 Linux 64位 jdk 到本地.下载地址:\\192.167.100.225\share\Tool\JAVA\jdk-6u34-linux-x64.bin 给安装文件添加执行权限 $ ...