这讲真就是一篇显得自己认真做题的博客

因为真的比较习惯将培训所有的题都放到一篇博客中,又因为暑假好多培训,所以单题很少,这也是从博客中摘出来的

题目链接

如果合法,一定有一条贯穿整个矩形的线;

dp[i][j][t]长度为i,宽度为j,面向大海的边的状态是t这样划分最小差异度是啥;、

然后因为一定要贯穿,可以一分为二:dp[i][j][t]=左边+右边;

其中t:

t==1 只有一面环海:

显然如果我们要将其分成两部分,只能:

  1. for(int i=1;i<n;i++) ans=min(ans,work(i,m,1)+work(n-i,m,1));
  2. return f[n][m][t]=ans;

t2 && t4 有2面环海:

t==2:

如果要分成两部分的话,可以横着分,也可以竖着分:

  1. for(int i=1;i<n;i++) ans=min(ans,work(i,m,2)+work(n-i,m,1));//竖着分?
  2. for(int i=1;i<m;i++) ans=min(ans,work(n,i,2)+work(m-i,n,1));//横着分?

t==4:

同样可以横着分和竖着分:

  1. for(int i=1;i<n;i++) ans=min(ans,work(i,m,4)+work(n-i,m,4));
  2. for(int i=1;i<m;i++) ans=min(ans,work(n,i,1)+work(n,m-i,1));

t==3:三面环海:

同样有两种划分方法:

  1. for(int i=1;i<n;i++) ans=min(ans,work(i,m,3)+work(n-i,m,4));
  2. for(int i=1;i<m;i++) ans=min(ans,work(n,i,2)+work(n,m-i,2));

CODE:

  1. #include<cstdio>
  2. #include<algorithm>
  3. #include<cstring>
  4. #define ll long long
  5. using namespace std;
  6. inline int read(){
  7. int ans=0;
  8. char last=' ',ch=getchar();
  9. while(ch>'9'||ch<'0') last=ch,ch=getchar();
  10. while(ch>='0'&&ch<='9') ans=(ans<<1)+(ans<<3)+ch-'0',ch=getchar();
  11. if(last=='-') ans=-ans;
  12. return ans;
  13. }
  14. int n,m,k;
  15. ll ans;
  16. ll f[310][310][5];
  17. ll hs(int x,int y,int t){
  18. if(f[x][y][t]!=-1) return f[x][y][t];
  19. ll ans=((ll)x*y-k)*((ll)x*y-k);
  20. if(t==1){
  21. for(int i=1;i<x;i++) ans=min(ans,hs(i,y,1)+hs(x-i,y,1));
  22. return f[x][y][t]=ans;
  23. }
  24. if(t==3){
  25. for(int i=1;i<x;i++) ans=min(ans,hs(i,y,3)+hs(x-i,y,2));
  26. for(int i=1;i<y;i++) ans=min(ans,hs(x,i,4)+hs(x,y-i,4));
  27. return f[x][y][t]=ans;
  28. }
  29. if(t==2){
  30. for(int i=1;i<x;i++) ans=min(ans,hs(i,y,2)+hs(x-i,y,2));
  31. for(int i=1;i<y;i++) ans=min(ans,hs(x,i,1)+hs(x,y-i,1));
  32. return f[x][y][t]=ans;
  33. }
  34. if(t==4){
  35. for(int i=1;i<x;i++) ans=min(ans,hs(i,y,4)+hs(x-i,y,1));
  36. for(int i=1;i<y;i++) ans=min(ans,hs(x,i,4)+hs(y-i,x,1));
  37. return f[x][y][t]=ans;
  38. }
  39. }
  40. int main(){
  41. n=read();
  42. m=read();
  43. k=read();
  44. memset(f,-1,sizeof(f));
  45. ans=1e18;
  46. for(int i=1;i<n;i++) ans=min(ans,hs(i,m,3)+hs(n-i,m,3));
  47. for(int i=1;i<m;i++) ans=min(ans,hs(m-i,n,3)+hs(i,n,3));
  48. printf("%lld",ans);
  49. return 0;
  50. }

BZOJ 3810 [Coci2015]Stanovi的更多相关文章

  1. BZOJ3810: [Coci2015]Stanovi

    3810: [Coci2015]Stanovi Description Input 输入一行,三个整数,n, m, k   Output 输出一个数,表示最小不满意度.   Sample Input ...

  2. BZOJ 3881: [Coci2015]Divljak [AC自动机 树链的并]

    3881: [Coci2015]Divljak 题意:添加新文本串,询问某个模式串在多少种文本串里出现过 模式串建AC自动机,考虑添加一个文本串,走到的节点记录下来求树链的并 方法是按dfs序排序去重 ...

  3. BZOJ 3881: [Coci2015]Divljak

    3881: [Coci2015]Divljak Time Limit: 20 Sec  Memory Limit: 768 MBSubmit: 553  Solved: 176[Submit][Sta ...

  4. bzoj 3745: [Coci2015]Norma

    Description Solution 考虑分治: 我们要统计跨越 \(mid\) 的区间的贡献 分最大值和最小值所在位置进行讨论: 设左边枚举到了 \(i\),左边 \([i,mid]\) 的最大 ...

  5. BZOJ 3745: [Coci2015]Norma(分治)

    题意 给定一个正整数序列 \(a_1, a_2, \cdots, a_n\) ,求 \[ \sum_{i=1}^{n} \sum_{j=i}^{n} (j - i + 1) \min(a_i,a_{i ...

  6. 【刷题】BZOJ 3745 [Coci2015]Norma

    Description Input 第1行,一个整数N: 第2~n+1行,每行一个整数表示序列a. Output 输出答案对10^9取模后的结果. Sample Input 4 2 4 1 4 Sam ...

  7. bzoj3810: [Coci2015]Stanovi(记忆化搜索)

    实际上切出来的矩阵在原矩阵上的位置是不重要的...重要的只有矩阵的大小和上下左右是否在边界上. 于是我们可以设f[x][y][l][r][u][d]表示x*y的矩阵上下左右是不是边界的最小代价. 记忆 ...

  8. bzoj 3881: [Coci2015]Divljak AC自动机

    题目大意: http://www.lydsy.com/JudgeOnline/problem.php?id=3881 题解: 这道题我想出了三种做法,不过只有最后一种能过. 第一种: 首先我们把所有的 ...

  9. bzoj 3881 [Coci2015]Divljak fail树+树链的并

    题目大意 Alice有n个字符串S_1,S_2...S_n,Bob有一个字符串集合T,一开始集合是空的. 接下来会发生q个操作,操作有两种形式: "1 P",Bob往自己的集合里添 ...

随机推荐

  1. spark的accumulator值保存在哪里?

    答案:保存在driver端.因此需要对收集的信息的规模要加以控制,不宜过大.避免 driver端的outofmemory问题!!!

  2. Comet OJ - Contest #12 D

    题目描述 求(x,y)的对数满足x∈[0,a],y∈[0,b],x⊕y=0且|x-y|<=m 题解 一种比较sb的做法是考虑x-y的借位,根据借位以及差值进行转移 还有一种比较正常的做法,假设一 ...

  3. JPA学习(三、JPA_API)

    框架学习之JPA(三) JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中 ...

  4. C++二维数组(指针)做参数

    一.问题描述 使用C++编程过程中经常需要使用到二维数组,然而初级程序员在使用过程中经常会出错使程序崩溃.下面就二维指针的定义,初始化,以及二维指针做参数给出简单介绍. 1.二维数组的定义与初始化 在 ...

  5. sqli-labs29-31关Background-6 服务器(两层)架构

    首先介绍一下29,30,31这三关的基本情况: 服务器端有两个部分:第一部分为tomcat为引擎的jsp型服务器,第二部分为apache为引擎的php服务器,真正提供web服务的是php服务器.工作流 ...

  6. NOIP2018初赛划水记

    尽管初赛好像没什么好写的,但还是以此作为我的第一篇游记吧. 前夜 本来以为初赛水(去年分数线36来着),几周前做了一套普及组的卷子90多分感觉良好就没管了(不明白那些专门花时间看初赛书的人),结果Mr ...

  7. android遮罩阴影对话框的实现

    定义 <style name="MyDialog" parent="@android:Theme.Dialog"> <item name=&q ...

  8. PHP通用后台管理系统发布!

    下载地址:https://gitee.com/lim2018/phpadmin

  9. centos7 安装 Spring Tools 4 for Eclipse

    1.spring 官网下载 https://spring.io/tools 2.解压 tar -zxvf spring-tool-suite--.RELEASE-e4.11.0-linux.gtk.x ...

  10. Loading class `com.mysql.jdbc.Driver'. This is deprecated警告处理,jdbc更新处

    1.报错信息是这样的; 处理:提示信息表明数据库驱动com.mysql.jdbc.Driver'已经被弃用了.应当使用新的驱动com.mysql.cj.jdbc.Driver' 所以,按照提示更改jd ...