贪吃的yjj(东方化改题+给的标程)

emmmmmm……

yjj到底是谁啊?

杨家将?亚甲基?亚军奖?演讲家?盐焗鸡?

算了不管了

先放上原题:

题目背景

众所周知,YJJ学姐是一位能吃的学姐,她经常会把看好的吃的加进自己的购物

车里面。而她又很穷,不舍得吃特别贵的食物。

题目描述

就在这时,一股神秘力量想要帮助JJ女士。如果帮JJ女士买一次食物(即购物车

食物的非空子集),神秘力量可以得到这次购买食物的最大价值的钱,而要花

费的代价是这次所购买食物价值的平均值。

JJ女士因为有了神秘力量的帮助,变的越来越贪婪,所以每次往购物车里加的

东西都会不比购物车中的任何物品价值低。

神秘力量想要得到最多的钱,请问他购买一次食物能得到的最大价值是多少。

为了得(da)到(dao)心(ti)灵(mu)的(de)安(nan)慰(du),神秘力量要询问当前的最大

收益。

输入输出格式

输入格式

第一行有一个整数n,表示操作次数。

第1~n+1行,每行有一个操作类型:

如果为1,则还有一个整数k,表示YJJ这次加入购物车的食物的价值;

如果为2,表示神秘力量想知道当前的最大收益。

输出格式

对于每一个2操作,输出1行1个4位浮点数,表示当前的最大收益。

答案四舍五入。

 

然后是改题……

题目背景

众所周知,幽幽子很能吃,她经常会让妖梦把看好的吃的加进她的的购物

车里面。但妖梦很穷,不舍得买特别贵的食物。

题目描述

就在这时,一股神秘力量想要帮助妖梦。如果妖梦帮幽幽子买一次食物(即购物车

食物的非空子集),神秘力量可以得到这次购买食物的最大价值的钱,而要花

费的代价是这次所购买食物价值的平均值。

幽幽子因为有了神秘力量的帮助,变的越来越贪婪,所以每次往购物车里加的

东西都会不比购物车中的任何物品价值低。

神秘力量想要得到最多的钱,请问他购买一次食物能得到的最大价值是多少。

为了达到题目的难度,神秘力量要询问当前的最大收益。

输入输出格式

输入格式

第一行有一个整数n,表示操作次数。

第1~n+1行,每行有一个操作类型:

如果为1,则还有一个整数k,表示幽幽子这次加入购物车的食物的价值;

如果为2,表示神秘力量想知道当前的最大收益。

输出格式

对于每一个2操作,输出1行1个4位浮点数,表示当前的最大收益。

答案四舍五入。

我想知道为什么我的做法和某些人说的差不多却只得了30分啊!

不过这里正解:

 1 #include<cstdio>
 2 #include<stack>
 3 #include<cmath>
 4 #define N 500010
 5 typedef long long ll;
 6 using namespace std;
 7 ll q,a[N],l,r,sum[N],cnt,op,x;
 8 double ANS;
 9 
10 ll read()
11 {
12     ll ans=0,fu=1;
13     char j=getchar();
14     for (;j<'0' || j>'9';j=getchar()) if (j=='-') fu=-1;
15     for (;j>='0' && j<='9';j=getchar()) ans*=10,ans+=j-'0';
16     return ans*fu;
17 }
18 
19 double check(int x)
20 {
21     return 1.0*(a[cnt]+sum[x])/(x+1);
22 }
23 
24 int main()
25 {
26     freopen("yjj.in","r",stdin);freopen("yjj.out","w",stdout);
27     q=read();
28     while (q--)
29     {
30     op=read();
31     if (op==1)
32     {
33         a[++cnt]=read();
34         sum[cnt]=sum[cnt-1]+a[cnt];
35         while (x<cnt-1 && check(x+1)<check(x)) x++;
36         ANS=max(ANS,a[cnt]-check(x));
37     }
38     else
39         printf("%.4lf\n",ANS);
40     }
41     return 0;
42 }

无fuck说

嗯……就是这样,没了

posted on 2018-02-23 14:06  bb机  阅读(150)  评论(0编辑  收藏  举报

导航