2013年9月15日12级周赛报告

时间:2021-12-25 14:28:47

      开学来的第一次周赛,对于我来说也是第一次跟同学们在307做题,确实挺紧张的。这一次的题目是在北师大OJ上做,自己还不太习惯。

      我先看到的是A题,第一感觉是比较简单,就是求A^B的所有因子之和,但是当看到那个(0 <= A,B <= 50000000)就傻眼了,于是也就没再多想那道题。

      对于B题,我第一眼连题都没有看懂,果断就跳过去了。
      C题要说相比是最简单的了,前两次都在小问题上没有注意,结果连续WA,直到最后才AC了。

  1. #include<stdio.h>   
  2. #include<string.h>   
  3. int main()   
  4. {   
  5. int N,i,j,d[301],t,b[301],k;   
  6. char a[301][52],m[52],c[301][52];   
  7. while(scanf("%d",&N)!=EOF)   
  8. {   
  9. k=0;   
  10. for(i=0;i<N;i++)   
  11. {   
  12. scanf("%s",&a[i]);   
  13. scanf("%d",&d[i]);   
  14. }   
  15. for(i=0;i<N;i++)   
  16. {   
  17. scanf("%s",&c[i]);   
  18. scanf("%d",&b[i]);   
  19. }   
  20. for(i=0;i<N;i++)   
  21. for(j=1;j<N-i;j++)   
  22. {   
  23. if(d[j-1]<d[j])   
  24. {   
  25. t=d[j-1];   
  26. d[j-1]=d[j];   
  27. d[j]=t;   
  28. strcpy(m,a[j-1]);   
  29. strcpy(a[j-1],a[j]);   
  30. strcpy(a[j],m);   
  31. }   
  32. }   
  33. for(i=0;i<N;i++)   
  34. {   
  35. if(d[i]!=b[i])   
  36. {   
  37. printf("Error\n");   
  38. for(i=0;i<N;i++)   
  39. {   
  40. printf("%s %d\n",a[i],d[i]);   
  41. }   
  42. k++;   
  43. break;   
  44. }   
  45. }   
  46. if(k==0)   
  47. {   
  48. for(i=0;i<N;i++)   
  49. {   
  50. if(strcmp(a[i],c[i])!=0)   
  51. {   
  52. printf("Not Stable\n");   
  53. for(i=0;i<N;i++)   
  54. {   
  55. printf("%s %d\n",a[i],d[i]);   
  56. }   
  57. k++;   
  58. break;   
  59. }   
  60. }   
  61. }   
  62. if(k==0)   
  63. printf("Right\n");   
  64. }   
  65. return 0;   
  66. }  

     在比赛最后阶段,我一直在做D题,感觉题意已经理解了,但就是在编代码的过程中有许多细节自己不太确定,于是,反复测试数据,感觉没问题,于是便提交了,结果不断的WA,但是自己始终找不到哪里的错误,直到最后,一直在纠结着这道题。

    以下是我的WA代码:

  1. #include<stdio.h>   
  2. int main()   
  3. {   
  4. __int64 i,N,a[100002],b[100002],s,t,T,k,Pi,Di;   
  5. scanf("%I64d",&T);   
  6. for(k=0;k<T;k++)   
  7. {   
  8. scanf("%I64d",&N);   
  9. for(i=0;i<N;i++)   
  10. {   
  11. scanf("%I64d%I64d",&Pi,&Di);   
  12. a[i]=Pi;   
  13. b[i]=Di;   
  14. }   
  15. s=a[0]+b[0];   
  16. t=b[0];   
  17. for(i=0;i<N-1;i++)   
  18. {   
  19. if(s<a[i+1])   
  20. {   
  21. s=a[i+1]+b[i+1];   
  22. t=b[i+1];   
  23. }   
  24. else   
  25. {   
  26. if(s==a[i+1])   
  27. {   
  28. s=a[i+1]+(b[i]>b[i+1]?b[i]:b[i+1]);   
  29. t=(b[i]>b[i+1]?b[i]:b[i+1]);   
  30. }   
  31. else   
  32. {   
  33. s=s+t;   
  34. }   
  35. }   
  36. }   
  37. printf("%I64d\n",s);   
  38. }   
  39. return 0;   
  40. }  

      
      不过最后在与队友的交谈中我总算是知道我的代码错在哪里了。
      对于后面的几道题,确实难度较大,有的连题意都没有搞清楚,看来自己果断还是太水了呀!!向大神看齐。。。。