联发科编程大赛_第六题小M的篮球梦
来源:互联网 发布:java web开发需求 编辑:程序博客网 时间:2024/05/18 03:38
【试题描述】
小M十分迷恋篮球比赛,是忠实的NBA球迷,他常常幻想自己那肥硕的身躯也能飞起扣篮。另外,他对篮球教练工作也情有独钟,特别是对比赛的战术,投篮选择方面也是很有研究,下面就是小M研究过的一个问题。
一场NBA篮球比赛总共48分钟,假如我们现在已经知道当前比分 A:B,A代表我方的比分,B代表对方的比分,现在比赛还剩下t秒时间。我们简单的认为双方各自进攻一次的时间皆固定为15秒(不到15秒则进攻不得分),且为交替进攻,即我方进攻一次,接着对方进攻,依次循环。
进攻有三种选择方式:(这里不考虑命中率)
1、造犯规,(假设都两罚一中)得1分;
2、中距离投篮得2分;
3、三分球得3分。
为了简化问题,假设在对方回合,由于我方防守比较好,只让对手得1分,且为固定,即对方的进攻回合就为每回合得1分。现在比赛进入最后关头,接下来第一个回合是我方进攻,现在小M想要知道教练有多少种不同的选择能使我方可能赢得比赛(可能的意思就是不考虑命中率的情况)。
【输入说明】
在程序当前路径下存在文本文件execute.stdin,程序从execute.stdin中读取输入数据。
execute.stdin为单行,存放着空格隔开的3个整数A,B和t,其中A和B表示当前的比分(0<= A, B <= 200),t表示还剩多少时间(单位秒 0 <= t <= 600)。
【输出说明】
请输出可行的方案数。
【示例】
输入数据:
88 90 50
输出数据:
6
样例解析:
当前比分是88:90,还剩50秒则对方还最多有一次进攻机会(最后5秒进攻不成功),我方有两次,对方的最终得分将是91,
我方至少在两回合中拿到4分才能胜利,所以所有方案数是6种,即:
第一球第二球
1 3
2 2
2 3
3 1
3 2
3 3
#include<stdio.h>#include<string.h>#include<stdlib.h>#define maxn 205__int64 cc1[maxn], cc2[maxn];int main(){int aa, bb, tt, nb, i, j, na, k;while (scanf("%d%d%d", &aa, &bb, &tt) != EOF){tt /= 15; //得到a和b进攻的总数/* <b队进攻的次数为>*/nb = (tt >> 1);bb += nb; //此时b队的得分na = tt - nb;memset(cc2, 0, sizeof(cc2));for (i = 1; i <= 3 * na; i++)cc1[i] = 1;for (i = 1; i < na; i++){for (j = 1; j <= 3; j++){for (k = 1; k <= i * 3; k++){cc2[k + j] += cc1[k];}}for (k = 1; k <= (i + 1) * 3; k++){cc1[k] = cc2[k];cc2[k] = 0;}}__int64 res = 0;if (bb < aa){if (!tt) res = 1;i = 1;}else i = bb - aa + 1;for (; i <= 3 * na; i++)res += cc1[i];printf("%I64d\n", res);}return 0;}
- 联发科编程大赛_第六题小M的篮球梦
- 联发科编程大赛_第一题最大序列和
- 联发科编程大赛_第二题情报破译
- 联发科编程大赛_第三题最大序列和
- 联发科编程大赛_第四题最大序列和
- 关于第六届SeedCoder编程大赛提交作品的注意事项
- 编程小题^_^
- 第六周编程题_单词长度
- 华为的编程大赛题
- 第六届华为创新杯编程大赛
- hpu(acm)大赛第六题
- 2014华为编程大赛题目:小明的筷子
- 第六届蓝桥杯省赛Java语言C组_小题答案
- “青软杯”安徽科技学院第六届程序设计大赛_专业组
- 第六届华为创新杯编程大赛-----电话号码本的设计
- 关于软件大赛的几个编程题!
- M文件编程小技巧
- 小博老师经验分享 ——参加编程大赛的小技巧
- java关键字(一)——byte,int,long,short
- java基础—常用类
- 暑假总结
- 面向切面编程(AOP)
- NYOJ
- 联发科编程大赛_第六题小M的篮球梦
- Python数据分析相关库
- Java练习
- vue2.0 中#$emit,$on的使用详解
- IIC通信(STM32F4与AT24C02的通信)
- LeetCode编程练习
- SVM
- C++中的&和*
- 顺序表应用3:元素位置互换之移位算法