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

题面

BZOJ
CF
洛谷
辣鸡BZOJ卡常数!!!!!!
辣鸡BZOJ卡常数!!!!!!
辣鸡BZOJ卡常数!!!!!!
所以我程序在BZOJ过不了

题解

朴素的按照\(k\)划分阶段的\(dp\)可以在\(CF\)上过的。
发现当选择的\(k\)增长时,减少的代价也越来越少,
所以可以凸优化一下,这样复杂度少个\(k\)
变成了\(O(nlogw)\)

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
#define ll long long
#define MAX 4040
#define double int
inline int read()
{int x=0;bool t=false;char ch=getchar();while((ch<'0'||ch>'9')&&ch!='-')ch=getchar();if(ch=='-')t=true,ch=getchar();while(ch<='9'&&ch>='0')x=x*10+ch-48,ch=getchar();return t?-x:x;
}
struct Node{int x,l,r;}Q[MAX];
int h,t;
int n,K,s[MAX][MAX];
int f[MAX],g[MAX];
int Trans(int i,int j,int C){return f[j]+(s[j][j]-s[i][j]*2+s[i][i])/2+C;}
void calc(int C)
{f[0]=g[0]=h=0;Q[h=t=1]=(Node){0,1,n};for(int i=1;i<=n;++i){while(h<t&&Q[h].r<i)++h;f[i]=Trans(i,Q[h].x,C);g[i]=g[Q[h].x]+1;while(h<t&&i>=Q[h].r)++h;if(Trans(n,Q[t].x,C)<=Trans(n,i,C))continue;while(h<t&&Trans(Q[t].l,Q[t].x,C)>Trans(Q[t].l,i,C))--t;int l=Q[t].l,r=Q[t].r,ret=Q[t].r+1;while(l<=r){int mid=(l+r)>>1;if(Trans(mid,i,C)<Trans(mid,Q[t].x,C))ret=mid,r=mid-1;else l=mid+1;}if(ret>n)continue;Q[t].r=ret-1;Q[++t]=(Node){i,ret,n};}
}
int main()
{n=read();K=read();for(int i=1;i<=n;++i)for(int j=1;j<=n;++j)s[i][j]=s[i-1][j]+s[i][j-1]-s[i-1][j-1]+read();int l=0,r=s[n][n],ans=1e9;while(l<=r){int mid=(l+r)>>1;calc(mid);if(g[n]>K)l=mid+1;else r=mid-1,ans=f[n]-K*mid;}cout<<ans<<endl;return 0;
}

转载于:https://www.cnblogs.com/cjyyb/p/9430055.html

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

  1. 【CF321E】+【bzoj5311】贞鱼

    决策单调性 + WQS二分 我们首先列出转移式: \(f[i]=Min(f[j]+Sum[j+1 , i])\) 首先我们考虑如果让一段区间的小鱼在一起的代价怎么预处理,我们可以对于一个上三角矩阵求个 ...

  2. Codeforces Round #190 (Div. 1): E. Ciel and Gondolas(决策单调性DP+wqs二分)

    E. Ciel and Gondolas 题意: bzoj5311:https://www.lydsy.com/JudgeOnline/problem.php?id=5311 同一道题目,但是bzoj ...

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

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

  4. 《中国人工智能学会通讯》——11.34 基于近似动态规划的优化控制研究及 在电力系统中的应用...

    11.34 基于近似动态规划的优化控制研究及 在电力系统中的应用 上世纪 50 年代以来,在空间技术发展和数字计算机实用化的推动下,动态系统的优化理论得到了迅速的发展,形成了一个重要的学科分支--最优 ...

  5. 动态规划背包问题优化空间复杂度——滚动数组

    动态规划背包问题优化空间复杂度--滚动数组 背包问题 空间复杂度优化 Java代码 链接:代码随想录背包问题 背包问题   背包问题是动态规划中基本的问题,我们考虑下面的简单问题:   假设背包容量为 ...

  6. CF321E Ciel and Gondolas BZOJ 5311 贞鱼

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

  7. [剑指offer]面试题第[60]题[JAVA][n个骰子的点数][动态规划][空间优化]

    [问题描述][中等] 把n个骰子扔在地上,所有骰子朝上一面的点数之和为s.输入n,打印出s的所有可能的值出现的概率.你需要用一个浮点数数组返回答案,其中第 i 个元素代表这 n 个骰子所能掷出的点数集 ...

  8. Luogu P5244 [USACO2019Feb Platinum] Mowing Mischief (动态规划、决策单调性)

    题目链接 https://www.luogu.com.cn/problem/P5244 题解 首先求出 LIS. 根据 LIS 的值我们可以对整个点集分层,每一层内进行 DP. 将每层的点按 \(x_ ...

  9. 【LeetCode】LeetCode之打家劫舍【暴力递归、动态规划、动态规划之优化空间的具体分析与实现】

最新文章

  1. 官宣!英雄联盟、王者荣耀、街霸……这些电子竞技入选杭州亚运会
  2. Windows~KinectV2开发
  3. 业界丨《自然》:中国打响AI人才争夺战
  4. python软件使用教程-python用什么软件编写
  5. 献给老师,我的编程之路
  6. 使用OpenGL一年后
  7. 光纤看起来长得都一样?其实它们之间大有不同—Vecloud微云
  8. 电脑记事本_带日历的电脑桌面记事本?
  9. ASP.NET开源MVC框架Vici MVC(三)HELLO WORD
  10. 20150210--Smarty1-02
  11. uniapp---为什么使用uniapp_以及uniapp开发的app展示_使用hbuilderx简单搭建一个uniapp_一次开发_小程序_Android_IOS_快应用通用工作笔记002
  12. 容斥原理 —— 不重不漏的计数
  13. 彻底解决 Gson 将 int 转换为 double 的问题
  14. 计算机组成原理课后答案(唐朔飞第三版) 第四章
  15. HeitiCSEG 文鼎CS大黑 字体下载
  16. python:epub文件批量转TXT
  17. 标量、矩阵对向量求导
  18. PS cs6是哪一年发布的?
  19. 如何使用前端css代码去掉百度地图左下角的图标
  20. 小暑将至,这组小暑海报送给你们

热门文章

  1. “WPF老矣,尚能饭否”—且说说WPF今生未来(上):担心
  2. 拿到淘宝offer后的胡思乱想plus面试总结
  3. 单片微型计算机概念及组成,中国民用航空飞行学院2014年微机原理与接口考研复习大纲...
  4. 区块链基础--工作量证明
  5. 远程桌面怎么持续连接_如何拥有成功且可持续的远程产品管理职业
  6. 开源贡献 计算_如何克服恐惧并为开源做贡献
  7. React模式:集中式PropTypes
  8. 精确哈克,以贪婪为基础的欺诈式引流法
  9. 用C++的random_shuffle()函数打乱int数组顺序
  10. 怎样使用Spring Boot项目的单元测试