bzoj3810: [Coci2015]Stanovi 记忆化搜索
来源:互联网 发布:php 防止sql注入 编辑:程序博客网 时间:2024/04/28 15:18
膜拜了网上神犇的题解,得知是记忆化搜索之后感觉整个题就傻逼了。
然而我作死得把大数组开在前面,然后就被卡常数了(这种卡常还真是233333)。
主要思路就是一个矩形房间可以分为多个小矩形,然后递归处理。
#include <cstdio>#include <algorithm>#include <cstring>#include <iostream>using namespace std;#define sint long long#define INF 1LL<<60sint dp[310][310][2][2][2][2];int n,m,k;inline sint dfs(int x,int y,int a,int b,int c,int d){ if(x>y) { swap(x,y); int aa=c,bb=d,cc=b,dd=a; a=aa,b=bb,c=cc,d=dd; if(a>b)swap(a,b); if(c>d)swap(c,d); } if(dp[x][y][a][b][c][d]!=-1) return dp[x][y][a][b][c][d]; if(!a&&!b&&!c&&!d)return dp[x][y][a][b][c][d]=INF; long long ans=(long long)(x*y-k)*(x*y-k); sint tmp; if(a+b+c>0&&a+b+d>0) for(int i=1;i<x;i++) ans=min(ans,dfs(i,y,a,b,c,0)+dfs(x-i,y,a,b,0,d)); if(a+c+d>0&&b+c+d>0) for(int i=1;i<y;i++) ans=min(ans,dfs(x,i,a,0,c,d)+dfs(x,y-i,0,b,c,d)); return dp[x][y][a][b][c][d]=ans;}int main(){ memset(dp,-1,sizeof(dp)); scanf("%d%d%d",&n,&m,&k); printf("%lld\n",dfs(n,m,1,1,1,1)); return 0;}
0 0
- bzoj3810: [Coci2015]Stanovi 记忆化搜索
- bzoj3810[Coci2015]Stanovi 记忆化搜索
- 3810: [Coci2015]Stanovi 记忆化搜索
- 【COCI2015】【BZOJ3810】Stanovi
- BZOJ3810 [Coci2015]Stanovi
- [DP] [BZOJ3810] [Coci2015]Stanovi
- [Coci2015]Stanovi解题报告
- bzoj 3810: [Coci2015]Stanovi
- BZOJ P3810[Coci2015]Stanovi
- 3810: [Coci2015]Stanovi
- BZOJ 3810: [Coci2015]Stanovi
- 3810: [Coci2015]Stanovi
- [DP] BZOJ 3810 [Coci2015]Stanovi
- bzoj 3810: [Coci2015]Stanovi 动态规划
- 记忆化搜索例题
- PKU1088---记忆化搜索
- PKU1088 记忆化搜索
- HDU1078 记忆化搜索
- springmvc使用实体参数和ServletAPI
- HDU_1829
- android中view 的setTag,getTag方法的作用
- android 滚轮刻度尺的实现
- J2EE基础知识JSP
- bzoj3810: [Coci2015]Stanovi 记忆化搜索
- ListView连续调用getview问题分析及解决
- 20150712,关于C。
- JNA调用C动态库dll、so
- SpringMVC中servletFileUpload.parseRequest(request)解析为空获取不到数据问题
- hdu 5120
- 指针与数组的区别
- LeetCode题解——Longest Common Prefix
- html5基础视频教程第一节