首页 > 其他分享 >[SDOI2016]征途

[SDOI2016]征途

时间:2023-04-28 17:35:44浏览次数:58  
标签:2s int 征途 SDOI2016 include fo

又来水博客了
[SDOI2016]征途
推一下柿子就会发现,我们要求最小值的部分是将整个序列分为来m段,然后每段和的平方相加最小。

\(f[i][j]=f[k][j-1]+(s[i]-s[k])^2\),然后用滚动数组优化一下。
\(g[i]=f[k]+s[i]^2-2s[i]s[k]+s[k]^2\)
\(f[k]+s[k]^2=g[i]-s[i]^2+2s[i]s[k]\)
将决策看作(\(2s[k]\),\(f[k]+s[k]^2\))即可。

#include<cstdio>
#include<algorithm>
#include<cstring>
#define fo(i,a,b) for (int (i)=(a);(i)<=(b);(i)++)
using namespace std;
typedef long long ll;
const int N=3005;
ll f[N],g[N],s[N],z,ans;
int h,t,q[N],n,m;
ll Y(int x){
	return f[x]+s[x]*s[x];
}
ll X(int x){
	return 2*s[x];
}
ll down(int a,int b){
	return X(a)-X(b);
}
ll up(int a,int b){
	return Y(a)-Y(b);
}
ll sqr(ll x){
	return x*x;
}
int main(){
//	freopen("data.in","r",stdin);
	scanf("%d %d",&n,&m);
	fo(i,1,n) {
		scanf("%lld",&z);
		s[i]=s[i-1]+z;
	}
	
	memset(f,0x3f,sizeof(f));
	
	f[0]=0;
	fo(j,1,m){

		h=t=1; 
		memset(q,0,sizeof(q));
		fo(i,1,n) {
			while (h<t && up(q[h+1],q[h]) <= s[i]*down(q[h+1],q[h]) ) h++;
			g[i]=f[q[h]]+sqr(s[i]-s[q[h]]);
			while (h<t && up(i,q[t])*down(q[t],q[t-1]) <=down(i,q[t])*up(q[t],q[t-1]) ) t--;
			q[++t]=i;
		}
		
		fo(i,1,n) f[i]=g[i];
	}
	
	ans=m*f[n]-sqr(s[n]);
	
	printf("%lld\n",ans);
	return 0;
}

标签:2s,int,征途,SDOI2016,include,fo
From: https://www.cnblogs.com/ganking/p/17362743.html

相关文章

  • 【题解】P4069 [SDOI2016]游戏
    题目描述Alice和Bob在玩一个游戏。游戏在一棵有\(n\)个点的树上进行。最初,每个点上都只有一个数字,那个数字是\(123456789123456789\)。有时,Alice会选择一条从\(s\)到\(t\)的路径,在这条路径上的每一个点上都添加一个数字。对于路径上的一个点\(r\),若\(r\)与\(s\)......
  • P4069 [SDOI2016]游戏 李超线段树 维护区间优势线段的线段树
    传送门#include<iostream>#include<algorithm>#include<cstring>typedeflonglongll;typedefstd::pair<double,int>PDI;constintN=1e5,M=2e5+10;constllINF=123456789123456789;intn,m,cnt;inth[N],e[M],ne[M],......
  • 原始征途游戏攻略
    详情简介《原始征途手游版》是巨人游戏公司创始人史玉柱亲自操刀花费巨资打造。史玉柱是我国商人中的传奇人物,他早年盖大楼破产,后又创立了老百金产品再次东山再起力......
  • 「SDOI2016」征途 TJ
    「SDOI2016」征途TJ题目传送门题目大意:有\(n\)个块,给出其块长,将其分为\(m\)组,使得每组内长度之和的方差最小。输出\(v\timesm^2\),其中\(v\)是方差。思路:......
  • [SDOI2016] 储能表
    [SDOI2016]储能表题目描述有一个n行m列的表格,行从0到n−1编号,列从0到m−1编号。每个格子都储存着能量。最初,第i行第j列的格子储存着(ixorj)点能量。......
  • [征途外挂制作记八]
    书接上文,最近太累了,活多钱少;做征途“外挂”都是自己乐趣的事情,成年人的世界就是这样。唉,没有办法。模式主要分为正常模式,PK模式,BOSS模式.毕竟游戏嘛无非就是杀杀boss,PKPK......
  • [征途外挂制作记七]
    书接上文经过一天的奋斗写出来了一些基本信息输出的功能,外挂的基本页面已经完成.测试无BUG,看来还是宝刀未老都是一次过;国内做内挂,把内挂玩得花里胡哨的,辅助功能挂天花......
  • [征途外挂制作记六]
    忘记说了...用的是征途SF...版本是liunx泄露版本世外桃源...书接上文,为了方便玩家一眼就看明白所有数据,那么在数据表链层也就是第一层就得展示所有的数据,节约玩家时间。......
  • [征途外挂制作记五]
    外挂的制作无非三种,纯辅助;全自动挂机;BT辅助;又细分为内挂,脱机;内挂嘛顾名思义就是有客户端,脱机嘛就是不需要客户端就可以挂机;如果是针对广大玩家市场,当然功能细分得越细就......
  • [征途外挂制作记四]
    书接上文,把所有逻辑地图和实景地图都搞定了,接下来就是把地图列表给搞定;不然两眼一抹黑都不知道地图ID分别是代表什么就有点瞎了。//国家代码2=宋国3=魏国4=齐国5=燕国6=中......