sgu-256 Balloons
来源:互联网 发布:前端工程师 软件测试 编辑:程序博客网 时间:2024/05/17 22:40
题目大意:
有
问吹完
解题思路:
观察发现
然后就很好做了。直接记忆化搜索就可以AC了。
AC代码:
#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <algorithm>#include <iostream>using namespace std;int F[102][11][11][11][11]={{{{{0}}}}};int N,M;int A[11]={0};int B[11]={0};int done(int sum,int a1,int a2,int a3,int a4){ if(sum<=0) sum=0; if(F[sum][a1][a2][a3][a4]!=0x3f3f3f3f) return F[sum][a1][a2][a3][a4]; if(sum==0) F[sum][a1][a2][a3][a4]=0; else { int flag=0; for(int i=1;i<=N;i++) { if(a1==i && B[i]>0) continue; if(a2==i && B[i]>1) continue; if(a3==i && B[i]>2) continue; if(a4==i && B[i]>3) continue; flag=1; int gg=done(sum-A[i],i,a1,a2,a3); F[sum][a1][a2][a3][a4]=min(F[sum][a1][a2][a3][a4],gg+1); } if(flag==0) { int gg=done(sum,0,a1,a2,a3); F[sum][a1][a2][a3][a4]=min(F[sum][a1][a2][a3][a4],gg+1); } } return F[sum][a1][a2][a3][a4];}int main(){ scanf("%d%d",&M,&N); memset(F,0x3f3f3f3f,sizeof(F)); for(int i=1;i<=N;i++) scanf("%d%d",&A[i],&B[i]); printf("%d",done(M,0,0,0,0)); return 0;}
0 0
- SGU 256 Balloons(dp)
- sgu-256 Balloons
- (sgu)Balloons(记忆化搜索)
- Balloons
- Balloons
- Balloons
- SGU
- SGU
- SGU
- SGU
- SGU
- SGU
- (SGU
- SGU
- SGU
- SGU
- SGU
- SGU
- C语言中register类型变量
- 时间过滤和合并
- 设计模式六大原则
- hdn5038好坏蘑菇
- less 初学 测试demo
- sgu-256 Balloons
- linux下查找某个文件位置的方法
- 注册一个应用的端点描述符afRegister( endPointDesc_t *epDesc )
- struct和typedef struct
- 详解Python中re.sub
- u盘数据丢失后有免费恢复的软件么
- UIImageView 学习
- gdb 多线程调试
- 汇编新手代码(2)十进制数转字符