HDU 1171 Big Event in HDU 杭电大事件(母函数,有限物品)
题意:
分家问题,对每种家具都估个值,给出同样价值的家具有多少个,要求尽可能平分,打印的第一个数要大于等于第二个数。
思路:
可以用背包做,也可以用母函数。母函数的实现只需要注意一个点,就是每次以一种价格递增,而不是自加。每类家具有上限,就是该类家具的价值*件数。注意判断输入的结束标志是n<0。
#include <bits/stdc++.h>
using namespace std;
const int N=;
int tmp[**/], ans[**/], big; //上限是50*50*100,但一半就够了
int v[], m[]; int cal(int n) //返回第二个学院所得资产
{
memset(ans,,sizeof(ans));
int half=(big>>);//求一半以下就行,多了也没用
for(int i=,t=; i<=half&&t<=m[]; t++,i+=v[] ) ans[i]=;
for(int i=; i<n; i++)
{
memset(tmp,,sizeof(int)*(half+));
for(int k=; k<=half; k++)
for(int j=,t=; t<=m[i]&&j+k<=half; t++,j+=v[i] )
tmp[j+k]+=ans[k];
memcpy(ans,tmp,sizeof(int)*(half+));
}
for(int i=half; i>; i--)
if(ans[i]) return i;
return ;
} int main()
{
//freopen("input.txt", "r", stdin);
int n, a, b;
while(scanf("%d",&n), n>)//这个判断结束要注意
{
big=;
for(int i=; i<n; i++)
{
scanf("%d%d",&v[i],&m[i]);
big+=v[i]*m[i];
}
int tmp=cal(n);
printf("%d %d\n",big-tmp,tmp);
}
return ;
}
AC代码
HDU 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(母函数)
链接:hdu 1171 题意:这题能够理解为n种物品,每种物品的价值和数量已知,现要将总物品分为A,B两部分, 使得A,B的价值尽可能相等,且A>=B,求A,B的价值分别为多少 分析:这题能够用 ...
- 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 ...
- 【01背包】HDU 1171 Big Event in HDU
Problem Description Nowadays, we all know that Computer College is the biggest department in HDU. Bu ...
- HDU 1171 Big Event in HDU dp背包
Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s ...
- HDU 1171 Big Event in HDU 母函数
欢迎参加——BestCoder周年纪念赛(高质量题目+多重奖励) Big Event in HDU Time Limit: 10000/5000 MS (Java/Others) Memory ...
- 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 ...
- HDU - 1171 Big Event in HDU 多重背包
B - Big Event in HDU Nowadays, we all know that Computer College is the biggest department in HDU. B ...
随机推荐
- 1.7-1.12 MapReduce Wordflow
一.案例运行MapReduce Wordflow 1.准备examples [root@hadoop-senior oozie-4.0.0-cdh5.3.6]# pwd /opt/cdh-5.3.6/ ...
- 3 pyspark学习---sparkContext概述
1 Tutorial Spark本身是由scala语言编写,为了支持py对spark的支持呢就出现了pyspark.它依然可以通过导入Py4j进行RDDS等操作. 2 sparkContext (1) ...
- 【网络爬虫】【python】网络爬虫(四):scrapy爬虫框架(架构、win/linux安装、文件结构)
scrapy框架的学习,目前个人觉得比较详尽的资料主要有两个: 1.官方教程文档.scrapy的github wiki: 2.一个很好的scrapy中文文档:http://scrapy-chs.rea ...
- SourceTree配置BeyondCompare代码冲突解决工具
一.工具准备:SourceTree这个你得有.然后下载BeyondCompare(破解教程) 二.配置环境:SourceTree->工具->选项->比较,外部对比工具和合并工具都选择 ...
- 进击python第二篇:初识
入门拾遗 模块 模块用以导入python增强其功能扩展 1.使用 import [模块名] 导入,应用方式:模块. 函数,例: >>> import math >>> ...
- IT兄弟连 JavaWeb教程 Servlet会话跟踪 Cookie的优缺点
Cookie技术存储的数据类型只能是字符串,且不支持中文 ● 保存的数据大小有限,4kb ● 太依赖用户浏览器的设置,用户可以禁用Cookie! ● 数据存储在客户端的文本文件中,不安全,不建议 ...
- C#Sqlite增删改查
说到使用数据库的话,无非也就是对数据的增加,删除和修改以及查询.前文已经 创建好了程序,现在我们就可以来具体实现Sqlite的数据操作,增删改查. 第一步,创建连接字符串来连接数据库: private ...
- SpringBoot | Velocity template
SpringBoot版本: <parent> <groupId>org.springframework.boot</groupId> <artifactId& ...
- [題解](最短路)luogu_P1119災後重建
一道好題,然而看題解做的...... floyed的實質:只經過前k個點i到j的最短路,原狀態轉移方程為 f [ k ] [ i ] [ j ]=min( f[ k-1 ] [ i ] [ j ],f ...
- 采集-telegraf
1 介绍 Telegraf是一款Go语言编写的metrics收集.处理.聚合的代理其设计目标是较小的内存使用,通过插件来构建各种服务和第三方组件的metrics收集Telegraf由4个独立的插件驱动 ...