BestCoder Round #7

Start Time : 2014-08-31 19:00:00    End Time : 2014-08-31 21:00:00
Contest Type : Register Public   Contest Status : Ended

Current Server Time : 2014-08-31 21:12:12

Solved Pro.ID Title Ratio(Accepted / Submitted)
  1001 Little Pony and Permutation 37.91%(348/918)
  1002 Little Pony and Alohomora Part I 29.86%(132/442)
  1003 Little Pony and Dice 20.00%(8/40)
  1004 Little Pony and Boast Busters 4.41%(3/68)
hdu4985 Little Pony and Permutation 73.23%(93/127)
hdu4986 Little Pony and Alohomora Part I 61.11%(88/144)
hdu4987 Little Pony and Dice 23.53%(36/153)
  hdu4988 Little Pony and Boast Busters 80.00%(16/20)

1001( hdu4985 Little Pony and Permutation ):

题意:给出一些那样的映射,把每个环放到括号里输出。

题解:直接搞,超水,看代码:

代码:

  1. //#pragma comment(linker, "/STACK:102400000,102400000")
  2. #include<cstdio>
  3. #include<cmath>
  4. #include<iostream>
  5. #include<cstring>
  6. #include<algorithm>
  7. #include<cmath>
  8. #include<map>
  9. #include<set>
  10. #include<stack>
  11. #include<queue>
  12. using namespace std;
  13. #define ll long long
  14. #define usll unsigned ll
  15. #define mz(array) memset(array, 0, sizeof(array))
  16. #define minf(array) memset(array, 0x3f, sizeof(array))
  17. #define REP(i,n) for(i=0;i<(n);i++)
  18. #define FOR(i,x,n) for(i=(x);i<=(n);i++)
  19. #define RD(x) scanf("%d",&x)
  20. #define RD2(x,y) scanf("%d%d",&x,&y)
  21. #define RD3(x,y,z) scanf("%d%d%d",&x,&y,&z)
  22. #define WN(x) printf("%d\n",x);
  23. #define RE freopen("D.in","r",stdin)
  24. #define WE freopen("1biao.out","w",stdout)
  25. #define mp make_pair
  26. #define pb push_back
  27. const int maxn=;
  28. int n;
  29. int a[maxn];
  30. int b[maxn];
  31. int main() {
  32. int i,j;
  33. while(scanf("%d",&n)!=EOF) {
  34. FOR(i,,n)scanf("%d",&a[i]);
  35. mz(b);
  36. FOR(i,,n) {
  37. if(!b[i]) {
  38. printf("(%d",i);
  39. j=a[i];
  40. while(j!=i) {
  41. printf(" %d",j);
  42. b[j]=;
  43. j=a[j];
  44. }
  45. putchar(')');
  46. }
  47.  
  48. }
  49. puts("");
  50. }
  51. return ;
  52. }

(有人说用递归会爆栈,太萎了,看我的碉递归版:

  1. //#pragma comment(linker, "/STACK:102400000,102400000")
  2. #include<cstdio>
  3. #include<cmath>
  4. #include<iostream>
  5. #include<cstring>
  6. #include<algorithm>
  7. #include<cmath>
  8. #include<map>
  9. #include<set>
  10. #include<stack>
  11. #include<queue>
  12. using namespace std;
  13. #define ll long long
  14. #define usll unsigned ll
  15. #define mz(array) memset(array, 0, sizeof(array))
  16. #define minf(array) memset(array, 0x3f, sizeof(array))
  17. #define REP(i,n) for(i=0;i<(n);i++)
  18. #define FOR(i,x,n) for(i=(x);i<=(n);i++)
  19. #define RD(x) scanf("%d",&x)
  20. #define RD2(x,y) scanf("%d%d",&x,&y)
  21. #define RD3(x,y,z) scanf("%d%d%d",&x,&y,&z)
  22. #define WN(x) printf("%d\n",x);
  23. #define RE freopen("D.in","r",stdin)
  24. #define WE freopen("1biao.out","w",stdout)
  25. #define mp make_pair
  26. #define pb push_back
  27. const int maxn=;
  28. int n;
  29. int a[maxn];
  30. int b[maxn];
  31. int i,j;
  32.  
  33. void dg(const int &x){
  34. if(x==i)return;
  35. printf(" %d",x);
  36. b[x]=;
  37. dg(a[x]);
  38. }
  39.  
  40. int main() {
  41. while(scanf("%d",&n)!=EOF) {
  42. FOR(i,,n)scanf("%d",&a[i]);
  43. mz(b);
  44. FOR(i,,n) {
  45. if(!b[i]) {
  46. printf("(%d",i);
  47. dg(a[i]);
  48. putchar(')');
  49. }
  50.  
  51. }
  52. puts("");
  53. }
  54. return ;
  55. }

1002( hdu4986 Little Pony and Alohomora Part I):

题意:随机出一个元素个数为n的1001的输入,求1001的输出的括号对 的个数的期望值。

题解:找规律,分类,近似解

先暴力搞出每种1001的输入,算期望,发现N为一位数的时候后面都算不快了,不过我们得到了前几个数据。

观察数据,可以发现ans(n)=1/1 + 1/2 + 1/3 + ... + 1/n

这个是调和级数!没有超碉公式能算。

不过n大的时候有近似公式,ans(n)约等于 ln(n)+0.57721566490153286060651209

于是我们就数少的时候暴力算,数大的时候用这个约等于的来算。

注意暴力算的时候从1/n加到1,由于浮点数的性质,这样精度比较高。

(其实这个约等于的和暴力算得的有好多数不一样,暴力算的因为精度有限也可能不对。如果要全部输出暴力的结果,可以分段打表,隔一段记一个数,输入n在两段之间时,从上一段记的那个数开始算)

代码:

  1. //#pragma comment(linker, "/STACK:102400000,102400000")
  2. #include<cstdio>
  3. #include<cmath>
  4. #include<iostream>
  5. #include<cstring>
  6. #include<algorithm>
  7. #include<cmath>
  8. #include<map>
  9. #include<set>
  10. #include<stack>
  11. #include<queue>
  12. using namespace std;
  13. #define ll long long
  14. #define usll unsigned ll
  15. #define mz(array) memset(array, 0, sizeof(array))
  16. #define minf(array) memset(array, 0x3f, sizeof(array))
  17. #define REP(i,n) for(i=0;i<(n);i++)
  18. #define FOR(i,x,n) for(i=(x);i<=(n);i++)
  19. #define RD(x) scanf("%d",&x)
  20. #define RD2(x,y) scanf("%d%d",&x,&y)
  21. #define RD3(x,y,z) scanf("%d%d%d",&x,&y,&z)
  22. #define WN(x) printf("%d\n",x);
  23. #define RE freopen("D.in","r",stdin)
  24. #define WE freopen("1biao.out","w",stdout)
  25. #define mp make_pair
  26. #define pb push_back
  27.  
  28. double farm(int n) {
  29. double re=0.0;
  30. for(int i=n; i>=; i--) {
  31. re+=1.0/i;
  32. }
  33. return re;
  34. }
  35.  
  36. int main() {
  37. int i,j;
  38. int n;
  39. while(scanf("%d",&n)!=EOF) {
  40. if(n<=) {///8个0交C++能984ms过,4个0能过
  41. double t=farm(n);
  42. printf("%.4f\n",t);
  43. } else
  44. printf("%.4f\n",log((double)n)+0.5772156649);///实际上10035就不一样了,不过数据里没有
  45. //getchar();
  46. }
  47. return ;
  48. }

1003( hdu4987 Little Pony and Dice ):

题意:大富翁!地图有0~n这些格子,从0开始扔骰子走,骰子有m面,标有1~m。当人到达n或者超过n就结束。求在n结束的概率。(1<= n,m <=10^9)

题解:DP+特判。

f[i]表示到第i个格子的概率,s[i]表示0~i的概率和。

则f[i]=s[i-1]-s[i-1-m]

这样O(n)就能算,但是n<=10^9,光这样算还不行。

再次找规律,发现n大的时候,后面的f[i]会全是一样的数,那么我们遇到连续若干个一样的数,就可以把它当做解了。“一样”我用差小于10^-9来判,连续2000个一样。

这样能过初审了,但是会被hack,system test也过不去,可能是因为m超大的时候很多小数加起来,精度不够。

固定m,则n=m时答案最大。当m=555555时,答案最大也为0,则m>=555555就直接答案为0。加上这个就能过了。

还有一个特判,是n<=m时能直接一个公式求得答案,公式推导我写在代码的注释里了。

代码:

  1. //#pragma comment(linker, "/STACK:102400000,102400000")
  2. #include<cstdio>
  3. #include<cmath>
  4. #include<iostream>
  5. #include<cstring>
  6. #include<algorithm>
  7. #include<cmath>
  8. #include<map>
  9. #include<set>
  10. #include<stack>
  11. #include<queue>
  12. using namespace std;
  13. #define ll long long
  14. #define usll unsigned ll
  15. #define mz(array) memset(array, 0, sizeof(array))
  16. #define minf(array) memset(array, 0x3f, sizeof(array))
  17. #define REP(i,n) for(i=0;i<(n);i++)
  18. #define FOR(i,x,n) for(i=(x);i<=(n);i++)
  19. #define RD(x) scanf("%d",&x)
  20. #define RD2(x,y) scanf("%d%d",&x,&y)
  21. #define RD3(x,y,z) scanf("%d%d%d",&x,&y,&z)
  22. #define WN(x) printf("%d\n",x);
  23. #define RE freopen("D.in","r",stdin)
  24. #define WE freopen("1biao.out","w",stdout)
  25. #define mp make_pair
  26. #define pb push_back
  27. const int maxcul=;
  28. const int maxcnt=;
  29. const double eps=1e-;
  30.  
  31. double f[maxcul+];
  32. double s[maxcul+];
  33. double farm(int m,int n){
  34. if(m>)return 0.0;/// m固定,当n=m时ans取最大值,m大于这个时最大值也是0
  35. if (n<=m) return pow(1.0+1.0/m,n-)/m;
  36. /// C(n-1,0)/m + C(n-1,1)/m/m + C(n-1,2)/m/m/m + ... + C(n-1,n-1)/(m^n)
  37. ///=( C(n-1,0) + C(n-1,1)/m + C(n-1,2)/m/m + ... + C(n-1,n-1)/(m^(n-1)) )/m
  38. ///=(1+1/m)^(n-1)/m
  39. int i,j;
  40. int cnt=;
  41. mz(f);
  42. f[]=1.0;
  43. s[]=1.0;
  44. for(i=;i<=n;i++){
  45. int minj=max(,i-m);
  46. if(minj==) f[i] = s[i-]/m;
  47. else f[i] = (s[i-] - s[minj-]) / m;
  48. s[i]=f[i]+s[i-];
  49. if(i>m && fabs(f[i]-f[i-])<eps)cnt++;
  50. else cnt=;
  51. if(cnt>maxcnt)break;
  52. }
  53. if(cnt>maxcnt) return f[i];
  54. else return f[n];
  55. }
  56.  
  57. int main() {
  58. int i,j;
  59. int m,n;
  60. while(scanf("%d%d",&m,&n)!=EOF){
  61. printf("%.5f\n",farm(m,n));
  62. }
  63. return ;
  64. }

bestcoder Round #7 前三题题解的更多相关文章

  1. BestCoder Round #85 前三题题解

    sum Accepts: 822 Submissions: 1744 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/13107 ...

  2. BestCoder Round #86 二,三题题解(尺取法)

    第一题太水,跳过了. NanoApe Loves Sequence题目描述:退役狗 NanoApe 滚回去学文化课啦! 在数学课上,NanoApe 心痒痒又玩起了数列.他在纸上随便写了一个长度为 nn ...

  3. Codeforces Round #524 (Div. 2)(前三题题解)

    这场比赛手速场+数学场,像我这样读题都读不大懂的蒟蒻表示呵呵呵. 第四题搞了半天,大概想出来了,但来不及(中途家里网炸了)查错,于是我交了两次丢了100分.幸亏这次没有掉rating. 比赛传送门:h ...

  4. Lyft Level 5 Challenge 2018 - Final Round (Open Div. 2) (前三题题解)

    这场比赛好毒瘤哇,看第四题好像是中国人出的,怕不是dllxl出的. 第四道什么鬼,互动题不说,花了四十五分钟看懂题目,都想砸电脑了.然后发现不会,互动题从来没做过. 不过这次新号上蓝名了(我才不告诉你 ...

  5. BestCoder Round #11 (Div. 2) 前三题题解

    题目链接: huangjing hdu5054 Alice and Bob 思路: 就是(x,y)在两个參考系中的表示演全然一样.那么仅仅可能在这个矩形的中点.. 题目: Alice and Bob ...

  6. Codeforces Round #530 (Div. 2) (前三题题解)

    总评 今天是个上分的好日子,可惜12:30修仙场并没有打... A. Snowball(小模拟) 我上来还以为直接能O(1)算出来没想到还能小于等于0的时候变成0,那么只能小模拟了.从最高的地方进行高 ...

  7. Codeforces Round #609 (Div. 2)前五题题解

    Codeforces Round #609 (Div. 2)前五题题解 补题补题…… C题写挂了好几个次,最后一题看了好久题解才懂……我太迟钝了…… 然后因为longlong调了半个小时…… A.Eq ...

  8. Educational Codeforces Round 53 (Rated for Div. 2) (前五题题解)

    这场比赛没有打,后来补了一下,第五题数位dp好不容易才搞出来(我太菜啊). 比赛传送门:http://codeforces.com/contest/1073 A. Diverse Substring ...

  9. Codeforces Round #519 by Botan Investments(前五题题解)

    开个新号打打codeforces(以前那号玩废了),结果就遇到了这么难一套.touristD题用了map,被卡掉了(其实是对cf的评测机过分自信),G题没过, 700多行代码,码力惊人.关键是这次to ...

随机推荐

  1. HA模式手动切换namenode状态

    查看状态 hdfs haadmin -getServiceState nn1 有时候通过网页访问两个namenode的http-address,看到默认的主namenode状态变成了standy,这时 ...

  2. css选择器(选择<div>内所有<p>元素)

    情况1:<div><p></div> 情况2:<div><a><p></p></a></div&g ...

  3. Android成长日记-APP的签名和打包

    签名的意义: 1. 为了保证每个应用程序开发者的合法 2. 防止部分人通过使用相同的Package Name来混淆替换已经安装的程序,从而出现一些恶意篡改 3. 保证我们每次发布的版本的一致性 (如自 ...

  4. 如何保持自己 fork 的项目和原始项目同步

    首先先通过 github 的 web 页面 fork 目标的项目 前提是自己已经设置好了git,并且配置了相应的权限 然后使用git clone命令在本地克隆自己 fork 的项目: git clon ...

  5. python中%和format

    两者都是格式化字符串用的,前者是比较老的版本,现在已经不推荐,后者更强大一些 % In [22]: print '%s' % 'hello world' hello world In [23]: pr ...

  6. CSS3-canvas绘制线性渐变

    <!doctype html><html><head><meta charset="utf-8"><title>canv ...

  7. C#中int,string,char[],char的转换(待续)

    //char[]转string string mm = "woshicainiao"; char[] ss = mm.ToCharArray(); string AA = new ...

  8. xpath php

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> < ...

  9. 爬虫4 html输出器 html_outputer.py

    #coding:utf8 __author__ = 'wang' class HtmlOutputer(object): def __init__(self): self.datas = []; de ...

  10. zabbix搭建

    首先创建zabbix组和用户 groupadd zabbix useradd -g zabbix zabbix mkdir -p /app/local/zabbix#然后创建zabbix编译安装目录 ...