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

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

题目链接

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

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

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

其中t:

t==1 只有一面环海:

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

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

t2 && t4 有2面环海:

t==2:

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

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

t==4:

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

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

t==3:三面环海:

同样有两种划分方法:

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

CODE:

#include<cstdio>
#include<algorithm>
#include<cstring>
#define ll long long using namespace std; inline int read(){
int ans=0;
char last=' ',ch=getchar();
while(ch>'9'||ch<'0') last=ch,ch=getchar();
while(ch>='0'&&ch<='9') ans=(ans<<1)+(ans<<3)+ch-'0',ch=getchar();
if(last=='-') ans=-ans;
return ans;
} int n,m,k;
ll ans;
ll f[310][310][5]; ll hs(int x,int y,int t){
if(f[x][y][t]!=-1) return f[x][y][t];
ll ans=((ll)x*y-k)*((ll)x*y-k); if(t==1){
for(int i=1;i<x;i++) ans=min(ans,hs(i,y,1)+hs(x-i,y,1));
return f[x][y][t]=ans;
}
if(t==3){
for(int i=1;i<x;i++) ans=min(ans,hs(i,y,3)+hs(x-i,y,2));
for(int i=1;i<y;i++) ans=min(ans,hs(x,i,4)+hs(x,y-i,4));
return f[x][y][t]=ans;
}
if(t==2){
for(int i=1;i<x;i++) ans=min(ans,hs(i,y,2)+hs(x-i,y,2));
for(int i=1;i<y;i++) ans=min(ans,hs(x,i,1)+hs(x,y-i,1));
return f[x][y][t]=ans;
}
if(t==4){
for(int i=1;i<x;i++) ans=min(ans,hs(i,y,4)+hs(x-i,y,1));
for(int i=1;i<y;i++) ans=min(ans,hs(x,i,4)+hs(y-i,x,1));
return f[x][y][t]=ans;
}
} int main(){
n=read();
m=read();
k=read();
memset(f,-1,sizeof(f));
ans=1e18;
for(int i=1;i<n;i++) ans=min(ans,hs(i,m,3)+hs(n-i,m,3));
for(int i=1;i<m;i++) ans=min(ans,hs(m-i,n,3)+hs(i,n,3));
printf("%lld",ans);
return 0;
}

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. Python 3标准库第一天讲解总结

    一.很多知识自己没有理解透: 二.课件准备不足: 三.第一次讲解有点紧张: 四.口才也不是很好,很多有断片的情况: 五.SB式的坚持:

  2. 【NOIP2016提高A组集训第4场11.1】平衡的子集

    题目 夏令营有N个人,每个人的力气为M(i).请大家从这N个人中选出若干人,如果这些人可以分成两组且两组力气之和完全相等,则称为一个合法的选法,问有多少种合法的选法? 分析 如果暴力枚举每个人被分到哪 ...

  3. markdown编辑器常用命令

    # 标题H1## 标题H2### 标题H3#### 标题H4##### 标题H5###### 标题H5插入java代码: 以```java表示java代码开始,以```表示代码结束 ```javapu ...

  4. 4.瀑布流js

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. BZOJ 3197: [Sdoi2013]assassin 树形DP + 最小费用流 + 树的同构

    Description Input Output 其实就是给出两颗树,求一种两种树同构的方式,使得不同颜色个数最少$.$树的重新构建,其实就是指定不同的点为根节点$.$ 好在树的重心有一个重要的性质: ...

  6. cvtColor

    E:/OpenCV/opencv/sources/modules/imgproc/src/color.cpp CV_RGB2GRAY:RGB--->GRAY.

  7. androi自定义自动换行的View(类似网页的标签Tag)

    看来只有礼拜天才有时间写点博客啊,平时只能埋头苦干了.今天在公司加班,遇到一个需求,就是自动换行的TextView,有点像网页的tag标签,点击一下,就自动加上去了,不过这个是根据后台拿来的数据来显示 ...

  8. (49)LINUX应用编程和网络编程之四 Linux进程全解

    补充: 1.  C程序的执行过程: C编译器调用链接器,链接器设置可执行程序文件的启动起始地址(启动例程),启动例程获得内核传递来的 命令行参数和环境变量值,为调用main函数做准备.[实际上该启动例 ...

  9. [CSP-S模拟测试]:异或(数学)

    题目描述 给定$L,R$,我们希望你求出:$$\sum\limits_{i=L}^R\sum\limits_{j=L}^R(i\oplus j)$$其中这里的$\oplus$表示异或运算.答案对$10 ...

  10. (转)GitBlit安装

    转:https://blog.csdn.net/qq_32599479/article/details/90748371 GitBlit的安装本文是基于Windows 10系统环境,安装和测试GitB ...