题目链接

很容易写出\(O(n^2k)\)的DP方程。然后显然决策点是单调的,于是维护决策点就可以了。。

这个过程看代码或者别的博客吧我不写了。。(其实是忘了)

这样复杂度\(O(nk\log n)\)。但是在BZOJ T了=-=。

\(k\)可以带权二分优化到\(O(n\log k\log n)\)就能过了吧。

不想改了。

我特么学的是假的单调。。

又是zz错误浪费半下午(╯‵□′)╯︵┴─┴

辣鸡题还卡时间

不过就不过吧mmp

Upd: Codeforces 321E.Ciel and Gondolas上过了。1028ms 130224KB。。

//130968kb	3000ms
#include <cstdio>
#include <cctype>
#include <algorithm>
//#define gc() getchar()
#define MAXIN 5000000
#define gc() (SS==TT&&(TT=(SS=IN)+fread(IN,1,MAXIN,stdin),SS==TT)?EOF:*SS++)
const int N=4003; int n,K,A[N][N],sum[N][N],f[2][N],Now;
char IN[MAXIN],*SS=IN,*TT=IN;
struct Node{
int l,r,pos;//pos是区间[l,r]的最优转移点
}q[N]; inline int read()
{
int now=0;register char c=gc();
for(;!isdigit(c);c=gc());
for(;isdigit(c);now=now*10+c-'0',c=gc());
return now;
}
inline int Cost(int i,int p){//在i之前,分割p,p+1处
return f[Now][p]+sum[p+1][i];
}
inline int Find(Node t,int x)
{
int l=t.l, r=t.r, mid;
while(l<=r)//l==r时应再Check一次?
if(mid=l+r>>1, Cost(mid,x)<Cost(mid,t.pos)) r=mid-1;//!
else l=mid+1;
return l;
} int main()
{
n=read(),K=read();
for(int i=1; i<=n; ++i)
for(int j=1; j<=n; ++j) A[i][j]=A[i][j-1]+read();
for(int i=1; i<=n; ++i)
for(int j=i+1; j<=n; ++j)
sum[i][j]=sum[i][j-1]+A[j][j]-A[j][i-1];
for(int i=1; i<=n; ++i) f[1][i]=sum[1][i];
Now=1;
for(int j=1; j<K; ++j, Now^=1)
{
int h=1,t=1; q[1]=(Node){1,n,1};
for(int i=2; i<=n; ++i)
{
if(i>q[h].r) ++h;
f[Now^1][i]=Cost(i,q[h].pos);
if(Cost(n,i)<Cost(n,q[t].pos))//为什么要拿n比?不太明白。
{
while(h<=t && Cost(q[t].l,i)<Cost(q[t].l,q[t].pos)) --t;//队尾区间的l用i都比pos更优了,而决策点是单调的,所以[l,r]肯定都要不选pos而选i了
if(h>t) q[++t]=(Node){i,n,i};
else
{
int Pos=Find(q[t],i);
q[t].r=Pos-1, q[++t]=(Node){Pos,n,i};
}
}
}
}
printf("%d",f[Now][n]); return 0;
}

BZOJ.5311.贞鱼(DP 决策单调)的更多相关文章

  1. CF321E Ciel and Gondolas & BZOJ 5311 贞鱼

    一眼可以看出$O(kn^{2})$的$dp$方程,然后就不会了呜呜呜. 设$f_{i, j}$表示已经选到了第$i + 1$个数并且选了$j$段的最小代价,那么 $f_{i, j} = f_{p, j ...

  2. BZOJ_5311_贞鱼_决策单调性+带权二分

    BZOJ_5311_贞鱼_决策单调性+带权二分 Description 众所周知,贞鱼是一种高智商水生动物.不过他们到了陆地上智商会减半. 这不?他们遇到了大麻烦! n只贞鱼到陆地上乘车,现在有k辆汽 ...

  3. 【Codeforces 321E / BZOJ 5311】【DP凸优化】【单调队列】贞鱼

    目录 题意: 输入格式 输出格式 思路: DP凸优化的部分 单调队列转移的部分 坑点 代码 题意: 有n条超级大佬贞鱼站成一行,现在你需要使用恰好k辆车把它们全都运走.要求每辆车上的贞鱼在序列中都是连 ...

  4. Newnode's NOI(P?)模拟赛 第二题 dp决策单调优化

    其实直接暴力O(n3)DP+O2O(n^3)DP+O_2O(n3)DP+O2​优化能过- CODE O(n3)O(n^3)O(n3) 先来个O(n3)O(n^3)O(n3)暴力DP(开了O2O_2O2 ...

  5. 【BZOJ5311/CF321E】贞鱼/Ciel and Gondolas(动态规划,凸优化,决策单调性)

    [BZOJ5311/CF321E]贞鱼/Ciel and Gondolas(动态规划,凸优化,决策单调性) 题面 BZOJ CF 洛谷 辣鸡BZOJ卡常数!!!!!! 辣鸡BZOJ卡常数!!!!!! ...

  6. bzoj 4769: 超级贞鱼 -- 归并排序

    4769: 超级贞鱼 Time Limit: 1 Sec  Memory Limit: 128 MB Description 马达加斯加贞鱼是一种神奇的双脚贞鱼,它们把自己的智慧写在脚上——每只贞鱼的 ...

  7. BZOJ5311,CF321E 贞鱼

    题意 Problem 5311. -- 贞鱼 5311: 贞鱼 Time Limit: 3 Sec  Memory Limit: 162 MBSubmit: 677  Solved: 150[Subm ...

  8. 不失一般性和快捷性地判定决策单调(洛谷P1912 [NOI2009]诗人小G)(动态规划,决策单调性,单调队列)

    洛谷题目传送门 闲话 看完洛谷larryzhong巨佬的题解,蒟蒻一脸懵逼 如果哪年NOI(放心我这样的蒟蒻是去不了的)又来个决策单调性优化DP,那蒟蒻是不是会看都看不出来直接爆\(0\)?! 还是要 ...

  9. CF868 F. Yet Another Minimization Problem 决策单调优化 分治

    目录 题目链接 题解 代码 题目链接 CF868F. Yet Another Minimization Problem 题解 \(f_{i,j}=\min\limits_{k=1}^{i}\{f_{k ...

随机推荐

  1. 解决 Electron 包下载太慢问题

    项目下新建 .npmrc 文件,加入如下配置: electron_mirror=https://npm.taobao.org/mirrors/electron/ 即使用淘宝的源,重新 npm inst ...

  2. ubuntu复制文件或目录

    转自http://www.linuxidc.com/Linux/2008-11/17179.htm cp(copy)命令 该命令的功能是将给出的文件或目录拷贝到另一文件或目录中. 语法: cp [选项 ...

  3. c++字节数组转换为整型

    http://bbs.csdn.net/topics/360132089 BYTE data[4]={0x00,0x00,0xe6,0x00};//第一句UINT a11=*(UINT*)data;/ ...

  4. echarts 移动端地图数据可视化开发教程

    如上效果图: 以下未代码: <!doctype html> <html lang="en">   <head> <meta charset ...

  5. python网络编程-socketserver

    一:socketserver简化了网络服务器的编写. 它有4个类:TCPServer,UDPServer,UnixStreamServer,UnixDatagramServer. 这4个类是同步进行处 ...

  6. RNN BPTT

    双向LSTM

  7. ZooKeeper的基本概念(二)

    第一篇博文,我们对Zookeeper有了一个简单的认识,而且比较浅显,易懂,这篇博文,我们了解它的基本概念,如下图所示: 了解它的基本概念,有助于我们后面的学习,虽然今天的文章都是概念性质的内容,但是 ...

  8. 10月15日 | 云栖大会“淘宝移动技术实践&开放论坛”来了!

    参会报名链接:http://baichuan.taobao.com/marketing/yunqi#?baichuan_channel=cnblogs 顺应移动互联网消费升级趋势, 淘宝作为移动领域的 ...

  9. C#连接mariadb代码及方式

    不负责任的说MariaDb和MySQL很多都是通用的,因为来自同一个爹... 和MySQL连接方式差不多 首先配置好你的MariaDb,创建test数据库,在test里创建MyTable表,脚本如下( ...

  10. Spring+Dubbo集成Redis的两种解决方案

    当下我们的系统数据库压力都非常大,解决数据库的瓶颈问题势在必行,为了解决数据库的压力等需求,我们常用的是各种缓存,比如redis,本文就来简单讲解一下如何集成redis缓存存储,附github源码. ...