杭電ACM hdu 1171 Big Event in HDU 解題報告(母函式)
Problem Description
Nowadays, we all know that Computer College is the biggest department in HDU. But, maybe you don't know that Computer College had ever been split into Computer
College and Software College in 2002.
The splitting is absolutely a big event in HDU! At the same time, it is a trouble thing too. All facilities must go halves. First, all facilities are assessed, and two facilities are thought to be same if they
have the same value. It is assumed that there is N (0<N<1000) kinds of facilities (different value, different kinds).
Input
Input contains multiple test cases. Each test case starts with a number N (0 < N <= 50 -- the total number of different facilities). The next N lines contain
an integer V (0<V<=50 --value of facility) and an integer M (0<M<=100 --corresponding number of the facilities) each. You can assume that all V are different.
A test case starting with a negative integer terminates input and this test case is not to be processed.
Output
For each case, print one line containing two integers A and B which denote the value of Computer College and Software College will get respectively. A and B should be as equal as possible. At the same time,
you should guarantee that A is not less than B.
Sample Input
2
10 1
20 1
3
10 1
20 2
30 1
-1
Sample Output
20 10
40 40
Author
lcy
Solution
以下部分的版權歸本人(小飛)所有。所有權利保留。
歡迎轉載,轉載時請註明出處:
http://blog.csdn.net/xiaofei_it/article/details/17041709
本題直接套用母函式模板即可。關於母函式的詳細解釋請看:
http://blog.csdn.net/xiaofei_it/article/details/17042651
程式碼如下:
#include <iostream>
#include <cstring>
using namespace std;
#define MAX 250010
int n,a[MAX],b[MAX],i,j,k,last,last2,v[50],m[50];
int main()
{
while ((cin>>n)&&n>=0)
{
for (i=0;i<n;i++)
cin>>v[i]>>m[i];
a[0]=1;
last=0;
for (i=0;i<n;i++)
{
last2=last+m[i]*v[i];
memset(b,0,sizeof(int)*(last2+1));
for (j=0;j<=m[i];j++)
for (k=0;k<=last;k++)
b[k+j*v[i]]+=a[k];
memcpy(a,b,sizeof(int)*(last2+1));
last=last2;
}
for (i=last/2;i>=0&&a[i]==0;i--);
cout<<last-i<<' '<<i<<endl;
}
return 0;
}
相關文章
- 杭電ACM hdu 2110 Crisis of HDU 解題報告(母函式)ACM函式
- 杭電ACM hdu 2152 Fruit 解題報告(母函式)ACMUI函式
- 杭電ACM hdu 1398 Square Coins 解題報告(母函式)ACM函式
- 杭電ACM hdu 2082 找單詞 解題報告(母函式)ACM函式
- 杭電ACM hdu 2079 選課時間 解題報告(母函式)ACM函式
- 杭電ACM hdu 1085 Holding Bin-Laden Captive! 解題報告(母函式)ACMAPT函式
- HDU 1709 The Balance(母函式)函式
- HDU 1028 Ignatius and the Princess III:dp or 母函式函式
- HDU 2082-找單詞(母函式-有限次)函式
- SG 函式初步 HDU 1536 && HDU 1944函式
- HDU2588GCD(尤拉函式)GC函式
- HDU 不要62 題解
- HDU 1028-Ignatius and the Princess III(拆分整數-母函式-無限次)函式
- HDU1729 Stone Game (SG函式)GAM函式
- HDU 4002Find the maximum(尤拉函式)函式
- ACM HDU 1279 驗證角谷猜想(簡單水題)ACM
- HDU-ACM 2024 Day2ACM
- HDU-ACM 2024 Day3ACM
- HDU-ACM 2024 Day4ACM
- HDU 母函式簡單題 - 找單詞/Ignatius and the Princess III/Square Coins/Holding Bin-Laden Captive!函式APT
- 母函式詳解和史上最通用最高效的母函式模板函式
- HDU 1695-GCD(容斥原理+尤拉函式)GC函式
- HDU 3501 Calculation 2 (尤拉函式應用)函式
- HDU 5795 A Simple Nim (SG函式+打表找規律)函式
- HDU3501 Calculation 2(尤拉函式推廣)函式
- HDU 1846-Brave Game(巴什博弈-SG函式)GAM函式
- HDU杭電1874-暢通工程續(dijkstra演算法和Floyd演算法)演算法
- NYNU ACM 藍橋杯選拔賽 解題報告ACM
- 山東省第四屆acm解題報告(部分)ACM
- HDU 1848 Fibonacci again and again(SG函式)AI函式
- Java 杭電ACM Train Problem I 1022JavaACMAI
- 簡單的揹包問題(入門)HDU2602 HDU2546 HDU1864
- 【記憶優化搜尋/dp】HDU - 6415 - 杭電多校第九場 - Rikka with Nash Equilibrium優化UI
- 【賽後補題】(HDU6228) Tree {2017-ACM/ICPC Shenyang Onsite}ACM
- HDU 4712Hamming Distance(隨機函式運用)隨機函式
- 杭電多校補題
- HDU 4923 Room and Moor(瞎搞題)OOM
- HDU 2897-邂逅明下(博弈-SG函式打表找規律)函式