社区
数据结构与算法
帖子详情
探讨一道有趣的题目
adfas
2009-05-18 03:07:47
原题链接http://acm.pku.edu.cn/JudgeOnline/problem?id=3734
说有n个砖块,有4种颜色(红,蓝,绿,黄),现在用这四种颜色给这n块砖涂上颜色。并且要求红色和绿色砖块的数目均为偶数。
问一共有多少种方法。
貌似能推导出o(1)组合数学办法,可是我想不出来。
...全文
163
12
打赏
收藏
探讨一道有趣的题目
原题链接http://acm.pku.edu.cn/JudgeOnline/problem?id=3734 说有n个砖块,有4种颜色(红,蓝,绿,黄),现在用这四种颜色给这n块砖涂上颜色。并且要求红色和绿色砖块的数目均为偶数。 问一共有多少种方法。 貌似能推导出o(1)组合数学办法,可是我想不出来。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
tian428
2009-05-19
打赏
举报
回复
所以,直接套4^(n-1)+2^(n-1)的公式计算 o(1)
...
纯数学问题
tian428
2009-05-19
打赏
举报
回复
假设n个砖块红绿都为偶数的方法数为f(n), 红绿都为奇数的方法数为g(n);
n个砖块,可以看做原来有n-1个砖头,再加一个砖头.原来那n-1个砖头的染色方法有如下可能:
1.已经是红绿都为偶数,那剩下的那块砖头必定是黄或蓝,这种情况下有2*f(n-1)种方法;
2.红绿都为奇数,此时无论剩下的那块砖头染何种颜色都无法满足红绿都为偶数的条件;
3.此外(即红绿一奇一偶),剩下的那块砖头必定要染前n-1红绿中为奇的那种颜色,这种情况下有4^(n-1)-f(n-1)-g(n-1)种方法 (即总方法数减去全奇和全偶的方法数)
所以 f(n)=2*f(n-1)+4^(n-1)-f(n-1)-g(n-1)=4^(n-1)+f(n-1)-g(n-1)
同理可推g(n)=2*g(n-1)+4^(n-1)-f(n-1)-g(n-1)=4^(n-1)+f(n-1)-g(n-1)
所以 f(n)=4^(n-1)+f(n-1)-g(n-1)
=4^(n-1)+(4^(n-2)+f(n-2)-g(n-2))-(4^(n-2)+f(n-2)-g(n-2))
=4^(n-1)+2*(f(n-2)-g(n-2))
=...
=4^(n-1)+2^(n-2)*(f(1)-g(1)) 掰掰手指就可以知道f(1)=2,g(1)=0;
=4^(n-1)+2^(n-1)
题外话,同理可以推得g(n)=4^(n-1)-2^(n-1)
绿色夹克衫
2009-05-19
打赏
举报
回复
不好意思,看了一下原题,似乎排列顺序也需要考虑进去,那答案的数量就多多了。
给出的例子里面2块的答案是6,如果不考虑顺序的话,2块的答案应该是5。原题里面说的是n块砖排成1排,有多少种涂法!
根据原题来推的话,似乎是4^(n-1) + 2^(n-1),说实话,基本上是靠凑数弄出来的
求mod 10007 可以到log(n),不过mod的结果应当存在一个循环节,利用预运算计算出循环节的长度,是有可能达到O(1)的。
绿色夹克衫
2009-05-18
打赏
举报
回复
自己测了几个,好像是对的,改写成关于n的公式
n为奇数:(n+1)(n+3)(n+5)/24
n为偶数:(n+2)(n+3)(n+4)/24
推导的方法大概是,先将n分为2部分,其中一部分为偶数(P0),另一部分可以是奇数,也可以是偶数(P1)
共(n/2) + 1项
P0可以分为2部分,共(P0 / 2) + 1项(对应必须为偶数的两种颜色)
P1可以分为2部分,共(P1 + 1)项(对应可以为奇数的两种颜色)
可以推出f(n) = f(n - 2) + ((n / 2) + 1) ^ 2 n为偶数
可以推出f(n) = f(n - 2) + (n / 2) ^ 2 + (n / 2) n为奇数
然后利用平方和公式,应该能够推出最后的结果。
绿色夹克衫
2009-05-18
打赏
举报
回复
如果对了,我再详细说怎么推的!否则白浪费感情!
绿色夹克衫
2009-05-18
打赏
举报
回复
推了一个,LZ验证一下吧!
n为奇数(m = n + 1 / 2):m(m + 1)(m + 2)/3
n为偶数(m = n / 2):(m + 1)(m + 2)(2m + 3)/6
adfas
2009-05-18
打赏
举报
回复
[Quote=引用 5 楼 tian428 的回复:]
感觉推出一个公式,就是o(1)了,这样就成了纯数学问题。。。
另可不可以某种颜色用了0次?
[/Quote]
可以为0,0是偶数
tian428
2009-05-18
打赏
举报
回复
感觉推出一个公式,就是o(1)了,这样就成了纯数学问题。。。
另可不可以某种颜色用了0次?
adfas
2009-05-18
打赏
举报
回复
没关系啦,大牛帮想想,生成函数是很好列的,可是如何化简到o(1),就不晓得了。囧= =
绿色夹克衫
2009-05-18
打赏
举报
回复
不好意思,上面给的递推真是错误百出,没有仔细考虑,另外也不是O(1)的!
应该可以通过组合直接求出来!
[Quote=引用 1 楼 litaoye 的回复:]
递推?
f(n) = f(n - 1) * 2 + f(n - 2) * 2
[/Quote]
adfas
2009-05-18
打赏
举报
回复
N比较大10^9,最好想下看有无o(1)的计算公式,根据ac率和数据规模,应该是有的。可是偶想不到。
大牛帮忙想啊,这题还是有较强的探讨价值的
绿色夹克衫
2009-05-18
打赏
举报
回复
递推?
f(n) = f(n - 1) * 2 + f(n - 2) * 2
南岔事业编招聘2016年考试真题及答案解析打印版.docx
南岔事业编招聘2016年考试真题及答案解析打印版.docx
上海2020年事业编招聘考试真题及答案解析网友整理版.docx
上海2020年事业编招聘考试真题及答案解析网友整理版.docx
东港事业编招聘2019年考试真题及答案解析下载版(1).docx
东港事业编招聘2019年考试真题及答案解析下载版(1).docx
曾都事业编招聘2020年考试真题及答案解析最全版.docx
曾都事业编招聘2020年考试真题及答案解析最全版.docx
嵌入式C与C++语言精华文章集锦
嵌入式C与C++语言精华文章集锦嵌入式C与C++语言精华文章集锦
数据结构与算法
33,027
社区成员
35,336
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章