【BZOJ5311/CF321E】贞鱼/Ciel and Gondolas(动态规划,凸优化,决策单调性)
【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;
}
【BZOJ5311/CF321E】贞鱼/Ciel and Gondolas(动态规划,凸优化,决策单调性)的更多相关文章
- BZOJ5311,CF321E 贞鱼
题意 Problem 5311. -- 贞鱼 5311: 贞鱼 Time Limit: 3 Sec Memory Limit: 162 MBSubmit: 677 Solved: 150[Subm ...
- BZOJ5311 贞鱼(动态规划+wqs二分+决策单调性)
大胆猜想答案随k变化是凸函数,且有决策单调性即可.去粘了份fread快读板子才过. #include<iostream> #include<cstdio> #include&l ...
- 【CF321E】+【bzoj5311】贞鱼
决策单调性 + WQS二分 我们首先列出转移式: \(f[i]=Min(f[j]+Sum[j+1 , i])\) 首先我们考虑如果让一段区间的小鱼在一起的代价怎么预处理,我们可以对于一个上三角矩阵求个 ...
- CF321E Ciel and Gondolas Wqs二分 四边形不等式优化dp 决策单调性
LINK:CF321E Ciel and Gondolas 很少遇到这么有意思的题目了.虽然很套路.. 容易想到dp \(f_{i,j}\)表示前i段分了j段的最小值 转移需要维护一个\(cost(i ...
- CF321E Ciel and Gondolas
题意:给定序列,将其分成k段.如果[l, r]在一段,那么每对不相同的i,j∈[l, r]都会有ai,j的代价.求最小总代价. 解:提供两种方案.第三种去bzoj贞鱼的n²算法. 决策单调性优化: 对 ...
- 【wqs二分 || 决策单调性】cf321E. Ciel and Gondolas
把状态看成层,每层决策单调性处理 题目描述 题目大意 众所周知,贞鱼是一种高智商水生动物.不过他们到了陆地上智商会减半.这不?他们遇到了大麻烦!n只贞鱼到陆地上乘车,现在有k辆汽车可以租用.由于贞鱼们 ...
- CF321E Ciel and Gondolas 【决策单调性dp】
题目链接 CF321E 题解 题意:将\(n\)个人分成\(K\)段,每段的人两两之间产生代价,求最小代价和 容易设\(f[k][i]\)表示前\(i\)个人分成\(k\)段的最小代价和 设\(val ...
- ROJ 1166 超级贞鱼
1166: 超级贞鱼 Time Limit: 1 Sec Memory Limit: 128 MB [Submit][Status] 传送门 Description 马达加斯加贞鱼是一种神奇的双脚贞 ...
- 【Codeforces 321E / BZOJ 5311】【DP凸优化】【单调队列】贞鱼
目录 题意: 输入格式 输出格式 思路: DP凸优化的部分 单调队列转移的部分 坑点 代码 题意: 有n条超级大佬贞鱼站成一行,现在你需要使用恰好k辆车把它们全都运走.要求每辆车上的贞鱼在序列中都是连 ...
随机推荐
- 一个很NB的404页面
一个带彩蛋的 404 页面 不得不说这个程序猿很有才 前往404页面 触发方法 按住鼠标左键 在页面中心不停的画圈 就可以进入神奇的地方了
- window搭建私有云,只要几分钟
本文介绍如何在window搭建私有云网盘. 工具/原料:一台window系统电脑或者window服务器(vps),Xampp 安装包,可道云kodexplorer安装包 第一步,xampp安装 1.官 ...
- windows离线补丁包下载路径-云盾安骑士
我们有一台阿里云服务器,只有内网可以访问,无外网资源. 阿里云账户邮箱反复收到阿里云云盾的漏洞报警通知,推荐安装安骑士组件. 安骑士组件是收费服务.阿里云服务器,无法连上外网,无法自动安装补丁.需要将 ...
- Codeforces Round #524 (Div. 2) C. Masha and two friends(矩形相交)
C. Masha and two friends time limit per test 1 second memory limit per test 256 megabytes input stan ...
- linux安装配置JDK脚本
#!/bin/bash # install jdk and configuring environment variables function installjdk(){ tar -zxf jdk- ...
- Array.Copy 数据是克隆吗?
偶然看到 Array.Copy 方法的时候,想到,它是否是克隆,又是否是深克隆. 做了一个测试 public class abc { public string hello; } [TestMetho ...
- LeetCode 566. Reshape the Matrix (C++)
题目: In MATLAB, there is a very useful function called 'reshape', which can reshape a matrix into a n ...
- Daily Scrumming* 2015.10.26(Day 7)
一.总体情况总结 今天我们开会具体讨论了一下接下来的任务.还详细讨论了一下分数的分配,具体分数分配我们会在下一篇博客中详细说明. 我们下一周大致的工作安排如下: 1.UI:完成社团后台界面的设计,以及 ...
- C++:构造函数2——拷贝构造函数
前言:拷贝构造函数是C++中的重点之一,在这里对其知识进行一个简单的总结. 一.什么是拷贝构造函数 在C++中,对于内置类型的变量来说,在其创建的过程中用同类型的另一个变量来初始化它是完全可以的,如 ...
- 《Spring2之站立会议2》
<Spring2之站立会议2> 昨天,模仿着资料把客户端和服务器端的代码写了一下: 今天,继续找本机的端口号和逐步深入理解代码含义: 遇到的问题,在理解时,对一些知识理解还是比较朦胧,一知 ...