首页 > 其他分享 >[ARC178C] Sum of Abs 2 题解

[ARC178C] Sum of Abs 2 题解

时间:2024-05-20 11:09:47浏览次数:27  
标签:le ARC178C 题解 Sum times int MAXN sum dp

题意:给定 \(n\) 和 \(L\) 以及 \(n\) 个数 \(a_i\)。对于每个 \(1 \le i \le n\),求出一个长度为 \(L\) 的 \(b\) 序列满足:\(\sum_{i=1}^{L-1}\sum_{j=i+1}^{L} |b_j-b_i|=a_i\),并最小化 \(b\) 中的最大值。

显然 \(b\) 中元素的顺序不影响原式的结果,所以我们可以假定 \(b\) 是不降的。

那么原式可以化简为 \(\sum_{k=1}^{L-1}k \times(L-k)\times (b_{k + 1}-b_{k})\)。

设 \(c_i=b_{i+1}-b_{i}\)。会发现 \(b_1=0\),那么原问题就变为了求一个长度为 \(L-1\) 的序列 \(c\) 满足 \(\sum_{k=1}^{L-1}k\times (L-k) \times c_k=a_i\) 并且最小化 \(\sum_{k} c_k\)。

这可以用背包 dp 来解决。因为 $k\times (L-k) \le V $,所以 \(k\) 是 \(\sqrt{V}\) 级别的,总时间复杂度 \(O(V \sqrt{V})\)。

#include<bits/stdc++.h>
using namespace std;
const int MAXN = 2e5 + 10;
int n,l,a[MAXN],dp[MAXN];
signed main() {
	memset(dp,0x3f,sizeof dp);
	cin >> n >> l;
	dp[0] = 0;
	for(int k = 1;k * (l - k) <= 200000 && k <= l - 1;k++) 
		for(int i = k * (l - k);i <= 200000;i++)
			dp[i] = min(dp[i],dp[i - k * (l - k)] + 1);
	for(int i = 1;i <= n;i++) 
		cin >> a[i],
		cout << (dp[a[i]] > 1e9 ? -1 : dp[a[i]]) << endl;
	return 0;
}

标签:le,ARC178C,题解,Sum,times,int,MAXN,sum,dp
From: https://www.cnblogs.com/Creeperl/p/18201454

相关文章

  • CF1085D Minimum Diameter Tree 题解
    CF1085DMinimumDiameterTree题解比较水的一道绿题观察样例可以发现,边权都平分在叶子节点唯一的一条连边上,由此猜到联想到可以把贪心地将边权全部平均分配到这些边上,这样写出来就能AC了。如何证明先来一张图方便理解:利用反证法:假设按上述做法分配边权后可以至少修改一次......
  • [SDOI2009] 晨跑 题解
    每个点拆成入点和出点。发现每个点、每条边都只能经过一次,所以所有边的容量都是\(1\)。#include<bits/stdc++.h>#definelllonglongusingnamespacestd;constintN=405,M=1e5+5;intn,m,s,t,k=1,h[N],vis[N];intto[M],nxt[M],w[M],f[M];intlst[N],flw[N],dis[N];v......
  • [SDOI2016] 数字配对 题解
    发现题目中描述的配对条件可以理解为:\(pc_i-pc_j=1\)且\(a_i\bmoda_j=0\),其中\(pc_i\)表示\(a_i\)的质因数个数。自然想到以\(pc\)奇偶性建立二分图,可以配对的点间连一条边。先不考虑费用,三种边为:\((s,i,b_i)\),其中\(pc_i\bmod2=1\)。\((i,t,b_i)\),其中\(pc_i\bm......
  • Codeforces 401B Sereja and Contests 题解
    题目简述Sereja是一名程序员,他喜欢参加Codesorfes比赛。不过,乌兹兰的网络连接不太好,所以Sereja有时会跳过比赛。Codesorfes有两种类型的比赛,分为Div1和Div2。Div1和Div2这两轮可以同时进行(Div1轮不能在没有Div2的情况下进行)。每一轮都有一个唯一的标识符,各轮按......
  • 第二届“重科杯”重庆科技大学程序设计竞赛(同步赛)ptlks的题解(2024.5.18)
    A.Alice和Bob题意:给定序列A和序列,m组信息\((i,j)\),Alice可以交换\(A_i\)和\(A_j\)任意次,判断Alice是否能将序列A转变为序列B。思路由于Alice可以任意调整m组信息,所以题目所给m组信息\((i,j)\)不影响结果。先考虑k组信息,第i组为\((T_i,T_{i+1})\),\(1\leqT_1\ltT_2\lt.........
  • [ABC353F] Tile Distance 题解
    [ABC353F]TileDistance题解题目传送门:洛谷,AtcoderSolution很恶心人的分类讨论题。很显然走大格子大概率比走小格子快。对终点和起点向上下左右枚举大格子,我们就把问题转化为给两个大格子\((a,b)\)、\((c,d)\),求怎样走最快。对角的大格子可以通过\(2\)步相互到达,如下......
  • CF527E Data Center Drama 题解
    @目录题目题意题解思路详解注意事项代码AC记录尾声题目CF527EDataCenterDrama·戳这里题意给定一张$n$个点$m$条边的连通无向图。你需要加尽可能少的边,然后给所有边定向,使得每一个点的出入度都是偶数。边可以是自环,也可以有重边。$n\le10^5$,$m\le2\times1......
  • Codeforces 769B News About Credit 题解
    题目简述波利卡普在由$n$名学生(包括他自己)组成的小组中学习,编号为$1$到$n$,波利卡普的编号始终是$1$。他们都在社交网络上注册,每个学生都有一个值$a_i$,表示第$i$名学生每天能发送的最大信息数。清晨,波利卡普知道了一个重要消息,他认为有必要通过私人消息紧急通知所有组员......
  • 安装vue/cli报错问题解决
    在管理员终端中输入命令:npmi-g@vue/cli错误原因证书已过期,需要安装淘宝镜像npmconfigsetregistryhttps://registry.npmmirror.com使用cnpm安装脚手架报错cnpmi-g@vue/cli 这个错误表明你尝试执行的 cnpm 命令无法加载,因为PowerShell策略不允许执......
  • P10125 「Daily OI Round 3」Simple 题解
    题目传送门简单模拟,主要考察字符串。首先输入一个char类型的数组,然后直接遍历每一位是否为Acoipp或Svpoll即可。//Simple//codeby:cq_irritater//time:2024/02/04#include<bits/stdc++.h>usingnamespacestd;chara[10];intmain(){//freopen("......