[U]3.1.6 Stamps 会错意的DP题
来源:互联网 发布:mac系统隐藏桌面图标 编辑:程序博客网 时间:2024/06/11 11:15
3章第一节有道题敲不出来啊~~~没办法,只能把后面的题先给敲咯~
这个题呢...
首先本巨菜想了一个很傻很水很烂的DP方程。使得自己的程序果断崩了...
开了一个10001*200的二维boolean数组,[面额][张数]这样来DP,因为最大的面额只有10000 ,再通过循环数组的方法,勉强使得空间不爆掉,结果过了9个点,第10个点果断超时。
后来牌桌子一想!可以变成一维DP!a[面额]保存的值为最小张数;
a[i]=min( a[i],a[i-面额]+1 );
这样就很好的A掉了。速度还行。
/*ID:bysenLANG:C++PROG:stamps*/#include<stdio.h>#define INF 0x0FFFFFFFusing namespace std;int re[10001];//DP数组记录构成当前面额最小的邮票枚数 int v[201];int min( int a,int b ){ return a<b?a:b; }int main(){ freopen( "stamps.in","r",stdin ); freopen( "stamps.out","w",stdout ); int k,n; for( int i=0;i<10001;i++ ) re[i]=INF; scanf( "%d %d",&k,&n ); for( int i=0;i<n;i++ ){ scanf( "%d",&v[i] ); re[v[i]]=1; } int top=v[0]; while( true ) { top++; if( top>10001 ) re[top%10001]=INF; for( int i=0;i<n;i++ ) if( top-v[i]>0 ) re[top%10001]=min( re[top%10001],re[(top-v[i]+10001)%10001]+1 ); if( re[top%10001]>k ) break; } printf( "%d\n",top-1 ); return 0;}
- [U]3.1.6 Stamps 会错意的DP题
- USACO--3.1Stamps+DP
- usaco Section 3.1 Stamps -- DP
- USACO section 3.1 Stamps(dp)
- USACO 3.1.6 Stamps
- USACO - 3.1.6 - Stamps
- USACO 3.1.6 Stamps
- USACO-Section 3.1 Stamps(DP)
- USACO 3.1 Stamps (stamps)
- USACO 3.1.6 Stamps 邮票
- USACO / Stamps(DP)
- USACO Stamps, DP
- JZOJ1281【USACO题库】3.1.6 Stamps邮票
- 【USACO题库】3.1.6 Stamps邮票
- 3.1 Stamps 题解
- USACO 3.1 Stamps
- 3.1 Stamps 邮票
- [usaco]3.1.5 stamps
- usaco 1.1.4 Broken Necklace 一道题可以犯多少脑残
- 2012-02-12 Ubuntu10.04 ibus输入法设置与VMware目录共享
- oracle10g静默安装
- 九宫格贴图函数
- 程序员该做的事
- [U]3.1.6 Stamps 会错意的DP题
- 字符和字节(收集整理)
- 黑客是什么?
- 开始-“运行”下执行应用程序
- POJ 2664 Prerequisites?(我的水题之路——选课)
- 两种香肠的做法
- 职场12年模拟沙盘心得及回顾
- 网络互联设备
- Windows下CMD 命令参考(1)