测试4T2 卡片游戏

问题 E: 卡片游戏

时间限制: 1 Sec  内存限制: 128 MB
提交: 42  解决: 18
[提交][状态][讨论版]

题目描述

小D举办了元旦联欢活动,其中有一个卡片游戏。

游戏的规则是这样的:有n张卡片,每张卡片上正面写着一个小于等于100的正整数ai,反面都是一样的花色。这n张卡片正面朝下叠成一堆,玩这个游戏的人从中可以抽出连续的k(1≤kn)张卡片。如果对于这k张卡片上的数字的平均值a,满足l<=a<=r,那他就可以获得小礼物一件。

小W来玩这个游戏了,她事先通过某些途径知道了这n张卡片上写的数字,现在她想知道她获得小礼物的期望值。

小W对小数很头疼,所以请你用分数的形式告诉她答案。

输入

输入文件名为game.in

输入第1行,三个整数nlr

第2行,包含n个整数ai

输出

输出文件名为game.out

输出仅1行,表示小W获得小礼物的期望值。输出格式为“P/Q”(PQ互质)。如果期望值是01就不用输出分数了

样例输入

game.in
4 2 3
3 1 2 4

game.out
7/10

样例输出

【输入输出样例2】
game.in
4 1 4
3 1 2 4

game.out
1

这道题很考验数学功力,首先很容易想到判断条件的变形就是令sum[i]表示前i个数的前缀和

所以题目给出的条件等价于l<=(   (sum[j]-sum[i-1])/(j-(i-1))     )<=r

我们令中间那个东西为x,所以原题的方案数就是x>=l的方案数减去x>r的方案数

所以(sum[j]-sum[i-1])/(j-(i-1))>=l    <==>  sum[j]-sum[i-1]>=j*l-(i-1)*l

所以(i-1)*l-sum[i-1]>=l*j-sum[j] 令a[i]=(i-1)*l-sum[i],求一下逆序对就行了(这里是<=不是经典的逆序对)

然后就再令b[i]=(i-1)*r-sum[i],求一下经典逆序对,答案相减就行啦

贴个标程

时间: 2024-08-03 11:26:28

测试4T2 卡片游戏的相关文章

【sicily】卡片游戏

卡片游戏  Time Limit: 1sec    Memory Limit:32MB Description 桌上有一叠牌,从第一张牌(即位于顶面的牌)开始从上往下依次编号为1~n.当至少还剩两张牌时进行以下操作:把第一张牌扔掉,然后把新的第一张放到整叠牌的最后.输入n,输出每次扔掉的牌,以及最后剩下的牌. Input 第一行为一个整数t(0<t<40),表示测试用例个数.以下t行每行包含一个整数n(0<n<40),为一个测试用例的牌数. Output 为每个测试用例单独输出一行

NYOJ 905 卡片游戏

卡片游戏 时间限制:1000 ms  |  内存限制:65535 KB 难度:1 描述 小明最近宅在家里无聊,于是他发明了一种有趣的游戏,游戏道具是N张叠在一起的卡片,每张卡片上都有一个数字,数字的范围是0~9,游戏规则如下: 首先取最上方的卡片放到桌子上,然后每次取最上方的卡片,放到桌子上已有卡片序列的最右边或者最左边.当N张卡片全部都放到桌子上后,桌子上的N张卡片构成了一个数.这个数不能有前导0,也就是说最左边的卡片上的数字不能是0.游戏的目标是使这个数最小. 现在你的任务是帮小明写段程序,

Sicily 1931. 卡片游戏

题目地址:1931. 卡片游戏 思路: 纯属数据结构中队列的应用,可以练练手. 具体代码如下: 1 #include <iostream> 2 #include <queue> 3 using namespace std; 4 5 int main() { 6 int t; 7 cin >> t; 8 while (t--) { 9 int num; 10 cin >> num; 11 queue<int> store; 12 for (int

1704 卡片游戏

1704 卡片游戏  时间限制: 1 s 空间限制: 128000 KB 题目等级 : 白银 Silver 题目描述 Description 桌面上有一叠牌,从第一张牌(即位于顶面的牌)开始从上往下依次编号为1~n.当至少还剩两张排时进行一下操作:把第一张牌扔掉,然后把新的第一张牌放到整叠牌的最后.输入n.输出每次扔掉的牌,以及最后剩下的牌.. 输入描述 Input Description 输入n 输出描述 Output Description 输出每次扔掉的牌,以及最后剩下的牌 样例输入 Sa

卡片游戏 (关于队列)

一.原题 桌上有一叠牌,从第一张牌(即位于顶面的牌)开始从上往下依次编号为1~n.当至少还剩两张牌时进行以下操作:把第一张牌扔掉,然后把新的第一张放到整叠牌的最后.输入n,输出每次扔掉的牌,以及最后剩下的牌. 样例输入:7 样例输出:1 3 5 7 4 2 6 二.题目源代码 #include<cstdio> #include<queue> using namespace std; queue<int> q; int main() { int n; scanf(&quo

1.cocos2dx记忆卡片游戏代码、并将游戏移植到“华为荣耀”手机上、移植中的问题总结

 1记忆卡片游戏代码 CardItem.h #pragmaonce #ifndef__CardItem_H__ #define__CardItem_H__ #include"cocos2d.h" USING_NS_CC; classCardItem :publicCCSprite { public: staticCardItem *create(intidx); boolinit(intidx); CCLabelTTF *ttf; CCSprite *bg; CC_SYNTHESI

众包测试中的游戏化

Mahesh Gudipati有超过10年的测试经验,参与过不少不同领域的项目.他在数据仓库/BI测试,需求预测测试,大数据测试和产品测试方面有丰富的经验.他在多个ETL/DW测试项目中实现了自动化技术,并因为开发出了ETL/DW测试的端对端解决方案获得了一项专利.他是一名获PMP认证的项目经理,还管理过多个数据仓库测试项目.他帮助建立公司内部的群体测试流程,最近还一直在开发数据项目中的技术的测试解决方案. Jaya Bhagavathi Bhallamudi在IT行业干了超过16年.她是一名C

卡片游戏(队列)

#include<iostream> #include<queue> using namespace std; queue<int>q; int main() { int n; cin>>n; for(int i=1;i<=n;i++) q.push(i); while(!q.empty()) { cout<<q.front()<<' '; q.pop(); if(!q.empty()) { q.push(q.front());

hdu 4550 卡片游戏 贪心

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4550 题意:有n(n <= 100)个0~9之间的卡片,从左往右将卡片放到之前的卡片最左边或者最右边:使得最后得到的数值最小,且无前导0: input: 4 0101 2342001 9876105432 9876543210 output: 1001 1002234 1678905432 1234567890 思路:如果没有0,则直接用双指针,模拟前后插入值即可:但是由于存在0,所以需要找出最小的