Codeforces 300D Painting Square 题解
来源:互联网 发布:海岛奇兵升船数据 编辑:程序博客网 时间:2024/05/18 20:46
题意
一个四周围都是黑色的由n行n列小格子组成的方块,每次可以选择一个已经由黑框包围的正方形将它的一行一列涂黑要求分割出的部分还都是正方形,问涂k次可以有多少种不同的涂法
思路
因为只能分割成正方形,所以肯定是每一次涂最中间的行和最中间的列,那么可以涂的次数就是不断对n减一除以2看能做多少层,至于答案就用dp计算,从小往大,先左右变成二倍,再上下变成二倍,ans[i][j]=(ans[i][j]+(temp[k]*temp[j-1-k])%mod)%mod,ans[i][j]表示涂i层已经涂了j次的涂法数量,temp[k]表示上下一半那么大涂k次的方法数,temp[j]=(temp[j]+(ans[i][k]*ans[i][j-k])%mod)%mod,这个就是在做左右的延展,左边涂k次,右边涂j-k次,一共就涂了j次,最后ans[层数][k]就是答案
代码
#include<cstdio>#define mod 7340033long long ans[31][1001],temp[1001];int main(){ long long q,n,k,cnt; ans[0][0]=1; temp[0]=1; for(long long i=1;i<=30;i++) { ans[i][0]=1; for(long long j=1;j<=1000;j++) for(long long k=0;k<j;k++) ans[i][j]=(ans[i][j]+(temp[k]*temp[j-1-k])%mod)%mod; for(long long j=1;j<=1000;j++) temp[j]=0; temp[0]=1; for(long long j=1;j<=1000;j++) for(long long k=0;k<=j;k++) temp[j]=(temp[j]+(ans[i][k]*ans[i][j-k])%mod)%mod; } scanf("%I64d",&q); for(long long i=0;i<q;i++) { scanf("%I64d%I64d",&n,&k); cnt=0; while((n%2)&&n>1) { cnt++; n/=2; } printf("%I64d\n",ans[cnt][k]); } return 0;}
阅读全文
0 0
- Codeforces 300D Painting Square 题解
- Codeforces 300D Painting Square (FFT)
- CodeForces 675B D - Restoring Painting
- codeforces 594D题解
- Codeforces #828B: Black Square 题解
- Codeforces300D Painting Square
- codeforces D. Ice Sculptures 题解
- Codeforces 325D Reclamation 题解
- Codeforces 475D CGCDSSQ 题解
- Codeforces-417D总结&题解
- !codeforces 399D Painting The Wall-概率dp
- [Codeforces Round #195 DIV2E (CF336E)] Vasily the Bear and Painting Square
- 小白题解 Codeforces 1A Theatre Square
- Painting Fence题解
- Codeforces 335D Rectangles and Square 暴力 + DP
- codeforces #235 D. Roman and Numbers 题解
- Codeforces D. Giving Awards 412 题解
- Codeforces 343D Water Tree 题解&代码
- YouTube视频爬虫简单抓取
- 快速排序详解
- 涨粉与变现,微信小程序正确的打开方式是什么?
- 查看Linux进程CPU过高具体的线程堆栈(不中断程序)
- 微信公众平台消息接口开发(50)在线点歌/在线音乐
- Codeforces 300D Painting Square 题解
- API版本兼容@SuppressLint 和 @TargetApi
- 负数除以整数的余数怎么算?
- 课上一节课时间写的《物联网工程》课程报告
- Gson 解析时间格式问题
- 找到编译后的.class文件
- Android6.0后动态权限
- 过滤器、监听器、拦截器
- Qt5 By CMake