Description

相传,在天地初成的远古时代,世界上只有一种叫做“元”的花。接下来,出 现了一位拥有魔法的花仙子,她能给花附加属性,从此,“元”便不断变异,产生了大千世界千奇百怪的各种各样的花。据说,花仙子既可存在于二维空间(平 面),又可存在于三维空间(立体),还可存在于n维空间(想象)。二维空间的点可用向量(x1,x2)表示,三维空间的点可用向量(x1,x2,x3)表 示,一般来说,n维空间的点可用向量(x1,x2,…,xn)表示。而n维空间中两点(x1,x2,…,xn)与(w1,w2,…,wn)之间的距离定义 为。 在n维空间中,花仙子每实施魔法就要选择一个参考点(w1,w2,…,wn)和一个作用半径r,并且参考点的位置和作用半径的大小可以任意选择。这时,n 维空间中所有与参考点(w1,w2,…,wn)之间的距离小于作用半径r的花都会受到这次魔法的影响。每次魔法都会给受到影响的花带来不同的属性,且的效 果可以叠加。一般来说,若花仙子总共实施了m次魔法,则n维空间中处于某点的花所具有的属性可用长度为m的二进制串a1a2…am来描述,其中对 1≤i≤m,若该花受到第i次魔法的影响,则ai的值为1,否则为0。显然,不同的属性对应不同的花。 现在的问题是:花仙子在n维空间中实施了m次魔法后,最多能得到多少种不同的花?

Input

包含两个整数,并用一个空格隔开,第一个整数表示实施魔法的次数m,第二个整数表示空间的维数n。其中,1≤m≤100,1≤n≤15。

Output

仅包含一个整数,表示花仙子在n维空间中实施了m次魔法后,最多能得到多少种不同的花。

Sample Input

3 1

Sample Output

6

思路:很 好写但不好想的dp 4维以上的空间就脑部不出来了TUT。先想一维的情况:显然k次作用后最多会产生2k种不同的花,二维呢?新增加一次施法次数便是多一个圆,圆和刚才已经 画好的圆相交,我们看新的圆的出现造成了多少种新花的出现,我们不必看分割出了多少个二维平面,而是看圆的二维流形:一条封闭的曲线被分割成了多少部分, 这时问题成了一维的情况,就可以递推了

然后再想到两个三维的球相交在二维上的投影是圆,两个四维的超球体相交在三维的投影是球,因此设 dp[i][j]表示n维空间施法m次能得到最多的不同的花,在二维上分析即可得到dp[i][j]=dp[i-1][j-1]+dp[i][j-1], 代码里用到了滚动数组还是没排上第一页,排第一的那个c++的是怎么写的TAT

#include<cstdio>
long long dp[2][100];
int main()
{
        int n,m;
        long long *a=dp[0],*b=dp[1];
        scanf("%d%d",&m,&n);dp[0][0]=1;
        for(int i=1;i<=m;i++)a[i]=i*2;
        if(n==1){printf("%lld",a[m]);return 0;}
        for(int i=2;i<=n;i++)
        {
                b[0]=1;
                for(int j=1;j<=m;j++) b[j]=b[j-1]+a[j-1];
                long long *t=a;a=b;b=t;
        }
        printf("%lld\n",a[m]);
        return 0;
}

BZOJ 1197: [HNOI2006]花仙子的魔法【DP】的更多相关文章

  1. BZOJ 1197 [HNOI2006]花仙子的魔法 (数学题)

    题面:洛谷传送门 BZOJ传送门 非常有意思的一道数学题,浓浓的$CF$风,然而我并没有想出来.. 我们想把一个$n$维空间用$n$维球分成尽可能多的块 而新增加一个$n$维球时,肯定要尽可能多地切割 ...

  2. 1197: [HNOI2006]花仙子的魔法

    1197: [HNOI2006]花仙子的魔法 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 762  Solved: 443[Submit][Stat ...

  3. 1197: [HNOI2006]花仙子的魔法 - BZOJ

    Description Input 包含两个整数,并用一个空格隔开,第一个整数表示实施魔法的次数m,第二个整数表示空间的维数n.其中,1≤m≤100,1≤n≤15. Output 仅包含一个整数,表示 ...

  4. bzoj千题计划183:bzoj1197: [HNOI2006]花仙子的魔法

    http://www.lydsy.com/JudgeOnline/problem.php?id=1197 题意转化:在n维空间中放m个n维球,问最多将空间分成几部分 f[i][j] 表示在i维空间中放 ...

  5. BZOJ1197 [HNOI2006]花仙子的魔法

    其实是一道奇怪的DP题,蒟蒻又不会做... 看了Vfk的题解才算弄明白是怎么一回事: 令f[i, j]表示i维有j个球时最大切割部分,则 f[i, j] = f[i, j - 1] + f[i - 1 ...

  6. HNOI2006 花仙子的魔法

    题目描述 题解: 考试的时候手画打表,然后半个小时磨了个式子:$$f[i][j]=f[i-1][j-1]+f[i][j-1]$$ 交上去$A$的时候都蒙了. 考后才知道原因. 考虑$n$维空间内原来有 ...

  7. [BZOJ 4033] [HAOI2015] T1 【树形DP】

    题目链接:BZOJ - 4033 题目分析 使用树形DP,用 f[i][j] 表示在以 i 为根的子树,有 j 个黑点的最大权值. 这个权值指的是,这个子树内部的点对间距离的贡献,以及 i 和 Fat ...

  8. Bzoj 1055: [HAOI2008]玩具取名 (区间DP)

    Bzoj 1055: [HAOI2008]玩具取名 (区间DP) 题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1055 区间动态规划和可 ...

  9. [BZOJ 3992] [SDOI 2015] 序列统计(DP+原根+NTT)

    [BZOJ 3992] [SDOI 2015] 序列统计(DP+原根+NTT) 题面 小C有一个集合S,里面的元素都是小于质数M的非负整数.他用程序编写了一个数列生成器,可以生成一个长度为N的数列,数 ...

随机推荐

  1. 【NumPy学习指南】day5 改变数组的维度

    我们已经学习了怎样使用reshape函数,现在来学习一下怎样将数组展平. (1) ravel 我们可以用ravel函数完成展平的操作: In: b Out: array([[[ 0, 1, 2, 3] ...

  2. 洛谷 1164 小A点菜

    题目背景 uim神犇拿到了uoi的ra(镭牌)后,立刻拉着基友小A到了一家……餐馆,很低端的那种. uim指着墙上的价目表(太低级了没有菜单),说:“随便点”. 题目描述 不过uim由于买了一些辅(e ...

  3. (三)SpringMVC之常用注解

    SpringMVC的常用注解 注解 说明 @Controller 用于说明这个类是一个控制器 @RequestMapping 用于注释一个控制器类或者控制器类的方法 @RequestParam 用于将 ...

  4. ubuntu 14.04 安装redis

    root@hett-PowerEdge-T30:~# sudo apt-get install redis-server Reading package lists... DoneBuilding d ...

  5. xcode或者mac自带颜色器选择rgb格式

    解决方法

  6. UVALive 4080 Warfare And Logistics (最短路树)

    很多的边会被删掉,需要排除一些干扰进行优化. 和UVA - 1279 Asteroid Rangers类似,本题最关键的地方在于,对于一个单源的最短路径来说,如果最短路树上的边没有改变的话,那么最短路 ...

  7. 机器学习(3)- 学习建议<误差出现如何解决?>

    根据Andrew Ng在斯坦福的<机器学习>视频做笔记,已经通过李航<统计学习方法>获得的知识不赘述,仅列出提纲. 1 学习建议 误差太大,如何改进? 使用更多的训练样本→解决 ...

  8. 用cssText批量修改样式

    一般情况下我们用js设置元素对象的样式会使用这样的形式: var element= document.getElementById(“id”);element.style.width=”20px”;e ...

  9. C++基础:虚函数、重载、覆盖、隐藏<转>

    转自:http://www.2cto.com/kf/201404/291772.html 虚函数总是跟多态联系在一起,引入虚函数可以使用基类指针对继承类对象进行操作! 虚函数:继承接口(函数名,参数, ...

  10. Java的jdbc调用SQL Server存储过程Bug201906131119

    SQL Server数据库存储过程,一个查询使用动态sql,另一个不使用动态sql,这种情况,jdbc可能获取不到实际查询数据,虽然数据库中执行没问题. 解决方法,都使用静态sql,或都使用动态sql ...