URAL 1114 Boxes 【dp】
来源:互联网 发布:淘宝买aj的正品店 编辑:程序博客网 时间:2024/04/28 06:46
题目:点击打开链接
题意:有n个盒子,a个红球,b个蓝球,球可以任意放入或者不放入盒子,求放置情况的个数
分析:不放球的时候是一种情况,每放一个球,放置情况的个数就等于放这个球之前的情况的个数加上原有情况的个数,因此可以用dp做,dp[i][j][k]表示第i个盒子时,用了j个红球和k个蓝球,状态转移方程是dp[i][j][k]+=∑dp[i-1][jj][kk](0<=jj<=j,0<=kk<=k),答案就是i==n时所有情况之和了,注意这题要用unsigned long long
#pragma comment(linker, "/STACK:1024000000,1024000000")#include <stdio.h>#include <iostream>#include <cstring>#include <cmath>#include <algorithm>#include <queue>#include <set>#include <vector>#include <map>#define sqr(x) ((x)*(x))#define PR pair<int,int>#define MP make_pair#define fi first#define se second#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1#define ll unsigned long longconst ll INF = 1e18;const int inf=0x3f3f3f3f;const int M=100010;const int N=10010;const ll MOD=1000000007;const double eps=1e-3;const double pi=acos(-1.0);using namespace std;int n,a,b;ll dp[25][20][20];int main(){ scanf("%d%d%d",&n,&a,&b); ll ans=0; dp[0][0][0]=1; for(int i=1;i<=n;i++) { for(int j=0;j<=a;j++) { for(int k=0;k<=b;k++) { for(int jj=0;jj<=j;jj++) { for(int kk=0;kk<=k;kk++) { dp[i][j][k]+=dp[i-1][jj][kk]; } } if(i==n) ans+=dp[i][j][k]; } } } printf("%I64u\n",ans);}
0 0
- URAL 1114 Boxes (dp)
- URAL 1114 Boxes 【dp】
- URAL 1114 Boxes(简单dp)
- ural 1114. Boxes(dp)
- [计数dp] ural 1114. Boxes
- URAL 1114 Boxes
- UVA_103 Stacking boxes(DP)
- Ural1114 Boxes【DP】
- UVa 11003 Boxes [DP]
- uva 103 (dp)Stacking Boxes
- DP-DAG uva_103 Stacking Boxes
- Stacking Boxes - UVa 103 dp
- uva--103Stacking Boxes +dp
- uva103Stacking Boxes——dp
- ural 1119【dp+精度】
- 【DP】ural 1017
- 【树状DP】ural 1018
- URAL - 1012 DP+高精度
- 01-复杂度2 Maximum Subsequence Sum
- Demo05
- 二进制中1的个数
- php复习 第九天 绘制图形验证码
- 学习笔记之 —— 一个textview控件搞定中间文本左右两张图
- URAL 1114 Boxes 【dp】
- 另类数据Alternative Data行业调查
- Win10 python3.5安装lxml库
- Matlab Tricks(二十一)—— 软阈值函数的实现
- Demo06三目运算
- PHP环境搭建-windows
- Octave学习不错的知识汇总
- day04注释
- matlab 矢量化编程(三) —— 软阈值函数