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 ",ANS); 40 } 41 return 0; 42 }
无fuck说
嗯……就是这样,没了