P7718 「EZEC-10」Equalization 题解

news/2024/9/19 21:00:36/文章来源:https://www.cnblogs.com/Farmer-djx/p/18418658

题目链接

点击打开链接

题目解法

牛牛牛

显然转化成差分数组做,令 \(b_i=a_{i+1}-a_i\)
考虑不同操作给 \(b\) 带来的影响

  1. \(l=1,r=n\),没影响
  2. \(l=1,r<n\)\(b_r:=b_r+x\)
  3. \(l>1,r=n\)\(b_{l-1}:=b_{l-1}+x\)
  4. \(l>1,r<n\)\(b_{l-1}:=b_{l-1}+x,\;b_r:=b_r-x\)

所以操作相当于单点加和两个数和相同,随便改
我们把操作看成连边,则有一个结论:
在最优策略中,对于一个连通块,令其 \(b\) 之和为 \(S\),则有:

  1. \(S=0\),连通块为一棵树
  2. \(S\neq 0\),连通块为一棵树 + 一个自环

应该可以构造性证明,我只口胡了一下,差不多就是:

  1. 对于树,从叶子往上操作,目标是使叶子为 \(0\),父亲跟着动就好了,最后整棵树都为 \(0\)
  2. 对于一个自环和树,把树根定于自环,然后做树的操作,最后对着自环做一下就好了

我们用状压 \(dp\) 做这东西,记一下当前状态的最小操作数和方案数
然后每次添加一个连通块转移即可(树的话就是 \(prufer\) 序列的 \(siz^{siz-2}\),加一个自环就 \(\times 2siz\),因为有 \([1,t],[t+1,n]\) 两种方法改变 \(t\) 处的值

时间复杂度 \(O(3^{n-1})\)

#include <bits/stdc++.h>
#define F(i,x,y) for(int i=(x);i<=(y);i++)
#define DF(i,x,y) for(int i=(x);i>=(y);i--)
#define ms(x,y) memset(x,y,sizeof(x))
#define SZ(x) (int)x.size()-1
#define all(x) x.begin(),x.end()
#define pb push_back
using namespace std;
typedef long long LL;
typedef unsigned long long ull;
typedef pair<int,int> pii;
template<typename T> void chkmax(T &x,T y){ x=max(x,y);}
template<typename T> void chkmin(T &x,T y){ x=min(x,y);}
template<typename T> void read(T &FF){FF=0;int RR=1;char ch=getchar();for(;!isdigit(ch);ch=getchar()) if(ch=='-') RR=-1;for(;isdigit(ch);ch=getchar()) FF=(FF<<1)+(FF<<3)+ch-48;FF*=RR;
}
const int N=18,P=1e9+7;
int n,a[N],b[N],ppc[1<<N],wys[N],f[1<<N],g[1<<N];
LL sum[1<<N];
inline void inc(int &x,int y){ x+=y;if(x>=P) x-=P;}
#define lowbit(x) x&-x
int main(){read(n);F(i,0,n-1) read(a[i]);F(i,0,n-2) b[i]=a[i+1]-a[i];int full=(1<<(n-1))-1;F(S,1,full){ppc[S]=__builtin_popcount(S);F(i,0,n-2) if(S>>i&1){ sum[S]=sum[S^1<<i]+b[i];break;}}F(i,1,n-1){wys[i]=1;F(j,1,i-2) wys[i]=1ll*wys[i]*i%P;}ms(f,0x3f);f[0]=0,g[0]=1;F(S,1,full){int nS=S^lowbit(S);for(int nT=nS;;nT=(nT-1)&nS){int T=nT^lowbit(S);int nf=f[S^T]+ppc[T]-1+(sum[T]!=0),ng=1ll*g[S^T]*wys[ppc[T]]%P;if(sum[T]) ng=2ll*ng*ppc[T]%P;if(nf<f[S]) f[S]=nf,g[S]=0;if(nf==f[S]) inc(g[S],ng);if(!nT) break;}}F(i,1,f[full]) g[full]=1ll*g[full]*i%P;printf("%d\n%d\n",f[full],g[full]);return 0;
}

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

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

相关文章

zblog php404页面,图文详解zblogphp如何自定义404错误页面?zblogphp设置404的方法

在 Z-Blog PHP 中自定义 404 错误页面是一个相对简单的过程。以下是详细的步骤,帮助你完成自定义 404 页面的工作。 1. 创建 404 页面模板 步骤 1:创建 404 页面模板文件在你的 Z-Blog PHP 主题目录下创建一个名为 404.php 的文件。 打开这个文件并编写你的 404 页面模板代码…

思通数科开源产品:免费的AI视频监控卫士安装指南

准备运行环境: 确保您的服务器或计算机安装了Ubuntu 18.04 LTS操作系统。 按照产品要求,安装以下软件:Python 3.9 Java JDK 1.8 MySQL 5.5 Redis 2.7 Elasticsearch 8.14 FFmpeg 4.1.1 RabbitMQ 3.13.2 Minio (2024-07-26T20版本)接着,下载开源软件,并运行Python端、Jav…

网易云JS逆向分析

网易云JS逆向分析 前言 本文章中所有内容仅供学习交流,严禁用于商业用途和非法用途,否则由此产生的一切后果均与文章作者无关,若有侵权,请联系我立即删除! 阅读本篇文章,需要一定的爬虫基础,和js逆向思维,否则无法继续 首先找到一个歌单找到这个api接口api传参为这两个…

虚拟机开启IPV6的建议

概述 默认情况vmware的nat网络模式是没有开启IPV6的,即便宿主机有IPV6。 开启方式:编辑---》选择vmnet8(NAT),点击NAT Settings(NAT设置),选择最下面的开启IPV6 NAT。 少侠,我看你气度不凡天赋异禀,骨骼精奇,这么帅,来了就帮推荐一把吧 我的最近更新 最新发布文章、框架、…

ZBlogPHP Leaked 1 hashtable iterators错误

当遇到 Z-Blog PHP 报告 “Leaked 1 hashtable iterators” 错误时,这通常表明内存泄漏或其他内存管理问题。这类错误通常出现在 PHP 内存管理或扩展中。以下是解决这一问题的一些常见步骤: 检查 PHP 配置问题描述:PHP 配置可能存在问题。 解决方法:编辑 php.ini 文件,确保…

Windows/Linux操作用户权限常用命令

环境:centos7.5(主要),win7 Linux/Centos(权限篇) 一、概述 Linux操作系统,设计用于支持多用户和处理多任务的服务器环境,实施了一套严密的权限控制系统。这一系统主要通过两个核心要素——用户身份和文件权限——来管理和限制对资源的访问。在Linux中,资源的访问权限…

Kali下安装与使用BeEF:反射型与存储型XSS攻击、Cookie会话劫持、键盘监听及浏览器操控技巧

早八人,护网在即,该学习了~前言 BEEFXSS(Browser Exploitation Framework XSS),更常见的称呼是BeEF(The Browser Exploitation Framework),是一个开源的浏览器漏洞利用框架。它由Michał Zalewski于2006年创建,旨在帮助渗透测试人员评估Web浏览器的安全性,发现并利用…

phpStudy 小皮 Windows面板 存在RCE漏洞

靶场资料后台自行领取【靶场】Phpstudy小皮面板存在RCE漏洞,通过分析和复现方式发现其实本质上是一个存储型XSS漏洞导致的RCE。通过系统登录用户名输入处的XSS配合系统后台自动添加计划任务实现RCE。这是登录成功的界面登录成功了就来和大佬们喝喝茶吧~首先在用户名登录的地方…

伪静态注入的总结

伪静态页面渗透 在日常的测试中,经常会遇到静态页面,尤其是政府类的站点(前提经过授权),此时就会非常的棘手,在下多试验后,发现以下思路或可以帮助我们跨越这个障碍。 伪静态即是网站本身是动态网页如.php、.asp、.aspx等格式动态网页有时这类动态网页还跟“?”加参数来…

文件上传10种waf绕过姿势

基础篇:https://mp.weixin.qq.com/s/od0djMG4iwO755N2YgDAHg 环境搭建 首先去官网下载安全狗,进行网站配置,或者后台回复【安全狗】,靶场源码和waf软件都准备好了,都是最新版本的,直接下载就行安全狗配置文件防护规则这里用upload-labs中的第六关进行文件上传测试第六关是…

什么是域?如何搭建?

域 域是计算机网络中的一个逻辑组织单元,具有安全边界,实现资源的集中管理和共享。它通常分为,单域 ,多域,父域,子域 ,域树(tree), 域森林(forest),DNS域名服务器。 单域和多域 单域指网络中所有计算机和用户隶属于同一域,便于集中管理;多域则将网络划分为多个独…

css布局之Grid布局

前言 最近了解到一种新的布局:grid布局(网格布局),grid并不是最近才看到的,以前在设置display的时候,会在属性值列表中看到,但却没有给过太多关注。一次偶然机会听到:对于九宫格布局的实现,grid布局会比flex布局实现起来更方便,作为flex深度使用者,这句话无疑引起了…