题目(VJ) Gym - 100819L Codeforces-Gym Dashboard - 2015-2016 ACM-ICPC Pacific Northwest Regional Contest (Div. 2) PDF 20152016-acmicpc-pacific-northwest-regional-contest-div-2-en.pdfgit
讲道理第一题都应该是水题的。。。然而这是一道阅读理解... 读了三个多小时也没弄明白Sample2的那个数怎么算出来的,后来实在无聊从后往前算发现happiness正好算出来了...日啊... 官方的解释是这样的:github
沃日...真是阅读理解啊...app
AC代码 View Source On GitHubide
#include <cstdio> #include <cstdlib> #include <cstring> #include <cmath> #include <algorithm> using namespace std; #define MAXROUND 100005 double safemoney[MAXROUND]; double roundmoney[MAXROUND]; double p[MAXROUND]; char str[256]; inline double ln(double inc) { return log(inc); } int main() { int n,W; scanf("%d %d",&n,&W); for(int i=0;i<n;i++) { scanf("%s %lf %lf",str,&p[i],&roundmoney[i+1]); roundmoney[i+1]=ln(1+roundmoney[i+1]/W); if(strcmp(str,"safe")==0) { safemoney[i+1]=roundmoney[i+1]; } else { safemoney[i+1]=safemoney[i]; } } for(int i=n-1;i>=0;i--) { double tmp=p[i]*roundmoney[i+1]+(1-p[i])*safemoney[i]; roundmoney[i]=max(tmp,roundmoney[i]); } double ans=(exp(roundmoney[0])-1)*W; printf("$%.2f\n",ans); }