hdu 1246
很久没有写题解了~因为懒(年纪大了就是脸皮厚,还有脸说)
这道题今天花了很长时间去推,一开始以为是规律题,没推出来,直接模拟也TLE了,接着考虑实在是没思路,看了题解。
思路大概就是这样:
先上代码(别人大佬的)
- #include<iostream>
- using namespace std;
- int main()
- {
- int n;
- int a[];
- memset(a, , sizeof(a));
- a[] = a[] = ;
- int i, j;
- for (i = ; i < ; i += ) //基数是共轭的
- {
- for (j = - i; j >= ; j--)
- {
- a[i + j] += a[j]; //基数加偶数还是基数,所以共轭,基数加基数是偶数,还是共轭的
- }
- }
- while (cin >> n)
- {
- cout << a[n] << endl;
- }
- return ;
- }
其实就是一道简单的递推题,关键是思路的问题
我们把一个自共轭Ferrers图的最外面的横行和竖行去掉,会发现剩下来的还是自共轭Ferrers图,接着再去掉,一直到只剩下一个,OK,一个当然只有一种放置方法。
然后我们再看到 另外一个 面积为3(只有一行竖和横)的自共轭Ferrers图,会发现它还可以放1个面积在第二行,于是面积就成为了4,依然还是自共轭Ferrers图。
再再再看到一个面积为5(只有一行竖和横)的自共轭Ferrers图,会发现它还可以放1个面积,可以放3个面积,可以放4个面积,于是面积就成为了6,8,9,面积为6,8,9的依然还是自共轭Ferrers图。
最后再看到一个面积为9(只有一行竖和横)的自共轭Ferrers图,会发现它还可以放1个,4个,5个等等。
这样子思路就出来了:
我们由大到小开始遍历看看能在自己里面放几个,放完组成的面积是多少,该对应面积的排列数加一
例如
首先 我们给a[0],a[1]赋值1,因为面积1和0就只有1种了,其他a[]都为0
然后我们从大到小开始遍历
第一次有效赋值是从a[3+1]+=a[1]开始的,这表示着 面积3添加1个面积,得到面积4,面积4就可以由3+1这种组合得到,于是加上面积1的组合数就等于面积4的总组合数
第二次有校赋值a[3+0]+=a[0],这表示着 面积3添加0个面积,得到面积3,面积3就可以由3+0这种组合得到,于是加上面积0的组合数就等于面积3的总组合数
再看看a[8]的组合方式 5+3,7+1,所以面积8的组合数就是面积3的组合数+面积1的组合数。
最后看看a[18]的组合方式,9+5+3+1,所以面积18的组合数为4.
下面再说说代码上的解释
第一个for循环之所以+=2,是因为是在横竖两边各加了一个单位
第二个for循环之所以是从大到小遍历,是因为我们更新的数据要从小开始,因为我们添加的单位不能超过边界,也就是以最外界横竖为长宽的边界。
例如a[3+100]+=a[100],这样其实是无效的,因为a[100]此时仍为0
而a[3+1]+=a[1],这样则是有校的,因为a[1]此时为1,也就代表着,面积3可以放得下面积1从而构成面积4.
还有一个好处就是 例如a[18]==4 如果是a[81+18]==a[99],这样意味着a[81]的面积添加a[18]的所有组合数了,因为a[18]不仅仅只有一种组合数.
hdu 1246的更多相关文章
- HDU 1312 (BFS搜索模板题)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1312 题目大意:问迷宫中有多少个点被访问. 解题思路: DFS肯定能水过去的.这里就拍了一下BFS. ...
- HDU 5643 King's Game 打表
King's Game 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5643 Description In order to remember hi ...
- hdu 1174:爆头(计算几何,三维叉积求点到线的距离)
爆头 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submissi ...
- 转载:hdu 题目分类 (侵删)
转载:from http://blog.csdn.net/qq_28236309/article/details/47818349 基础题:1000.1001.1004.1005.1008.1012. ...
- HDOJ 2111. Saving HDU 贪心 结构体排序
Saving HDU Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- AC日记——丑数 codevs 1246
1246 丑数 USACO 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 查看运行结果 题目描述 Description 对于一给定的素 ...
- 【HDU 3037】Saving Beans Lucas定理模板
http://acm.hdu.edu.cn/showproblem.php?pid=3037 Lucas定理模板. 现在才写,noip滚粗前兆QAQ #include<cstdio> #i ...
- hdu 4859 海岸线 Bestcoder Round 1
http://acm.hdu.edu.cn/showproblem.php?pid=4859 题目大意: 在一个矩形周围都是海,这个矩形中有陆地,深海和浅海.浅海是可以填成陆地的. 求最多有多少条方格 ...
- HDU 4569 Special equations(取模)
Special equations Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u S ...
随机推荐
- 【剑指Offer】面试题06.从尾到头打印链表
题目 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回). 示例 1: 输入:head = [1,3,2] 输出:[2,3,1] 限制: 0 <= 链表长度 <= 1000 ...
- POJ 2996:Help Me with the Game
Help Me with the Game Time Limit: 1000MS Memory Limit: 65536KB 64bit IO Format: %I64d & %I64 ...
- POJ 1185:炮兵阵地
炮兵阵地 Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 21366 Accepted: 8280 Description ...
- 热衷外卖的韩国与中国,外卖APP最大的区别有哪些?
额,一向"自大"的韩国人总是想处处争先.就连在外卖方面,韩国人也说自己的"外卖民族",对外卖有着一种"痴迷".事实上,早在20多年前韩国外卖 ...
- 阿里巴巴技术总监全解中台架构19页ppt
//初创时,快速上线 单体架构至少撑了3年 //分布式,中间件基座 //平台化,内部是简单服务,对于业务侧就是快速上线 //平台化之后由于多平台协作问题,再次出现问题: 效率仍然不能匹配业务发展之需要 ...
- 创建了以个vagrant box centos php7 nginx swoole git
php7.2.9 centos7 nginx.1.16 swoole4.4.4 下载地址 链接:https://pan.baidu.com/s/14p7xIa0ZZigRuYvZxnMsYA 提取 ...
- Windows系统JDK环境变量配置
一.环境准备 Windows10 jdk1.8.0_144 二.下载并安装JDK 下载 密码: r5ym 三.环境变量配置 首先,打开控制面板>系统和安全>系统,点击高级系统设置进入系统属 ...
- JDK源码阅读-------自学笔记(五)(浅析数组)
一.数组基础 1.定义和特点 数组也可以看做是对象,数组变量属于引用类型,数组中每个元素相当于该队形的成员变量,数组对象存储在堆中. 2.初始化数组 常用类初始化 // 整型初始化 int[] int ...
- IDEA--安装
1:下载IDEA 官网:http://www.jetbrains.com/idea/download/#section=windows(选择下载.zip) 2:解压 3:破解: 1)在C:\Windo ...
- XML--XML Schema Definition(三)
参考 http://www.w3school.com.cn/schema/index.asp XSD 复合元素 复合元素指包含其他元素及/或属性的 XML 元素. 有四种类型的复合元素: 空元素 包含 ...