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的点有多少个,这个可以预处理出来 然后我们考虑每颗子树对 ...
随机推荐
- [转帖]Zookeeper
Zookeeper https://www.cnblogs.com/zhang-qc/p/8877082.html Zookeeper其实是一种为分布式应用所设计的高可用.高性能且一致的开源协调服 ...
- HTML登录注册页面简单实现
github:传送门 , 码云: 传送门 效果参考: 登录页面,注册页面 使用了bootstrap,jQuery. 后端使用的CGI处理表单,存入MySQL数据库.(之后更新) 登录页面源码 < ...
- Java Web报错:The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path
问题描述: 我们在用Eclipse进行Java web开发时,可能会出现这样的错误:The superclass javax.servlet.http.HttpServlet was not foun ...
- aop 打印请求信息
项目中使用 AOP 打印请求信息,打印响应信息.package com.example.aspect; import com.alibaba.fastjson.JSON;import com.goog ...
- Teamviewer显示“未就绪,请检查您的连接”解决办法
打开TeamViewer一直提示“未就绪,请检查您的连接”,一直会弹出一个框提示检查网路设置什么. 解决办法:修改DNS为114.114.114.114,然后TeamViewer就显示网络正常. 为什 ...
- 2019 三七互娱java面试笔试题 (含面试题解析)
本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.三七互娱等公司offer,岗位是Java后端开发,因为发展原因最终选择去了三七互娱,入职一年时间了,也成为了面 ...
- Java之路---Day01
2019-10-17-19:36:43 标识符: 标识符:是指在程序中,自己定义的内容.如:类名.方法名.变量名等 命名规则(硬性要求): 1.有英文字母(区分大小写).数字.$(美元符)._(下划线 ...
- Flutter Platform Channels
Flutter Platform Channels(一) https://www.jianshu.com/p/33ac774f99b1 https://www.jianshu.com/p/c1e206 ...
- JavaScript之鼠标事件
事件三要素: 事件源.事件类型(点击onclick)=function(){ 事件触发后执行的代码 } 案例: function abb(a){ return document.getElementB ...
- 已知IP地址算子网掩码
子网掩码计算方法有两种: 方法一:利用子网数来计算: 1.首先,将子网数目从十进制数转化为二进制数: 2.接着,统计得到的二进制数的位数,设为N: 3.最后,先求出此IP地址对应的地址类别的子网掩码. ...