hdu6245 Rich Game

2024-02-20 07:18
文章标签 rich game hdu6245

本文主要是介绍hdu6245 Rich Game,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

hdu6245 Rich Game

标签: 思维&逻辑


题目链接

题意:

Sheep找Panda打羽毛球。Sheep说,我每赢一分我给你X元,但我每输一分你要给我Y元(题目问的是Panda最多能够赢多少场比赛,转化一下,对Panda来说,他每赢一分给对手Y元,输一分获得X元)。比赛K场。

一场比赛赢的情况:
(1)某人至少得11分,且至少领先对手2分(即11:9)。
(2)通常某人先得10分他就会赢得比赛,若出现平手(例如10:10),则他应该至少领先对手2分才能赢得这场比赛,个人得分可能会超过11分。

Panda能力超强,可以控制每一分的输赢。但他开始时没有钱,他必须通过输分来获得钱,然后用这些钱去赢得比赛。
Panda不能够欠Sheep钱。
问Panda最多能够赢多少场比赛?
T组测试样例,每组为X Y K。

分析:

前提条件:Panda不能够欠Sheep钱,所以比赛中所有的钱会>=0。
一共K局比赛,假设Panda赢了Z局,则Panda输了(K-Z)局。所以,有

11*(K-Z)*X + a*Z*X-(a+2)*Z*Y >= 0,记为(1)式。

解释一下上面这个式子:
前半部分,11*(K-Z)*X,这部分是Panda输的局,所以Panda要输的干干脆脆的,一分也不赢,这样Panda才能得到最多的钱;
后半部分,假设panda某局得分为(a+2),因为Panda应该至少领先对手2分才能赢得这场比赛。

化简(1)式,把Z提出来,得

Z*(11*X+2*Y+a*(Y-X))<=11*K*X,记为(2)式。

题目求的是,Panda最多能够赢得多少场比赛。看下方程,右边是一个常数,所以要使得Z尽可能大,(11*X+2*Y+a*(Y-X))要尽可能小,即a*(Y-X)要尽可能小。
下面分情况讨论a*(Y-X):

  1. X==Y,方程与a无关,Z<=11*K*X/(11*X+2*Y).
  2. X < Y,即(Y-X) > 0,因为要使得a*(Y-X)尽可能小,所以a要尽可能小,而a>=9(一场比赛赢的情况之(1):某人至少得11分,且至少领先对手2分,即9:11的情况),把a代入方程得,Z<=11*K*X/(11*Y+2*X).
  3. X > Y,即(Y-X) < 0,因为要使得a*(Y-X)尽可能小,所以a要尽可能大,a可以很大很大。回到(2)式,a很大,(Y-X)<0,a*(Y-X)很小,(11*X+2*Y+a*(Y-X))很小,则Z很大,Z最大为K,即每场比赛都是Panda赢。(通俗的说,也就是Panda输一分得到的钱比赢一分得到的钱都要多,想想就明白了。)

最后,情况12可以合并一下,第1种情况下,X==Y,所以有Z<=11*K*X/(11*Y+2*X),与情况2相同.

代码:

#include <stdio.h>int main(){int t, x, y, k, kase = 0;scanf("%d", &t);while(t--){scanf("%d %d %d", &x, &y, &k);printf("Case #%d: %d\n", ++kase, x > y ? k : 11 * k * x / (11 * y + 2 * x);}return 0;
}

这篇关于hdu6245 Rich Game的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/727426

相关文章

fzu 2275 Game KMP

Problem 2275 Game Time Limit: 1000 mSec    Memory Limit : 262144 KB  Problem Description Alice and Bob is playing a game. Each of them has a number. Alice’s number is A, and Bob’s number i

10400 -Game Show Math

这道题的话利用了暴力深搜,尽管给了20S,但是这样还会超时,所以就需要利用回溯进行减枝,因为是DFS,所以用一个数组vis[i][j]记录是否在状态i时候取到过j值,如果取到过的话,那么直接回溯(往后搜索已经没有意义了,之前到达这个状态的时候是无法得到结果的) 还有需要注意的地方就是题目的要求,每一步的结构都在(-32000,32000)之间,所以需要一步判断,如果在这个范围外直接回溯 最后一

【POJ】1733 Parity game 并查集

传送门:【POJ】1733 Parity game 题目大意:给你一个长度为n的01序列,再给你m句话,每句话是一个区间【L,R】,告诉你区间【L,R】中1的个数,现在你的任务是找到从第几句话开始说的和前面矛盾,出现第一次假话的时候前面有多少是真话。 题目分析:一开始看几乎没思路啊。后来没办法了,只能跑别人的博客去看看了。。。一看到说把一个区间【L,R】拆成两个区间【0,L-1】,

【HDU】5426 Rikka with Game【DP】

题目链接:【HDU】5426 Rikka with Game #include <bits/stdc++.h>using namespace std ;typedef long long LL ;#define clr( a , x ) memset ( a , x , sizeof a )const int MAXN = 100005 ;const int MAXE = 200005 ;

LeetCode 45 Jump Game II

题意: 给出一个步长数组nums,如果一个人站在i这个点上那么他可以向右最多走nums[i]步,求从左端点走到右端点的最少步数。 思路: 如果点x可以用dp[x]步到达,那么[ x + 1, x + nums[x] ]区间内的点都可以用dp[x] + 1步到达。 利用这个想法,可以O(n)的求出走一步可以到达哪些位置,走两步可以到达哪些位置,以此类推。 代码: clas

【论文笔记】Multi-Task Learning as a Bargaining Game

Abstract 本文将多任务学习中的梯度组合步骤视为一种讨价还价式博弈(bargaining game),通过游戏,各个任务协商出共识梯度更新方向。 在一定条件下,这种问题具有唯一解(Nash Bargaining Solution),可以作为多任务学习中的一种原则方法。 本文提出Nash-MTL,推导了其收敛性的理论保证。 1 Introduction 大部分MTL优化算法遵循一个通用方

android-Intent,Injector,Template,Adapter,Validation,Gesture,Game,Game Engine,Bluetooth...

Intent Intent PhotoPicker 图片选择 & 图片预览https://github.com/donglua/PhotoPicker Injector AndroidAnnotations Fast Android Development. Easy maintainance. https://github.com/excilys/androidannotations

HDU5515 Game of Flying Circus(二分)

题意:题解有翻译,然后自己拦截对手时候可以任意走,当然是直线最快啦 题解:http://www.cnblogs.com/qscqesze/p/4931912.html #include<bits/stdc++.h>using namespace std;#define LL long long#define pb push_back#define X first#define Y

hdu 1846 Brave Game 巴什博奕

Description 十年前读大学的时候,中国每年都要从国外引进一些电影大片,其中有一部电影就叫《勇敢者的游戏》(英文名称:Zathura),一直到现在,我依然对于电影中的部分电脑特技印象深刻。  今天,大家选择上机考试,就是一种勇敢(brave)的选择;这个短学期,我们讲的是博弈(game)专题;所以,大家现在玩的也是“勇敢者的游戏”,这也是我命名这个题目的原因。  当然,除了

hdu 1524 A Chess Game 博弈论

题意: 两个人在一个有向五环图上面走棋子,每次只能走一步,最后谁 * 没有棋子可走就败,然后棋子可以重叠,并且有n个棋子。要求判断 * 先手的胜负。 纠结了好长时间一直在想为什么sg函数要呢么定义然后看了各种博客但是只是讲了,定义的内容却很少有讲为什么的。。。。 Description Let's design a new chess game. There are N