【HDOJ】1171 Big Event in HDU
母函数,先要算搞清楚组合数可能的最大值。非常大。N种设备的最大VAL*最大数量。
#include <stdio.h>
#include <string.h> #define MAXNUM 500000 typedef struct {
int val, num;
} fac_st; fac_st facs[];
int c1[MAXNUM], c2[MAXNUM]; int main() {
int n, sum, tmp;
int i, j, k; while (scanf("%d", &n) != EOF && (n>=)) {
sum = ;
for (i=; i<=n; ++i) {
scanf("%d %d", &facs[i].val, &facs[i].num);
sum += facs[i].val * facs[i].num;
}
memset(c1, , sizeof(c1));
memset(c2, , sizeof(c2));
for (i=, j=; i<=facs[].num; ++i, j+=facs[].val)
c1[j] = ;
for (i=; i<=n; ++i) {
for (j=; j<=sum; ++j) {
tmp = facs[i].val * facs[i].num;
for (k=; k<=tmp && (k+j)<=sum; k+=facs[i].val)
c2[k+j] += c1[j];
}
for (j=; j<=sum; ++j) {
c1[j] = c2[j];
c2[j] = ;
}
}
k = sum/;
if (c1[k])
printf("%d %d\n", sum-k, k);
else {
for (i=k+; i<=sum; ++i)
if (c1[i]) {
printf("%d %d\n", i, sum-i);
break;
}
}
} return ;
}
【HDOJ】1171 Big Event in HDU的更多相关文章
- HDU 1171 Big Event in HDU 多重背包二进制优化
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1171 Big Event in HDU Time Limit: 10000/5000 MS (Jav ...
- HDU 1171 Big Event in HDU【01背包/求两堆数分别求和以后的差最小】
Big Event in HDU Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) T ...
- 【01背包】HDU 1171 Big Event in HDU
Problem Description Nowadays, we all know that Computer College is the biggest department in HDU. Bu ...
- HDOJ 1171 Big Event in HDU
Big Event in HDU Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...
- 【温故知新】c#事件event
从上一篇文章[温故知新]C#委托delegate可知,委托delegate和事件Event非常的相似,区别就是event关键字,给delegate穿上了个“马甲”. 让我们来看官方定义: 类或对象可以 ...
- HDU 1171 Big Event in HDU (多重背包变形)
Big Event in HDU Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...
- 组合数学 - 母函数的变形 --- hdu 1171:Big Event in HDU
Big Event in HDU Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...
- HDU 1171 Big Event in HDU (多重背包)
Big Event in HDU Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...
- 杭电1171 Big Event in HDU(母函数+多重背包解法)
Big Event in HDU Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...
随机推荐
- zxing.dll生成条码
引入zxing.dll using System; using System.Drawing; using ZXing.QrCode; using ZXing; using ZXing.Common; ...
- iOS类似QQ好友展开和合并列表的实现代码
其实原理就是好友列表合上的时候,将这组的cell数设置为0,展开的时候,在变成原来的,就是这么简单 -(); }
- Jsp页面里引入一个javascript文件,在jsp的onclick里怎么添加脚本文件里的方法
举个简单例子:首先新建use.js文件内容:function show(){ alert("aa");} 建html文件跟use.js放同目录下: <html>< ...
- Linux Terminal命令
Linux Terminal命令 1.Ctrl + a 回到命令行の「行首/head」. 2.Ctrl + e 回到命令行の「行尾/tail」, ctrl + end. 3.Ctrl + w 後向/b ...
- OpenJudge 2757 最长上升子序列 / Poj 2533 Longest Ordered Subsequence
1.链接地址: http://poj.org/problem?id=2533 http://bailian.openjudge.cn/practice/2757 2.题目: 总Time Limit: ...
- 建造者模式(Builder Pattern)
建造者模式:使用多个简单对象一步步构建成一个复杂的对象. 有时候,我们会创建一个“复杂”的对象,这个对象的由很多子对象构成,由于需求的变化,这个对象的各个部分经常面临剧烈的变化. 继续工厂模式的披萨店 ...
- 由Double类型数据到数据的格式化包java.text
需求:Double类型数据截取操作保留两位小数 解决方案: java.text.DecimalFormat df =new java.text.DecimalFormat("#.00&quo ...
- linux 定时执行 cron指令
linux 中的 cron 定时执行命令,先上例子:每间隙两分钟把 "Hello world"写到 /tmp/hello.txt crontab -e */2 * * * * ec ...
- H5 App如此强悍,要降薪的恐怕已不只是iOS程序员
2015年的最后几天,移动开发圈里最为火爆的话题之一无疑是“iOS程序员月薪降至12K”这则报道. 有人认为这是O2O创业遇冷所致,也有人认为这是iOS生态过于封闭致使智能硬件等新领域对iOS开发者的 ...
- 关于静态库和动态库的理解(C++)
库的存在,是软件模块化的基础. 库存在的意义: } 库是别人写好的现有的,成熟的,可以复用的代码,你可以使用但要记得遵守许可协议. } 现实中每个程序都要依赖很多基础的底层库,不可能每个人的 ...