hdu1171&&P2000——母函数
hdu1171
题意:有 $n$ 种设施,每种有价值 $v_i$ 和数量 $m_i$,求一种方案使得分成价值尽可能相近的两组。($n \leq 50, v_i \leq 50, m_i \leq 100$)
分析:
可以用背包做,这里讲母函数的做法。
直接用样例说明一下:
3
10 1
20 2
30 1
其母函数为
$$(1+x^{10})(1+x^{20}+x^{40})(1+x^{30})$$
多项式展开后,倒着枚举 $i$ 从 $sum/2$ 到0,如果 $x^i$ 前的系数不为0说明能够组成 $i$,则答案为 $sum-i, i$.
#include<bits/stdc++.h>
using namespace std; const int maxn = +;
int c1[+], c2[+]; //c1存放前面项计算出来的结果,c2存放中间结果
int n;
int value[maxn], amount[maxn]; int main()
{
while(scanf("%d", &n) == && n >= ) //负数结束,不一定是-1。。。
{
int sum = ;
for(int i = ;i <= n;i++)
{
scanf("%d%d", &value[i], &amount[i]);
sum += value[i]*amount[i];
} for(int i=; i<=sum/; ++i) c1[i] = c2[i] = ;
for(int i = ;i <= value[]*amount[]; i+= value[]) c1[i] = ;
for(int i=; i<=n; ++i) // n个大括号
{ for(int j=; j<=sum/; ++j) // 枚举c1中的项
for(int k=; k<=value[i]*amount[i] && j+k<=sum/; k+=value[i]) // 枚举第i个大括号中的项
{
c2[j+k] += c1[j];
}
for(int j=; j<=sum/; ++j) //转移到c1
{
c1[j] = c2[j];
c2[j] = ;
}
} for(int i = sum/;i >= ;i--)
if(c1[i] != )
{
printf("%d %d\n", sum-i, i);
break;
}
}
return ;
}
p2000拯救世界
题目:给出10个限制,求组成n的方案数
分析:每个限制都可以写成一个母函数,由于每个限制是独立的,直接乘起来,结果为 $\displaystyle \frac{1}{(1-x)^5}$
有结论:$\displaystyle \frac{1}{(1-x)^k} = \sum_{i=0}^{\infty}C_{k+i-1}^i\cdot x^i$(用广义二项式定理证)
所以有 $\frac{1}{(1-x)^5}$ 的 $n$ 项的系数为 $C_n^4$.
//因为这题卡常,所以python过不了,然后用pypy就过了
n=int(input())
print((n+1)*(n+2)*(n+3)*(n+4)//24)
参考链接:
1. http://www.acmsearch.com/article/show/5079
2. http://www.wutianqi.com/blog/594.html
3. https://www.luogu.org/problemnew/solution/P2000
hdu1171&&P2000——母函数的更多相关文章
- Big Event in HDU(HDU1171)可用背包和母函数求解
Big Event in HDU HDU1171 就是求一个简单的背包: 题意:就是给出一系列数,求把他们尽可能分成均匀的两堆 如:2 10 1 20 1 结果是:20 10.才最均匀! 三 ...
- HDU1171——Big Event in HDU(母函数)
Big Event in HDU DescriptionNowadays, we all know that Computer College is the biggest department in ...
- acm之路--母函数 by小宇
母函数又叫生成函数,原是数学上的一个名词,是组合数学中的一个重要理论. 生成函数是说,构造这么一个多项式函数g(x).使得x的n次方系数为f(n). 对于母函数,看到最多的是这样两句话: 1.&quo ...
- hdu2082 找单词 (母函数)
找单词 题意: 中文题,考虑是不是要写个英文题意..(可惜英语水平不够 囧rz) (题于文末) 知识点: 母函数(生成函数): 生成函数有普通型生成函数和指数型生成函数 ...
- hdu1521 排列组合(指数型母函数)
题意: 有n种物品,并且知道每种物品的数量ki.要求从中选出m件物品的排数. (全题文末) 知识点: 普通母函数 指数型母函数:(用来求解多重集的排列问题) n个元素,其中a1,a2, ...
- Thinkphp的单字母函数整理
有人不太喜欢TP这种单字母函数,其实这也是TP的一个特色,如果理解了这些函数的作用,不管是背,还是写,都是非常方便的,接下来我们以字母顺序开始.A函数 B函数 C函数 D函数 F函数 L函数 R函数 ...
- ThinkPHP单字母函数(快捷方法)使用总结
在ThinkPHP中有许多使用简便的单字母函数(即快捷方法),可以很方便开发者快速的调用,但是字母函数却不方便记忆,本文将所有的字母函数总结一下,以方便以后查找. 1.U() URL组装 支持不同UR ...
- hdu 1398 Square Coins (母函数)
Square Coins Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tota ...
- [BZOJ3696][FJSC2014]化合物(异或规则下的母函数)
题目:http://hzwer.com/3708.html 分析: 类似树分治思想,设f[x][i]表示以x为根的子树的所有点中,与x的距离为i的点有多少个,这个可以预处理出来 然后我们考虑每颗子树对 ...
随机推荐
- jquery下拉单选框可左右移动数据
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- c#学习笔记2-委托
using System; using System.Collections; using System.Collections.Generic; using System.Linq; using S ...
- day18——re正则表达式
day18 re模块--正则表达式 匹配方法 findall():从字符串中全部查找内容,返回一个列表 s = "meet_宝元_meet" print(re.findall(&q ...
- Python之路【第二十七篇】:web服务器django
Django 一.web框架 框架,即时framework,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构,使用框架可以帮你快速开发特定的系统,简单的说,就是用别人搭建好的舞台来表演你的才艺 ...
- 关于 exynos 4412 按键中断 异步通知
以下是驱动测试代码: //内核的驱动代码 #include <linux/init.h> #include <linux/module.h> //for module_init ...
- highcharts离线导出图表
到了这里,其实还没有结束,导出图片时,仍会发出两个请求 此时找到offline-exporting.js文件修改其中的libURL 修改为请求自己的网站
- [golang]svg图片默认按照左上角旋转,改为按中心旋转,重新计算中心偏移量
1 前言 svg图片默认按照左上角旋转,改为按中心旋转,重新计算中心偏移量 2 代码 type Point struct { X float64 Y float64 } func GetOffsetX ...
- 2019 网易java面试笔试题 (含面试题解析)
本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.网易等公司offer,岗位是Java后端开发,因为发展原因最终选择去了网易,入职一年时间了,也成为了面试官,之 ...
- 记录screen屏幕日志
1.建立日志存放目录#mkdir /var/log/screen/ 2.修改配置文件,在末尾添加配置内容#vi /etc/screenrclogfile /var/log/screen/%t.log ...
- Win 10 无法锁屏,快捷键win+L失效
快捷键win+L 一直在使用,忽然之间不知道按错了什么 Win 10 无法锁屏,快捷键win+L失效,按win+L后出来的是输入法 应该是键盘的Windows键锁住了,按Fn+windows键解锁