首页 > 其他分享 >Yet Another Minimization Problem(CF1637D)

Yet Another Minimization Problem(CF1637D)

时间:2023-06-17 11:11:05浏览次数:32  
标签:right Minimization int text sum times Problem CF1637D left

\(\text{Des}\)

You are given two arrays $ a $ and $ b $ , both of length $ n $ .

You can perform the following operation any number of times (possibly zero): select an index $ i $ ( $ 1 \leq i \leq n $ ) and swap $ a_i $ and $ b_i $ .

Let's define the cost of the array $ a $ as $ \sum_{i=1}^{n} \sum_{j=i + 1}^{n} (a_i + a_j)^2 $ . Similarly, the cost of the array $ b $ is $ \sum_{i=1}^{n} \sum_{j=i + 1}^{n} (b_i + b_j)^2 $ .

Your task is to minimize the total cost of two arrays.

\(\text{Sol}\)

由题意可知,要求的值是在将任意的 \(a_i\) 与 \(b_i\) 交换的前提下,最小的

\[\sum_{i=1}^{n}\sum_{j=i+1}^{n}(a_i+a_j)^2+\sum_{i=1}^{n}\sum_{j=i+1}^{n}(b_i+b_j)^2 \]

那么,由该式可以推出

\[\begin{aligned} &=\sum_{i=1}^{n}\sum_{j=i+1}^na_i^2+\sum_{i=1}^{n}\sum_{j=i+1}^na_j^2+\sum_{i=1}^{n}\sum_{j=i+1}^n2a_ia_j+\sum_{i=1}^{n}\sum_{j=i+1}^{n}b_i^2+\sum_{i=1}^{n}\sum_{j=i+1}^{n}b_j^2+\sum_{i=1}^{n}\sum_{j=i+1}^{n}2b_ib_j\\ &=(n-1)\left(\sum_{i=1}^{n}a_i+\sum_{i=1}^{n}b_i\right)+\sum_{i=1}^{n}\sum_{j=i+1}^{n}2a_ia_j+\sum_{i=1}^{n}\sum_{j=i+1}^{n}2b_ib_j\\ &=\left[(n-1)\left(\sum_{i=1}^{n}a_i+\sum_{i=1}^{n}b_i\right)\right]+2\left[\sum_{i=1}^{n}a_i\left(\sum_{j=i+1}^{n}a_j\right)+\sum_{i=1}^{n}b_i\left(\sum_{j=i+1}^{n}b_j\right)\right]\\ &=\left[(n-1)\left(\sum_{i=1}^{n}a_i+\sum_{i=1}^{n}b_i\right)\right]+2\left[\sum_{i=1}^{n}a_i\left(\sum_{j=1}^{i-1}a_j\right)+\sum_{i=1}^{n}b_i\left(\sum_{j=1}^{i-1}b_j\right)\right]\\ \end{aligned} \]

可以发现其中的 \((n-1)\left(\sum_{i=1}^{n}a_i+\sum_{i=1}^{n}b_i\right)\) 是作为一个定值出现的,所以我们只需要将 \(\left[\sum_{i=1}^{n}a_i\left(\sum_{j=1}^{i-1}a_j\right)+\sum_{i=1}^{n}b_i\left(\sum_{j=1}^{i-1}b_j\right)\right]\) 最小化即可。

这一点,利用动规解决。

在由第 \(i-1\) 个状态向第 \(i\) 个状态转移的时候,我们无法确定的是 \(\sum_{j=i+1}^na_i\) 和 \(\sum_{j=i+1}^nb_i\) 的值(因为其中可能存在交换)。

那么因为考虑到 \(\sum_{i=1}^na_i\) 的值并不大,所以可以将 \(\sum_{i=1}^{n}a_i\) 加入状态。

又因为交换的为 \(a_i\) 与 \(b_i\),可以发现在相同范围内的区间和的和(即 \(\sum_{i=l}^{r}a_i+b_i\))也是一个定值,那么就可以求出对应的 \(b\) 的区间的和。

此时,我们设计状态为 \(f(i,j)\) 表示为考虑前 \(i\) 位,\(\sum_{k=1}^{i}a_k=j\) 时的最小值,那么有

\[{f(i,j)=\min\begin{cases} f(i-1,j-b_i)+b_i\times(j-b_i)+a_i\times\left[\sum_{k=1}^{i-1}\left(a_k+b_k\right)-\left(j-b_i\right)\right],&\text{if swap(a,b)}\\ f(i-1,j-a_i)+a_i\times(j-a_i)+b_i\times\left[\sum_{k=1}^{i-1}\left(a_k+b_k\right)-\left(j-a_i\right)\right],&\text{elsewise} \end{cases}} \]

\(\text{CODE}\)

void solve() {
    ans=minn=0;
    memset(f,0x7f7f7f,sizeof(f));
    f[0][0]=0;
    cin>>n;
    for(int i=1;i<=n;i++) cin>>a[i];
    for(int i=1;i<=n;i++) {
        cin>>b[i];
        k[i]=k[i-1]+max(a[i],b[i]);
        sum[i]=sum[i-1]+a[i]+b[i];
        ans+=a[i]*a[i]+b[i]*b[i];
    }
    ans*=(n-1);
    for(int i=1;i<=n;i++) {
        for(int j=1;j<=k[i];j++) {
            if (j-a[i]>=0 && sum[i-1]-j+a[i]>=0) {
                f[i][j]=min(f[i][j],f[i-1][j-a[i]]+a[i]*(j-a[i])+b[i]*(sum[i-1]-j+a[i]));
            }
            if (j-b[i]>=0 && sum[i-1]-j+b[i]>=0){
                f[i][j]=min(f[i][j],f[i-1][j-b[i]]+b[i]*(j-b[i])+a[i]*(sum[i-1]-j+b[i]));
            }
        }
    }
    minn=1e9+7;
    for(int j=1;j<=k[n];j++){
        minn=min(minn,f[n][j]);
    }
    cout<<ans+2*minn<<'\n';
}

标签:right,Minimization,int,text,sum,times,Problem,CF1637D,left
From: https://www.cnblogs.com/Cnghit/p/17487168.html

相关文章

  • 登陆服务器异常ABRT has detected 1 problem(s).
    1、登陆服务器后,出现如下所示错误:ABRThasdetected1problem(s).Formoreinforun:abrt-clilist--since16862382592、执行提示命令[root@hadoop1~]#abrt-clilist--since16862382593、启用自动报告功能[root@hadoop1~]#abrt-auto-reportingenabled4、重新链接测试,没......
  • HDU5293 Tree chain problem
    HDU5293TreechainproblemSolution1考虑dp。把链的信息挂在深度最浅的节点上,自下而上更新答案。记\(f_u\)表示\(u\)子树内的最大权值和,\(S\)表示挂在\(u\)上的某条链,\(son(x)\)表示点\(x\)的儿子集合,\(T_u\)表示子树\(u\)的点集。则\(f_u\)的初始值为:\[f_......
  • 【每日一题】Problem 180C. Letter
    原题解决思路每一个字符以前一个字符为基准,来判断自己是upper还是lower,从而找到最少的解最开始的解决思路是,用回溯的方式来解决,即使划分区块该方法也十分耗时,因为每个字符都有两种情况,因此时间复杂度为\(O(2^n)\)将\(1\)的方式修改下,分别用\(num[i][0],num[i][1]\)来......
  • 【每日一题】Problem 174B. File List
    原题解决思路纯模拟,比较文件名长度是否合规,文件格式+下一个文件名长度是否合规误区文件名的长度要和文件格式+下一个文件名的长度分开判断更新左端点和每次迭代开始先判断的方式解决该问题最后一个'.'后的文件格式需要特殊处理在循环结束后与'.'不存在的情况共同......
  • unbounded knapsack problem
    DescriptionUnboundedKnapsackProblemThereare$N$kindsofitemsandaknapsackwiththecapacityof$V$,eachitemhasunlimitedpiecesavailable.Thevolumeofthe$i$-thitemis$v_i$,andvalueis$w_i$.Pleasesolvewhichitemscanbeputintothe......
  • 5、题目:Training in Creative Problem Solving: Effects on Ideation and Problem Fin
    期刊信息(1)作者:GeorgeB.Graen,StephenG.Graen(2)期刊:OrganizationalBehaviorandHumanPerformance(3)DOI:10.1016/0030-5073(82)90233-1(4)ISSN:0030-5073   研究背景创造力训练作为工业培训的一个子集,普遍面临着工业培训研究的许多问题,也面临着一些独特的问题。......
  • 【每日一题】Problem 120F. Spiders
    原题解决思路通过给定的数据,将其构建称树,取其中最大的深度进行拼接,最后得到最终结果如何获取最大的深度以每个节点作为root构建树,然后取其中最大的深度#include<bits/stdc++.h>/***@paramvec*@paramcur当前节点*@paramlast上一个访问的节点*@param......
  • RTFM、STFW 和 X-Y Problem
    如何提问艾瑞克。史蒂文.雷蒙德(EricStevenRaymond)的提问的智慧。这是一篇长文,看完需要十几分钟的时间。如果之前没有认真看过并且思考过,这十几分钟会改变你的职业生涯。这文章可能会出现一些让人不适的词语或者过时的例子,但我认为这不会影响它要表达的内容,而你需要好好琢磨作......
  • 解决 This is probably not a problem with npm. There is likely additional logging
    在执行npmrunserve运行项目的时候报错:dengzemiaodeMacBook-Pro:lianshan_vuedengzemiao$npmrunserve......npmERR!codeELIFECYCLEnpmERR!errno1npmERR!lianshan@2.0.0serve:`vue-cli-serviceserve`npmERR!Exitstatus1npmERR!npmERR!Failedatthelia......
  • Not Another Linear Algebra Problem 题解
    题意:自己看。首先我们知道我们唯一能找到的题解在hos_lyric的代码里。把它放在这里:(由bikuhiku提供)\[\begin{aligned}&U\subseteq\mathbb{F}_p^n,\text{subspace}\\&a(U):=\#\{p\in\text{Aut}(\mathbb{F}_p^n)|\text{Ker}(p-\text{id})=U\}\\&b(U):=......