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的点有多少个,这个可以预处理出来 然后我们考虑每颗子树对 ...
随机推荐
- Python实现堆
堆 (heap) 是一种经过排序的完全二叉树,其中任一非叶子节点的值均不大于(或不小于)其左孩子和右孩子节点的值. 注:定义来自百度百科. 堆,又被为优先队列(priority queue).尽管名为 ...
- Opencv颜色识别与追踪
这是基于颜色识别的物体追踪 不废话 直接看代码 这是Opencv3的代码 //---------------------------------[头文件.命名空间包含部分]-------------- ...
- STM32 系统滴答计时器
;//us与系统滴答的被乘数 ;//ms与系统滴答的被乘数 ;//系统运行秒数 /** * @description:系统滴答计时系统初始化 * @param 无 * @retval 无 */ voi ...
- 词汇AFFRIKE非洲AFFRIKE英语
affrike 英文单词,含义是非洲,非洲大陆. 中文名:非洲 外文名:affrike 目录 释义 affrike noun名词 非洲,也用做africa 1.Word Origin and Hist ...
- 【题解】Luogu P5279 [ZJOI2019]麻将
原题传送门 希望这题不会让你对麻将的热爱消失殆尽 我们珂以统计每种牌出现的次数,不需要统计是第几张牌 判一副牌能不能和,类似这道题 对于这题: 设\(f[i][j][k][0/1]\)表示前\(i\) ...
- Gulp 给所有静态文件引用加版本号
在juqery和easyui 盛行的年代许多项目采用纯静态页面去构建前端框架从而实现前后端分离的目的.项目开发周期内往往会频繁修改更新某个文件,当你将文件更新到服务器后客户端由于缓存问题而出现显示异常 ...
- 线程并发工具类之CountDownLatch的使用及原理分析
原文链接:http://www.studyshare.cn/blog/details/1149/1 java开发工具下载地址及安装教程大全,点这里.更多技术文章,在这里. 一.定义 CountDown ...
- jq1.6版本前后,attr()和prop()的区别,来自慕课网的回答
jQuery 1.6之前 ,.attr()方法在取某些 attribute 的值时,会返回 property 的值,这就导致了结果的不一致.从 jQuery 1.6 开始, .prop()方法 方法返 ...
- Sign in with apple
UI: https://developer.apple.com/design/human-interface-guidelines/sign-in-with-apple/overview/ 审核: h ...
- 【故障解决】OGG-00446 错误解决
[故障解决]OGG-00446 Could not find archived log for sequence 一.1 BLOG文档结构图 一.2 前言部分 一.2.1 导读和 ...