您的位置:首页 > 编程语言

腾讯编程马拉松初赛第一场(2013.3.20)

2013-03-30 11:43 218 查看
题目地址:http://wenku.baidu.com/view/bb74cced9b89680203d825f2.html

总体偏容易,看看代码基本就搞懂了。

1001

简单题,代码略。

1002

背包问题的一个变形,参看《背包九讲》:http://wenku.baidu.com/view/519124da5022aaea998f0f22.html

View Code

#include <cstdio>
#include <vector>
#include <iostream>

using namespace std;

int T;
int a,b;
unsigned long long f[50][300];

int main(){
while (scanf("%d %d %d", &a, &b, &T)==3){
int need=b-a+1;
int can=T/30;
T=T%30;
need=need+can;
if (T>=15) ++can;
if (need<0) need=0;
for (int i=0; i<=can; ++i)
for (int j=0; j<=need; ++j)
f[i][j]=0;
f[0][0]=1;
for (int i=0; i<can; ++i)
for (int j=0; j<=need; ++j)
if (f[i][j]){
//printf("%d %d\n", i,j);
for (int k=1; k<=3; ++k){
int t=j+k;
if (t>need) t=need;
f[i+1][t]+=f[i][j];
}
}
cout<<f[can][need]<<endl;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐