博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
反演dp经典
阅读量:5822 次
发布时间:2019-06-18

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

咋一看,至少要用3^n才能做到。

但。

首先定义:

可以发现只要求出a' b' 那么直接可以得出c'

那么如何求a'呢

//dp求a',其实就是分别用[0,n)来更新a'for (int i = 0; i < n; i++)    for (int s = 0; s < (1 << n); s++)        if (s >> i & 1)            a[s] += a[s ^ 1 << i];

有了a'之后,观察式子发现直接逆着写,就可以从a'->a

然后反演即为:

for (int i = 0; i < n; i++)    for (int s = 0; s < (1 << n); s++)        if (s >> i & 1)            c[s] -= c[s ^ 1 << i];

然后就可以在n*2^n 内求出C

参考:

转载地址:http://ulbdx.baihongyu.com/

你可能感兴趣的文章
js之无缝滚动
查看>>
Django 多表联合查询
查看>>
logging模块学习:basicConfig配置文件
查看>>
Golang 使用 Beego 与 Mgo 开发的示例程序
查看>>
ntpdate时间同步
查看>>
+++++++子域授权与编译安装(一)
查看>>
asp.net怎样在URL中使用中文、空格、特殊字符
查看>>
路由器发布服务器
查看>>
实现跨交换机VLAN间的通信
查看>>
jquery中的data-icon和data-role
查看>>
python例子
查看>>
环境变量(总结)
查看>>
ios之UILabel
查看>>
Java基础之String,StringBuilder,StringBuffer
查看>>
1月9日学习内容整理:爬虫基本原理
查看>>
安卓中数据库的搭建与使用
查看>>
AT3908 Two Integers
查看>>
渐变色文字
查看>>
C++ 0X 新特性实例(比较常用的) (转)
查看>>
node生成自定义命令(yargs/commander)
查看>>