mirror of
https://github.com/Kiritow/OJ-Problems-Source.git
synced 2024-03-22 13:11:29 +08:00
Create 1276_funCfans.cpp
From http://poj.org/showmessage?message_id=346125
This commit is contained in:
parent
ca98585b3d
commit
8983f81bfe
58
POJ/1276_funCfans.cpp
Normal file
58
POJ/1276_funCfans.cpp
Normal file
|
@ -0,0 +1,58 @@
|
|||
#include<stdio.h>
|
||||
#include<string.h>
|
||||
#include<stdlib.h>
|
||||
struct q
|
||||
{
|
||||
int a,p;
|
||||
};
|
||||
int cmp(const void *a,const void *b)
|
||||
{
|
||||
return (*(q*)a).p-(*(q*)b).p;
|
||||
}
|
||||
int main()
|
||||
{
|
||||
q qs[11];
|
||||
int cash,n,i,j,con[100001];
|
||||
char dp[100001];
|
||||
while(scanf("%d%d",&cash,&n)==2)
|
||||
{
|
||||
if(!n)
|
||||
{
|
||||
putchar('0');putchar('\n');
|
||||
continue;
|
||||
}
|
||||
for(i=0;i<n;i++)
|
||||
{
|
||||
scanf("%d%d",&(qs[i].a),&(qs[i].p));//a[i]是钞票数,p[i]是钞票面值
|
||||
}
|
||||
qs[n].a=0;
|
||||
if(!cash)
|
||||
{
|
||||
putchar('0');putchar('\n');
|
||||
continue;
|
||||
}
|
||||
qsort(qs,n,sizeof(q),cmp);//先规划小面额的dp末尾不会出现错误
|
||||
memset(dp,0,sizeof(dp));
|
||||
memset(con,0,sizeof(con));
|
||||
dp[cash]=1;
|
||||
con[cash]=qs[0].a;
|
||||
for(i=0;i<n;i++)
|
||||
{
|
||||
for(j=cash;j>=qs[i].p;j--)
|
||||
{
|
||||
if(dp[j])
|
||||
{
|
||||
if(con[j] && !dp[j-qs[i].p])
|
||||
{
|
||||
con[j-qs[i].p]=con[j]-1;
|
||||
dp[j-qs[i].p]=1;
|
||||
}
|
||||
con[j]=qs[i+1].a;
|
||||
}
|
||||
}
|
||||
}
|
||||
for(i=0;!dp[i];i++);
|
||||
printf("%d\n",cash-i);
|
||||
}
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue
Block a user