博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
uoj#370【UR #17】滑稽树上滑稽果
阅读量:5146 次
发布时间:2019-06-13

本文共 1464 字,大约阅读时间需要 4 分钟。

低智选手果然刷不动uoj

首先考虑一下构造一棵树显然是骗你玩的,按位与这个东西越做越小,挂到链的最下面显然不会劣于挂到之前的某一个点下面,所以我们只需要求一个排列使得答案最小就好了

\(A=\max(a_i)\),发现最优答案不可能要劣于反复对一个数取\(\rm and\)的答案,我们就有了一个\(O(nA)\)的暴力,设\(dp_i\)表示当前的\(\rm and\)和为\(i\),把这个\(i\)变成\(0\)的最小代价

但是有可能最后的\(\rm and\)和也不是\(0\),于是我们把所有\(a_i\)都共有的二进制位\(k\)都求出来,在把每一个\(a_i\)消去这些数位,即和\(k\)异或一下,最后的\(\rm and\)和就一定为\(0\);在答案加上\(n\times k\)就好了

这样的话转移非常简单,我们枚举一个\(a_j\)\(dp_i=\min(dp_{i\ \rm and \ a_j }+i\ \rm and \ a_j)\)即可

最后答案是\(\min(dp_{a_i}+a_i)\)

注意到\(i\ \rm and \ a_j\)一定是\(i\)的子集,考虑枚举\(i\)的子集\(j\),现在只需要判断是否存在一个\(a_k\)满足\(i\ \rm and\ \ a_k=j\)

从集合的角度来考虑,我们可以把上面那个条件拆成\(j\)\(a_k\)的子集,并且\(a_k\)\(j\bigoplus i\)在全集补集中的子集,我们用\(\rm fwt\)处理一下就可以知道是否有一个\(a_k\)\(i\bigoplus j\)在全集补集中的子集,但并没有办法判断\(j\)是否为\(a_k\)的子集

但是想一想发现我们没有必要判断\(j\)是否为\(a_k\)的子集,只管转移就好了

观察转移式\(dp_i=\min(dp_j+j)\),显然\(j\)越小越好,如过存在\(a_k\)\(i\bigoplus j\)在全集补集中的子集,但是\(a_k\)并不是\(j\)的子集,那么一定会有一个更小的\(i\)的子集是这个\(a_k\)的子集,那个转移一定更优

于是复杂度就是\(O(3^{\log A})\)

#include
#define re register#define LL long long#define min(a,b) ((a)<(b)?(a):(b))#define max(a,b) ((a)>(b)?(a):(b))inline int read() { char c=getchar();int x=0;while(c<'0'||c>'9') c=getchar(); while(c>='0'&&c<='9') x=(x<<3)+(x<<1)+c-48,c=getchar();return x;}const int maxn=1e5+5;int n,a[maxn],vis[1<<18+1],k,T,len;LL dp[1<<18+1],ans;int main() { n=read(); for(re int i=1;i<=n;i++) a[i]=read(),T=max(T,a[i]); len=1;while(len
>1,l=0;l

转载于:https://www.cnblogs.com/asuldb/p/11388166.html

你可能感兴趣的文章
索引优先队列的工作原理与简易实现
查看>>
并发编程简介
查看>>
wow 各职业体验(pvp)
查看>>
字符串的操作
查看>>
性能优化之Java(Android)代码优化
查看>>
由Oracle 11g SYSAUX 和 SYSTEM 表空间回收引发的联想
查看>>
欲则不达
查看>>
盒子游戏
查看>>
Jmeter + Grafana搭建实时监控可视化
查看>>
uCGUI字符串显示过程分析和uCGUI字库的组建
查看>>
h5唤起app
查看>>
SQL Server 2008 /SQL Server 2008 R2 配置数据库邮件
查看>>
处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“Manag
查看>>
01: socket模块
查看>>
mysql触发器
查看>>
淌淌淌
查看>>
web页面实现指定区域打印功能
查看>>
使用PHP拆分中文字符串的方法(收藏) 小节
查看>>
win10每次开机都显示“你的硬件设置已更改,请重启电脑……”的解决办法
查看>>
VMware环境和Window环境进行网络连接的问题
查看>>