集训的小总结

   该死的期末考试终于结束了,又可以有时间肝代码了,尽管还处在等待成绩的焦虑当中,这一天,A了20多道比较简单的题,其中,这几个题给我留下了深刻的印象

 

题目一:地址 http://www.fjutacm.com/Problem.jsp?pid=1323

    刚拿到这个题时,由于备战期末,有半个月都没有碰过这类数学题了,也懒得去想简便的数学方法,就直接暴力模拟跑的过程,由于没有考虑叮当狗跑的速度如果低于人的速度的情况,导致在第一次提交的时候便WA了,修改也花费了不少的时间。当我通过这个题后,看了看别人提交的代码,才意识到,这个题如果有数学方法,是十分简便的。因为人在走的同时,狗也在跑,所以,狗跑的总路程就是两个人相遇所需的时间乘上狗跑的速度,两三行代码就能解决。。。。。。所以,做题时,我们不要一味地蛮干,还是要经过自己的思考。

 

附上我比较SB的代码

 1 #include<stdio.h>
 2 #include<bits/stdc++.h>
 3 using namespace std;
 4 int main()
 5 {
 6     int time,ii,iii=0;
 7     scanf("%d",&time);
 8     for (ii=0;ii<time;ii++)
 9     {
10         double u,v,w,l;
11     
12         scanf("%lf %lf %lf %lf",&u,&v,&w,&l);
13
14         double t=0;
15         int tt=1;
16         double s=l;
17         double ans=0;
18         if (w<u || w<v)
19         {
20             printf("%.3f\n",w*l/(v+u));
21             continue;
22         }
23         while(t<(l/(u+v)))
24         {
25             double ttt=0;
26             if (tt==1)
27             {
28                 ttt=(s/(w+v));
29                 t=t+ttt;
30                 s=s-ttt*(v+u);
31                 tt=-tt;
32                 ans=ans+ttt*w;
33         
34             iii++;
35                 continue;
36              }
37              if (tt==-1)
38              {
39                  ttt=s/(w+u);
40                  t=t+ttt;
41                  s=s-ttt*(u+v);
42                  ans=ans+ttt*w;
43                  tt=-tt;
44        
45                   iii++; 
46              }    
47              if (iii>5000)
48              {
49                  break;
50              }
51             
52         }
53         printf("%.3f\n",ans);
54         
55     }
56 }

 

在附上简单的代码

 1  #include<stdio.h>
 2  int main()
 3  {
 4        int time,ii,iii=0;
 5        scanf("%d",&time);
 6         for (ii=0;ii<time;ii++)
 7         {
 8            double u,v,w,l;
 9        
10           scanf("%lf %lf %lf %lf",&u,&v,&w,&l);
11      
12               printf("%.3f\n",w*l/(v+u));
13           }
14  }

这差别也太大了吧~~~

题目二:http://www.fjutacm.com/Problem.jsp?pid=1507

  这又是一道数学题,这个题也是一个求期望的题。尽管在10月备战天梯赛的时候学过一些有关数学期望的算法,但我并不是很熟练。我的第一反应还是模拟整个过程。但是,在草稿纸上进行到第二步时,我发现可能出现的情况正在成倍增长,如果模拟整个过程,怕是天黑都弄不完。有了上一个题的经验,我放弃了模拟,开始寻找一个简便的数学方法。经过思考,我发现故事的主人公再拿巧克力的时候,每一个巧克力被拿的概率都是相同的,尽管在之后的k分钟的时间里,那块巧克力不能够再一次被拿走,但是,所有巧克力都是这样的,所以,拿走每块巧克力对后续造成的影响也一样。由此:可以得到这个结论:每次拿走巧克力价值的期望是相等的。这个题的答案就是拿的次数乘每次拿的期望值。

附代码:

 1 #include<stdio.h>
 2 int main()
 3 {
 4     int t,i,j;
 5     scanf("%d",&t);
 6     for (i=0;i<t;i++)
 7     {
 8         double s=0;
 9         int c[1010];
10         int time[1010];
11         int n,m,k;
12         scanf("%d %d %d",&n,&m,&k); 
13         for (j=0;j<n;j++)
14         {
15             scanf("%d",&c[j]);
16             s=s+c[j];
17         }
18         s=s*m/n;
19            printf("Case %d: %.5f\n",i+1,s);
20         
21     }
22     return 0;
23 }

 

题目三:http://www.fjutacm.com/Problem.jsp?pid=1508

   这是一个时钟问题,貌似在小学奥数中就有这一类型的题目,只要能够求出时钟的转动速度与真实时间的差值的比值,通过差值乘上要求的时间,不难得出结果。第三问只要算出再次相同时候的总时间:60*60*12,在通过比值算出每秒两者之间的差值,就能求出再次相同的时间。思维的过程比较绕,想明白了还是简单,附上代码吧:

 1 #include<stdio.h>
 2 int main()
 3 {
 4     int t,ii;
 5     scanf("%d",&t);
 6     for (ii=0;ii<t;ii++)
 7     {
 8         int x;
 9         double ans=0;
10         scanf("%d",&x);
11         int q,i;
12         scanf("%d",&q);
13         for (i=0;i<q;i++)
14         {
15             int a;
16             scanf("%d",&a);
17             if (a==1)
18             {
19                 int k;
20                 scanf("%d",&k);
21                 ans=k*(60-x);    
22             }
23             if (a==2)
24             {
25                 int k;
26                 scanf("%d",&k);
27                 ans=k*60*(60.0/(60-x));
28             
29             }
30             if (a==3)
31             {
32                 double k;
33                 scanf("%lf",&k);
34                 double v;
35                 v=(double)x/60;
36                 ans=43200*k/v;
37             }
38             printf("%.2f\n",ans);
39         }
40     }
41     return 0; 
42 } 

 

posted @ 2021-01-17 18:34  D5181  阅读(104)  评论(0编辑  收藏  举报