题意:

  分家问题,对每种家具都估个值,给出同样价值的家具有多少个,要求尽可能平分,打印的第一个数要大于等于第二个数。

思路:

  可以用背包做,也可以用母函数。母函数的实现只需要注意一个点,就是每次以一种价格递增,而不是自加。每类家具有上限,就是该类家具的价值*件数。注意判断输入的结束标志是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 杭电大事件(母函数,有限物品)的更多相关文章

  1. 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 ...

  2. hdu 1171 Big Event in HDU(母函数)

    链接:hdu 1171 题意:这题能够理解为n种物品,每种物品的价值和数量已知,现要将总物品分为A,B两部分, 使得A,B的价值尽可能相等,且A>=B,求A,B的价值分别为多少 分析:这题能够用 ...

  3. HDU 1171 Big Event in HDU (多重背包变形)

    Big Event in HDU Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others ...

  4. 组合数学 - 母函数的变形 --- hdu 1171:Big Event in HDU

    Big Event in HDU Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others ...

  5. HDU 1171 Big Event in HDU (多重背包)

    Big Event in HDU Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others ...

  6. 【01背包】HDU 1171 Big Event in HDU

    Problem Description Nowadays, we all know that Computer College is the biggest department in HDU. Bu ...

  7. HDU 1171 Big Event in HDU dp背包

    Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s ...

  8. HDU 1171 Big Event in HDU 母函数

    欢迎参加——BestCoder周年纪念赛(高质量题目+多重奖励) Big Event in HDU Time Limit: 10000/5000 MS (Java/Others)    Memory ...

  9. 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 ...

  10. 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. 坑暗花明:又遇 .NET Core 中 System.Data.SqlClient 查询缓慢的问题

    之前发布过一篇博文 下单快发货慢:一个 JOIN SQL 引起 SqlClient 读取数据慢的奇特问题,当时遇到的问题是从 SQL Server 2008 R2 中查询获取 100 条记录竟然耗时 ...

  2. UICollctionView 刷新 item 刷新 消失

    在需要局部刷新的时候,可能出现的问题: 当时采用的局部刷新,第一次刷新没问题,当多次刷新的时候 item 就会消失 NSIndexSet *]; [collectionView reloadSecti ...

  3. JS鼠标响应事件经过、移动、点击示例介绍

    原文: http://www.jb51.net/article/41124.htm onMouseDown 按下鼠标时触发 onMouseOver 鼠标经过时触发 onMouseUp 按下鼠标松开鼠标 ...

  4. POJ3450【KMP理解】

    题意: 求多个字符串的最长公共子串 思路: 4000个串,200长度. 一种暴力,对于一个串最多有200*200=40000级别个子串,然后我要再处理一下next数组200,8e6复杂度: 然后我要和 ...

  5. CF438E The Child and Binary Tree(生成函数+多项式开根+多项式求逆)

    传送门 可以……这很多项式开根模板……而且也完全不知道大佬们怎么把这题的式子推出来的…… 首先,这题需要多项式开根和多项式求逆.多项式求逆看这里->这里,这里讲一讲多项式开根 多项式开方:已知多 ...

  6. mysql项目实战经验

    一.项目的编码设置   目的:避免出现莫名其妙错误,笔者曾经就碰到因编码不对返回null而浪费大量时间:统一的编码可以减少解析的时间,提高效率 1.1修改my.ini文件 一般在C:\Program ...

  7. git上如何删除已有项目

    删除fork别人的项目 由于最近想删除fork别人项目,步骤如下. 点击进入需要删除fork的项目 进入Settings选项 找到delete this repository按钮 确认是否要删除,Pl ...

  8. day03 System Math

  9. Vue文件 引入.js文件 的组件

    Vue.component('remote-script', { render: function (createElement) { var self = this; return createEl ...

  10. 测试 | 单元测试工具 | JUnit | 参数化

    被测试类: package project; public class MyCalendar2 { public int getNumberOfDaysInMonth(int year, int mo ...