很久没有做题了,前天做了一道题结果弱的一逼。。。搜了解题报告不说...还尼玛秀了上限

题意:

给出宽和高为n和m的一堵墙,手上有长为1,2,3,4高均为1的砖,问形成一个坚固的墙有多少种做法。

坚固的意思是,不能一刀切到底。

解法:

将问题进行分解。求的所有坚固的墙ans(w,h)=所有墙all(w,h)-所有不坚固的墙bro(w,h)

所有的墙all(w,h)=一层的所有情况x(w)**h

所有不坚固的墙bro(w,h) = ans(1,h)*all(w-1,h)+ans(2,h)*all(w-2,h)+...+ans(w-1,h)*all(1,h)

x(w,1) = x(w-1,1)+x(w-2,1)+x(w-3,1)+x(w-4,1)

显然剩下的就是dp了

细节:

因为取余数,做减法的时候,有可能会发生不够减的情况记得+R就好

自己犯的错误:

这题的范围是t <=100 n,m<=1000

如果对于每个case都进行dp的话,是n*n*t的复杂度

然后如果进行预处理的话是n*n*n

然后问题就出在这里了 预处理的话会TLE

但是有个cheat的办法就是输入之后先判断下每个高度最大的w就能过。

 #include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
#include <cstring> using namespace std; const int MAXSIZE = ;
const int R = ;
int wall[MAXSIZE][MAXSIZE];
int ans[MAXSIZE][MAXSIZE];
int vw[MAXSIZE];
int vh[MAXSIZE];
int hm[MAXSIZE];
int t;
int wmax;
int hmax; void input(){
cin>>t;
for ( int i = ; i < t; i++ ) {
cin>>vh[i]>>vw[i];
wmax = wmax<vw[i] ? vw[i]:wmax;
hmax = hmax>vh[i] ? hmax:vh[i];
}
for ( int i = ; i < t; i++ ) {
hm[vh[i]] = hm[vh[i]]>vw[i] ? hm[vh[i]]:vw[i];
}
} void init() {
memset(wall,,sizeof(wall));
memset(ans,,sizeof(ans));
wall[][] = ;
wall[][] = ;
wall[][] = ;
wall[][] = ;
ans[][] = ;
ans[][] = ;
ans[][] = ;
ans[][] = ;
for ( int w = ; w <= wmax; w++ ) {
wall[w][] = (wall[w][] + wall[w-][]%R)%R;
wall[w][] = (wall[w][] + wall[w-][]%R)%R;
wall[w][] = (wall[w][] + wall[w-][]%R)%R;
wall[w][] = (wall[w][] + wall[w-][]%R)%R;
}
for ( int h = ; h <= hmax; h++ ) {
wall[][h] = ;
ans[][h] = ;
}
for ( int w = ; w <= wmax; w++ ) {
for ( int h = ; h <= hmax; h++ ) {
wall[w][h] = ((long long)wall[w][h-]*wall[w][])%R;
}
}
for ( int h = ; h <= hmax; h++ ) {
for ( int w = ; w <= hm[h]; w++ ) {
long long t = ;
for ( int k = ; k < w; k++ ) {
t += (long long)ans[k][h]*wall[w-k][h];
t %= R;
}
ans[w][h] = wall[w][h] > t? wall[w][h]-t:wall[w][h]-t+R;
ans[w][h] %= R;
}
}
} void solve() {
for ( int i = ; i < t; i++ ) {
cout<<ans[vw[i]][vh[i]]<<endl;
}
} int main() {
input();
init();
solve();
return ;
}

sb一般的代码

最近老师安排的事情比较多,,,书看的也慢了。。。简直是弱爆了。。。

legoblock秀上限的更多相关文章

  1. 易企秀微场景2016最新完整版V10.5,小编亲测修复众多错误

    易企秀V10.5更新说明1.修复拨号英文错误2.修复转送场景问题3.修复设置场景密码乱码问题4.修复前台批量删除客户图片5.修复数据收集分页问题6.修复图片分类错乱问题7.修复音乐和特效冲突问题8.修 ...

  2. C++ win32线程数上限

    hThread = CreateThread( NULL,  0,  WorkerFunction,  &threadParm,  0, &dwThreadID  ); 这样的创建方法 ...

  3. 开源IM工程“蘑菇街TeamTalk”的现状:一场有始无终的开源秀

    1.前言 随着云IM的发展,已吸引越来越多有IM需求的APP接入.但考虑到云IM无论从商业模式还是运营模式上,还需经过多年的沉淀,才可能真正实现客户与服务商的运营和服务良性循环的双赢局面.在此之前,加 ...

  4. java中泛型上限,下限应用

    v 一.程序中无形之中用到的泛型 import java.util.*; class Person implements Comparable<Person>{ String name; ...

  5. 全球酷站秀:15个顶尖的 CSS3 网站作品

    每天有数以百计的网站推出,其中很多优秀网站被推荐到 CSS 画廊供大家评分和评论,这对于网页设计师来说是很好的灵感来源.今天,我们选择了15个来自全球各地的 CSS3 网站设计作品, 它们都是赢得 C ...

  6. HBase单个RegionServer的region数目上限

    前言 RegionServer维护Master分配给它的region,处理对这些region的IO请求,负责切分在运行过程中变得过大的region, 由于集群性能( 分配的内存和磁盘是有限的 )有限的 ...

  7. CodePen 作品秀:Canvas 粒子效果文本动画

    作品名称——Shape Shifter,基于 Canvas 的粒子图形变换实验.在页面下方的输入框输入文本,上面就会进行变换出对应的粒子效果文本动画. CodePen 作品秀系列向大家展示来自 Cod ...

  8. 泛型的上限和下限的Demo

    Main Class package Comparator.Bean; import java.math.BigDecimal; import java.util.List; import java. ...

  9. 使用eclipse JDT compile class,解决 无法确定 X 的类型参数;对于上限为 X,java.lang.Object 的类型变量 X,不存在唯一最大实例

    ant 命令行方式执行build javac编译class出现 泛型无法转换 无法确定 <X>X 的类型参数:对于上限为 X,java.lang.Object 的类型变量 X,不存在唯一最 ...

随机推荐

  1. if 和 swith的选择.

    具体数值不多,而是符合byte short int char这四种类型,建议使用swtich语句.因为效率稍高. 其他情况:对区间判断,对结果为boolean类型判断,使用if,if的使用范围更广.

  2. classpath and path.

    simply talk about the <path> and the <classpath> in java development. when the <path& ...

  3. PL/SQL Developer远程连接Oracle数据库

    首先打开电脑,到pl/sql安装的指定目录[D:\app\DZL\product\11.2.0\dbhome_1\NETWORK\ADMIN]找到[tnsnames.ora]     打开[tnsna ...

  4. oracle行列转换总结-转载自ITPUB

    原贴地址:http://www.itpub.net/thread-1017026-1-1.html 谢谢原贴大人 最近论坛很多人提的问题都与行列转换有关系,所以我对行列转换的相关知识做了一个总结, 希 ...

  5. hdoj 2191(多重背包)

    悼念512汶川大地震遇难同胞——珍惜现在,感恩生活 Time Limit : 1000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/ ...

  6. 泛型? extents super

    ?可以接受任何泛型集合,但是不能编辑集合值.所以一般只在方法参数中用 例子: ? extends Number  则类型只能是Number类的子孙类 ? super String  则类型只能是Str ...

  7. saiku

    1.saiku下载http://community.meteorite.bi/可以下载各个版本的源代码 2.下载到   saiku-latest.zip 3.解压运行比较简单     解压出来的目录: ...

  8. dede取得指定栏目的链接

    获取标签 typeid 为目录的 id {dede:type typeid='1'}       <a href="[field:typelink /]">[field ...

  9. Flask-SQLALchemy查询

    from: http://blog.sina.com.cn/s/blog_633277f90100kpvm.html 似乎ORM最难设计的部分是查询.特别是面向对象的查询,今天学习SQLAlchemy ...

  10. python 编程之计算器

    作业: 使用正则表达式和递归实现计算器功能. 实现: 1.实现带括号的计算 2.实现指数.加减乘除求余等功能 一.实例说明: 本实例自己写了个版本,但依旧存在一点bug,例:-2-2等计算问题,故最后 ...