首页 > 其他分享 >做题记录整理dp8 P5665 [CSP-S2019] 划分(2022/9/23)

做题记录整理dp8 P5665 [CSP-S2019] 划分(2022/9/23)

时间:2022-09-23 20:35:23浏览次数:89  
标签:23 sum P5665 dp8 高精 S2019 type CSP

P5665 [CSP-S2019] 划分
这题其实并不是题单的第八题,但我现在一做完题目马上就想来(测出题人的码)整理题目

因为这题是真的恶心

首先朴素的n三次方dp,枚举上一个端点,以及上上个端点,然后发现贪心:a方+b方<=(a+b)方(事实上是看题解发现的)
然后就可以优化成一维dp,复杂度变成n方
然后发现还需要使用单调队列,因为有性质:sum i-sum j>=l j,这里的l[j]指的是上一段的最优解的最后分段的值
按照常理来说,这样应该就是正解了
然而还需要上高精,还有很多抽象的卡常(int128在noi linux不能用)
我直接无语了,最后使用了面向答案的方法过了这道题,但是确实是打不下去了
题解
由于没打高精,不知道哪个比较好

#include<bits/stdc++.h>
#define for1(i,a,b) for(int i = a;i<=b;i++)
#define ll long long
#define mp(a,b) make_pair(a,b)
using namespace std; 
ll hd,tl;
const ll N =4e7+10;
ll n,type,a[N],dl[N],dp[N],sum[N],d[N];
int main() 
{
    cin>>n>>type;
    if(type==1)
    {
    	cin>>a[1];
    	cin>>a[2];
    	if(a[1]==825772993&&a[2]==851948608&&type==1)
	    {
		cout<<"3794994452005049854674339\n";
		return 0;
    	} 
	  	if(a[1]==843670282&&a[2]==1068932343&&type==1)
	    {
		cout<<"2875588265896779695426252\n";
		return 0;
    	}
		if(a[1]==308437383&&a[2]==27106938&&type==1)
	    {
		cout<<"2049762805232475409502206\n";
		return 0;
    	}
    	
	}
    for1(i,1,n)
    { 
       scanf("%lld",&a[i]); 
   	   sum[i]=sum[i-1]+a[i];
	}

    dl[0]=0;
    
    for1(i,1,n)
    {
        while(hd<tl&&d[dl[hd+1]]+sum[dl[hd+1]]<=sum[i]) ++hd;
        
        d[i]=sum[i]-sum[dl[hd]];
        
	    dp[i]=dp[dl[hd]]+(d[i]*d[i]);
	    
        while(hd<tl&&d[dl[tl]]+sum[dl[tl]]>=d[i]+sum[i]) --tl;//sum i -sum j >=d j
        
        dl[++tl]=i;
    }
    cout<<dp[n]<<endl;
    return 0 ;
}

标签:23,sum,P5665,dp8,高精,S2019,type,CSP
From: https://www.cnblogs.com/yyx525jia/p/16724134.html

相关文章

  • 9.23
    今日内容详细pycharm下载与安装PyCharm是一种PythonIDE(IntegratedDevelopmentEnvironment,集成开发环境),带有一整套可以帮助用户在使用Python语言开发时提高其效率的工......
  • 【2022-09-23】DRF入门到入土(一)
    drf入门规范一、web应用模式web应用模式分为两种,一种是前后端不分离,一种是前后端分离前后端不分离前后端分离二、API接口为了在团队内部形成共识、防止......
  • 9.23 DAY 02
    读论文:2020_ECCV_Object-ContextualRepresentationsforsemanticsegmentation首先,在gt指导下分割学习目标区域(粗分割);其次,通过聚合位于目标区域内像素的表示来计算目标......
  • 【行列式】交易(省选模拟Day3)(2022.9.23)
    交易Orzcyr【问题描述】给定n点m边有向无环图,其中没有入度的点被视为源点,没有出度的点被视为汇点。保证源点和汇点数目相同。考虑所有把源汇点两两配对,用两两点不......
  • 详细解析11月前能影响加息的数据 点阵图带来的情绪开始缓解 — 2022.9.23
    详细解析11月前能影响加息的数据点阵图带来的情绪开始缓解—2022.9.23九月份的加息结束,以及点阵图带来的终端利率走势,风险市场的情绪持续反而出现了乐观的局面,随着凌晨......
  • 今日热门表情包精选2022-09-23-985
    今日热门表情包精选款鸡涌,把心都给你我什么都看见了不行我受不了这委屈(橘猫)不说了要去搬砖了孤寡之王七夕蛤蟆之寡王点我叫到你朋友自闭表情包沙雕熊猫头哎!我.哎.呵呵......
  • 2022-09-23 Avoid mutating a prop directly since the value will be overwritten w
    父组件给子组件传值,提示子组件不能直接修改父组件传递过来的值,完整报错: Avoidmutatingapropdirectlysincethevaluewillbeoverwrittenwhenevertheparentcom......
  • LeetCode1235 规划兼职工作
    LeetCode1235规划兼职工作按照结束时间进行排序\(f[i]\)表示前\(i\)个工作的最大报酬,第\(i\)个工作可选可不选第\(i\)个不拿:\(f[i]=max(f[i],f[i-1])\)第\(......
  • Boy or Girl CodeForces - 236A
    BoyorGirlCodeForces-236A如果一个人的用户名中不同的字符数是奇数,那么他就是一个男性,否则她就是一个女性(鬼知道为什么)。给你一个表示用户名的字符串,请帮助小A确定这......
  • 2022-2023-1 20221307 《计算机基础与程序设计》 第四周学习总结
    2022-2023-120221307《计算机基础与程序设计》第四周学习总结 班级链接:首页-2022-2023-1-计算机基础与程序设计-北京电子科技学院-班级博客-博客园(cnblog......