ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

[CF321E] Ciel and Gondolas

2021-11-14 18:00:16  阅读:160  来源: 互联网

标签:pre return Ciel int TT 决策 Gondolas MAXN CF321E


前言

决策单调性得好好学。

理解不深,瞎掰扯。

题目

洛谷

CF

讲解

经典题。

这道题的决策单调性可以由四边形不等式证明,形如 \(w(a,c)+w(b,d)\le w(a,d)+w(b,c) (a\le b<c\le d).\)

决策单调性可以用分治快速求解,我们考虑分 \(k'\) 块,显然其只和 \(k'-1\) 有关,所以我们一层一层解决问题。

具体的,我们每次二分一个中点,求出它的最优决策点,然后左右两个区间分别递归下去,顺便改一下决策区间,根据决策单调性即可满足复杂度。

时间复杂度 \(O(nk\log_n)\)。

代码

原谅我的工地英语
//12252024832524
#include <bits/stdc++.h>
#define TT template<typename T>
using namespace std;

typedef long long LL;
const int MAXN = 4005;
const int INF = 0x3f3f3f3f;
int n,m;
int pre[MAXN][MAXN],dp[MAXN][MAXN];

LL Read()
{
	LL x = 0,f = 1; char c = getchar();
	while(c > '9' || c < '0'){if(c == '-') f = -1;c = getchar();}
	while(c >= '0' && c <= '9'){x = (x*10) + (c^48);c = getchar();}
	return x * f;
}
TT void Put1(T x)
{
	if(x > 9) Put1(x/10);
	putchar(x%10^48);
}
TT void Put(T x,char c = -1)
{
	if(x < 0) putchar('-'),x = -x;
	Put1(x); if(c >= 0) putchar(c);
}
TT T Max(T x,T y){return x > y ? x : y;}
TT T Min(T x,T y){return x < y ? x : y;}
TT T Abs(T x){return x < 0 ? -x : x;}

int now;
int Sum(int l,int r){return (pre[r][r]-pre[l-1][r]-pre[r][l-1]+pre[l-1][l-1]) >> 1;}
void solve(int l,int r,int ql,int qr)//section to be solved,operation section
{
	if(l > r) return;
	int mid = (l+r) >> 1,ID = ql,MIN = INF;
	for(int i = ql,val;i <= qr && i <= mid;++ i)
		if((val = Sum(i,mid)+dp[i-1][now-1]) < MIN)
		{
			MIN = val;
			ID = i;
		}
	dp[mid][now] = MIN;
	solve(l,mid-1,ql,ID);
	solve(mid+1,r,ID,qr);
}

int main()
{
//	freopen(".in","r",stdin);
//	freopen(".out","w",stdout);
	n = Read(); m = Read();
	for(int i = 1;i <= n;++ i)
		for(int j = 1;j <= n;++ j)
			pre[i][j] = pre[i-1][j]+pre[i][j-1]-pre[i-1][j-1]+Read();
	memset(dp,INF,sizeof(dp));
	dp[0][0] = 0;
	for(now = 1;now <= m;++ now) solve(1,n,1,n);
	Put(dp[n][m],'\n');
	return 0;
}

标签:pre,return,Ciel,int,TT,决策,Gondolas,MAXN,CF321E
来源: https://www.cnblogs.com/PPLPPL/p/15552673.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有