AT_arc178_c [ARC178C] Sum of Abs 2

news/2025/11/25 22:08:21/文章来源:https://www.cnblogs.com/UesugiErii-/p/19270247

感觉思路很顺。

首先绝对值讨论很麻烦,考虑钦定 \(B\) 单调不降。容易得到贡献式子 \(S=\sum_{i=1}^{L-1}(i-2)B_i+(L-1)B_L\)

有个 trick,单调不降的序列可以看作多次后缀 +1 得到(单调不升同理)。而对后缀 \([i,L]+1\)\(S\) 的贡献是容易得出的,而 \(B_{\max}=B_n\) 最小即要求操作次数最小。于是就相当于 \(L\) 个数,每个数能取任意个,问凑出 \(A_i\) 的最小操作次数,容易完全背包求出。

但是这样复杂度为 \(O(nL)\) 但是发现后缀 \([i,n]\) 的贡献 \(v_i=L-1+\sum_{j=i}^{L-1}(j-2)\) 约为 \((L-i+1)^2\),于是只有后 \(\sqrt V\) 个后缀有用。复杂度 \(O(\min\{\sqrt V,n\}L)\)

#include<bits/stdc++.h>
#include<ext/pb_ds/assoc_container.hpp>
#include<ext/pb_ds/hash_policy.hpp>
#define fin(x) freopen(#x".in","r",stdin)
#define fout(x) freopen(#x".out","w",stdout)
#define fr(x) fin(x),fout(x);
#define Fr(x,y) fin(x),fout(y)
#define INPUT(_1,_2,FILE,...) FILE
#define IO(...) INPUT(__VA_ARGS__,Fr,fr)(__VA_ARGS__)
using namespace std;
using namespace __gnu_pbds;
#define mp make_pair
#define pii pair<int,int>
#define fi first
#define se second
#define pb push_back
#define cfast ios::sync_with_stdio(false);cin.tie(0),cout.tie(0)
#define ll long long
#define ull unsigned long long
#define intz(x,y) memset((x),(y),sizeof((x)))
char *p1,*p2,buf[100000];
#define nc() (p1==p2 && (p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++)
#define tup(x) array<int,(x)>
inline ll read(){ll x=0,f=1;char ch=nc();while(ch<48||ch>57){if(ch=='-')f=-1;ch=nc();}while(ch>=48&&ch<=57)x=x*10+ch-48,ch=nc();return x*f;
}
//void write(int x){cout<<x<<' ';}
//void write(pii x){cout<<"P("<<x.fi<<','<<x.se<<")\n";}
//void write(vector<auto>x){for(auto i:x)write(i);cout<<'\n';}
//void write(auto *a,int l,int r){for(int i=l;i<=r;i++)write(a[i]);cout<<'\n';}
inline ll lowbit(ll x){return x&-x;}
inline int pcount(ll x){for(int i=0,res=0;;res+=(x>>i)&1,i++)if(i>60)return res;
}//struct mt{
//	ll v;
//	mt(){v=0;}
//	mt(int x){this->v=x;}
//	inline mt operator+(mt x){return {(v+x.v)%mod};}
//	inline mt operator-(mt x){return {(v+mod-x.v)%mod};}
//	inline mt operator*(mt x){return {1ll*v*x.v%mod};}
//};
//inline void add(mt &x,mt y){x=x+y;}
//mt qp(mt x,int y){mt res(1);for(;y;x=x*x,y>>=1)if(y&1)res=res*x;return res;}
const int N=2e5+5;
int a[N],w[N],f[N];
inline void UesugiErii(){int n,l;cin>>n>>l;for(int i=1;i<=n;i++)cin>>a[i];w[l]=l-1;for(int i=l-1;i;i--)w[i]=w[i+1]+(2*i-l-1);intz(f,0x3f),f[0]=0;for(int j=1;j<=min(1000,l);j++)for(int i=w[l-j+1];i<=2e5;i++)f[i]=min(f[i],f[i-w[l-j+1]]+1);
//	for(int i=1;i<=l;i++)cout<<w[i]<<' ';cout<<'\n';for(int i=1;i<=n;i++)cout<<(f[a[i]]==0x3f3f3f3f?-1:f[a[i]])<<'\n';
}
signed main(){//IO();//cfast;int _=1;//cin>>_;for(;_;_--)UesugiErii();return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/976523.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

几道树上计数问题

QOJ 5437 Graph Completing link 题意 给你一个 \(n\) 个点 \(m\) 条边的图,求多少种加边方案,使得该图变为一个边双联通图。必须保证该图始终为简单图,初始给出的图保证是简单图。 \(n \le 5000, m \le 10000\)。 …

接入层傻瓜机引起的VLAN间环路

环路具有一个很明显的现象,长ping出现规律性丢包、一个MAC从不同的端口学习到。对于接入层的端口,可以通过配置BPDU保护、边缘端口、生成树以及环路检测进行防环或抑制环路的扩散减小环路带来的影响。问题现象 桌面I…

实用指南:线性回归中梯度下降的最终结果是否为全局最小解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025年安全的轮胎推荐:专业制动测评与选购攻略

2025年安全的轮胎推荐:专业制动测评与选购攻略为解决用户在“安全的轮胎推荐”上的选择难题,本文将基于全球主流汽车媒体(如《AutoBild》、汽车之家等)的公开评测模型与数据,从以下四大核心维度,对市场上的主流旗…

MISC图片隐写

MISC:图片隐写ExifTool常用命令:图片隐写:LSB隐写:LSB:最低有效位 图像像数一般是由RGB三原色(红绿蓝)组成,每一种三原色占8位:0x00-0xff,组合起来有256^3种颜色。当只更改最低2位数时,人类的眼睛无法察觉GIF…

逆序对数列-dp前缀和优化

逆序对数列-dp前缀和优化 逆序对数列 加强版+数学 思路 如果按位置来 dp ,显然不方便转移,发现我们插入一个数之后,才会有不同的个数产生。我们考虑从 \(1\) 到 \(n\) 不断插入,我们产生的个数就是从 \(0\) 到 \(i…

php中的phar反序列化基础

参考php反序列化拓展攻击详解--phar-先知社区] 什么是phar? phar类似Java中的jar,将整个php应用程序打包到一个文件里面。 用户可以直接通过php test.phar执行一个php项目 phar本质上是一个包含多个文件的压缩包,里…

干扰素:定义、类型与科研应用全解析

在生命科学研究的武器库中,干扰素作为一类关键的核心科研试剂,始终占据着举足轻重的地位。它是机体抵御病毒入侵的首道防线,更是连接先天免疫与适应性免疫的重要桥梁。对于从事病毒学、免疫学、肿瘤学及药物开发的研…

AT_arc083_d [ARC083F] Collecting Balls 笔记

模拟赛 #46 T3。 分析一下,如果有一个机器人对应的一条直线都没有球捡,那就不可能捡完,输出 \(0\),好像没有其他不合法的情况了。 一个球和 \((x,y)\) 有关,按照二分图的套路我们令 \(x\to y+n\) 连无向边,若最终…

Spring IOC 源码学习一 基本姿势

Spring IOC 源码学习一 基本姿势 以下是个人私货, 请读者谨慎参考。 作为一个过来人, 没有方式方法学习 Spring 源码枯燥无味的,建议你:熟悉常见的Spring关键接口:Spring 框架庞大而复杂,扩展点非常多,建议先了解…

可持久化01trie板子

int rt[M]; int cnt[M<<5]; int ch[M<<5][2]; int pre[M]; int tot=0; int n,m; void ins(int a,int b,int t,int x){if(t<0)return;int i = (x>>t)&1;ch[a][!i]=ch[b][!i];ch[a][i]=++tot;c…

2025年11月25日

2025年11月25日 一.滑动窗口专题:class Solution { public:vector<int> findAnagrams(string s, string p) {vector<int> ans; // 记录满足条件的起点。//异位词就是不考虑字母顺序,所以只需要统计每个字…

数据采集第三次作业-102302128吴建良

《数据采集与融合》第三次作业 学号: 102302128姓名: 吴建良 Gitee仓库地址: (请在这里填写您的Gitee仓库链接) 作业①:多线程爬取网站图片 一、核心思路与代码MiniCrawler (爬虫核心类)MiniCrawler 类封装了爬虫的…

2025年操控的轮胎推荐:最新性能轮胎深度解析报告

2025年操控的轮胎推荐:最新性能轮胎深度解析报告为解决用户在“操控的轮胎推荐”上的选择难题,本文将基于全球主流汽车媒体(如《AutoBild》、汽车之家等)的公开评测模型与数据,从以下四大核心维度,对市场上的主流…

2025年节油的轮胎推荐:官方TOP10低滚阻榜单揭秘

2025年节油的轮胎推荐:官方TOP10低滚阻榜单揭秘在消费者日益关注用车成本的当下,“节油的轮胎推荐”正成为各大汽车论坛与专业评测机构的热议焦点。面对琳琅满目的轮胎产品,用户亟需一套基于真实数据、覆盖多维性能…

实用指南:云计算学习(三)——子网划分

实用指南:云计算学习(三)——子网划分pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "M…

基于 Vue3 及TypeScript 项目后的总结 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

慢就是快 用在生活中

假设现在手里有三个活:写报告,回邮件,做表格 求快:报告写个开头,弹出邮箱就回两句,表格填一行数据 求稳: 1、减法 : 哪个是当前的核心,先搞哪个 2、专注 : 回邮箱就回邮箱,写报告就写报告,做表格就做表格,…

102302116_田自豪_作业3

作业1: 要求:指定一个网站,爬取这个网站中的所有的所有图片,例如:中国气象网(http://www.weather.com.cn)。实现单线程和多线程的方式爬取。 –务必控制总页数(学号尾数2位)、总下载的图片数量(尾数后3位)等…

解码HTTP

HTTP 协议基础 HTTP(超文本传输协议)是应用层的请求 - 响应协议,通常运行在 TCP 之上,专门用于客户端与服务器之间的通信。浏览器访问网站、调用 API 接口等网络行为,本质都是通过 HTTP 协议实现的。超文本的核心…