提交人:侯建鹏

提交日期:2012/4/16

1002 Ignatius and the Princess III

解题思路(一):动态规划

先设置int p[N][N];

Dp 方程为:p[i][j]=p[i][j-1]+p[i-j][j]。

其中,p[i][j]表示将i分解成小于等于j个项的方法的种数。很明显,p[i][j]等于将i分解成小于等于j-1个项的种数(即p[i][j-1]),再加上,将它分解成j个项的方法的种数(即p[i-j][j]).

下面重点来说一下为什么将i分解成j个项的方法的种数为p[i-j][j]。

举例:将4分解成2个项的方法有两种,3、1和2、2.将这两组数字每个数字都减一,你会发现这两组数字变成了2、0和1、1,把0省略掉,即写成2和1、1,这恰好是把2分解成小于等于两个项的方法数。

所以,你可以清楚的发现,i分解成j个项的方法的种数即为将i-j分解成小于等于j个项的方法种数,即p[i-j][j].

当然,还有一些其他问题需要注意,不过就很简单了,详见程序。

#include<stdio.h>#define N 130int p[N][N];int main(){for(int i=0;i<N;i++){p[0][i]=1;p[1][i]=1;p[i][1]=1;}for(i=2;i<N;i++)for(int j=2;j<N;j++)if(j<=i)p[i][j]=p[i][j-1]+p[i-j][j];elsep[i][j]=p[i][j-1];int n;while(scanf("%d",&n)==1)printf("%d\n",p[n][n]);return 0;}

 

解题思路(二):母函数

我感觉其实就是特殊的动态规划,计算(1+x+x^2+x^3+……)*(1+x^2+x^4+x^6+……)*(1+x^3+x^6+x^9+……)*……中最后x^n前面的系数。详见代码。

#include<stdio.h>#define N 122int main(){int a[N],b[N],i,j,k,n;for(i=0;i<N;i++){a[i]=1;b[i]=0;}for(i=2;i<N;i++){for(k=0;k<N;k+=i)for(j=0;j+k<N;j++)b[j+k]+=a[j];for(j=0;j<N;j++){a[j]=b[j];b[j]=0;}}while(scanf("%d",&n)==1)printf("%d\n",a[n]);return 0;}

转载于:https://www.cnblogs.com/LETTers/archive/2012/04/16/2452702.html

LETTers比赛第三场 --1002 Ignatius and the Princess III解题报告相关推荐

  1. Letters比赛第六场1002 Babelfish解题报告

    1002 Babelfish (POJ 2503) 解题思路:字符串的哈希,找一个比较好的hash函数就可以了,冲突时用链表的形式组织.用STL中的map等容器也可以过,不过性能差点. 代码如下: # ...

  2. LETTers比赛第三场 --1003 大明A+B解题报告

    报告人:侯建鹏 报告日期:2012/4/16 1003 大明A+B 解题思路:模拟 我的方法很简单,就是不停的模拟.模拟.再模拟. 首先,把每个数都分成两部分,整数部分和小数部分,即a_h_count ...

  3. LETTers比赛第七场 Guess the Numbers

    这是其它国家区预赛的题目,大家可以看出来区域现场赛最简单题的难度. 解题的思路很容易想到,四则运算处理可能比较麻烦~但是经过细心调试应该问题不大:还有就是排列的生成可以自己写,但是这里提倡用next_ ...

  4. Letters比赛第六场1004 Unit Fraction Partition解题报告

    1004 Unit Fraction Partition(POJ 1980) 解题思路:DFS + 剪枝.这题的剪枝条件还是比较严格的,很容易超时,我想到的需要剪枝的情况有以下几点:①前几项的和超过了 ...

  5. 2015 多校赛 第三场 1002 (hdu 5317)

    Description Mr. Hdu is interested in Greatest Common Divisor (GCD). He wants to find more and more i ...

  6. LeetCode第187场周赛(Weekly Contest 187)解题报告

    差点又要掉分了,还好最后几分钟的时候,绝杀 AK.干巴爹!!! 第一题:思路 + 模拟暴力. 第二题:线性扫描. 第三题:双指针(滑动窗口) + 优先队列. 第四题:暴力每一行最小 k 个 + 优先队 ...

  7. LeetCode第176场周赛(Weekly Contest 176)解题报告

    又是一周掉分之旅,我发现,LeetCode周赛的数据好水,所以有的时候,实在没思路,先暴力解决试试(即使分析出时间复杂度会超时),比如第二题和第三题都可以暴力通过,GG思密达. 这周主要使用了数据结构 ...

  8. HDU 1028 HDU Ignatius and the Princess III

    简单的钱币兑换问题,就是钱的种类多了一点,完全背包. #include<cstdio> #include<cstring> int main () {int i,j,dp[12 ...

  9. HDU-1028 Ignatius and the Princess III(生成函数)

    题意 给出$n$,问用$1$到$n$的数字问能构成$n$的方案数 思路 生成函数基础题,$x^{n}$的系数即答案. 代码 #include <bits/stdc++.h> #define ...

最新文章

  1. python中的if not语句_python中使用if not x 语句用法
  2. crawler4j_迷你搜索引擎–使用Neo4j,Crawler4j,Graphstream和Encog的基础知识
  3. SharePoint 2010-随机出现的页面性能问题
  4. 前端学习(3079):vue+element今日头条管理-数据筛选处理
  5. 机器学习速成课程 | 练习 | Google Development——编程练习:使用神经网络对手写数字进行分类
  6. r语言回归分析_R语言之cox回归分析
  7. SAP License:面试谈
  8. linux虚拟化桌面协议,桌面虚拟化传输协议之android spice
  9. 《C#高效编程》读书笔记11-理解短小方法的优势
  10. 百度网盘图片直链的php解析代码
  11. FreeSwitch视频会议,4路以上CPU占用暴增的原因
  12. Debian Gnu/Linux8.5安装GOLANG环境笔记
  13. 计算机开关电源 原理与应用,开关电源原理与应用设计
  14. 暴力破解zip压缩密码
  15. Ciprian Manolescu 解决了三角解剖猜想
  16. 撂荒耕地变“希望良田” 国稻种芯:平远县热柘镇以企带村
  17. 【EXCEL绘制地图】获取地图图标信息时遇到问题。请确保处于联机状态,然后重试
  18. C2678 二进制“<“:没有找到接受“ const_Ty“类型的左操作数的运算符
  19. 华科计算机专硕英语几,2020华中科技大学计算机专硕考研成功经验谈
  20. .NET-房贷计算器

热门文章

  1. python | 关键词快速匹配检索小工具 pyahocorasick / ahocorapy
  2. python︱微服务Sanic制作一个简易本地restful API
  3. inteliJ maven 打包时把依赖的包一起打
  4. Codeforces Round #161 (Div. 2) B. Squares
  5. C++实现大顶堆(插入,删除)
  6. HTML中IE版本条件注释整理
  7. hdu4292 Food 最大流
  8. Bossie Awards 开源大数据工具最佳列表
  9. 【参数辨识】永磁同步电机的参数辨识
  10. Jsp基本page指令、注释、方法声明,书写规范及注意事项