标签:return getval TV double int CF1293B DP 单调
如果f[x]表示有x个对手时候的最大获益。不难看出f[x] = max(f[i] + 1 - i / x)。i表示这次答题后剩下几个队首。
不难看出,随着x的增加,最大转移的i也是单调的,然后单调性优化下就可以了。
1 #include <cstdio> 2 using namespace std; 3 int n,l; 4 double f[110000]; 5 double getval(int x,int y) 6 { 7 return (x * f[y] + x - y) / x; 8 } 9 int main() 10 { 11 scanf("%d",&n); 12 f[0] = 0.0; 13 l = 0; 14 for (int i = 1;i <= n;i++) 15 for (;l < i;l++) 16 { 17 if (getval(i,l) > getval(i,l + 1)) 18 { 19 f[i] = getval(i,l); 20 break; 21 } 22 } 23 printf("%.6lf\n",f[n]); 24 return 0; 25 }
标签:return,getval,TV,double,int,CF1293B,DP,单调 来源: https://www.cnblogs.com/iat14/p/12272027.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。