Educational Codeforces Round 10 A B题、

A. Gabriel and Caterpillar

题意: 就是说  一个小孩子去观察毛毛虫从 h1的地方爬到h2的地方、毛毛虫从10点爬到22点、每小时爬的距离是a, 晚上22点到第二天早上10点 毛毛虫休息 每小时下落b距离、但是最初状态是那个小孩子从14点开始观察毛毛虫的, 必须过了24点才算一天

思路:模拟、但细节地方要注意

hint:但你要知道什么情况下永远也爬不上去,就是说每小时下落比每小时上升的距离大呢,但这还有个细节, 就是即使b>a 但毛毛虫是先可以爬10个小时,如果在这10个小时内爬到了h2 也就是说 及时b>a它也可以爬到

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cmath>
 4 int main()
 5 {
 6     int n,m;
 7     int a,b;
 8     while(~scanf("%d%d%d%d",&n,&m,&a,&b)){
 9         int ans=m-n;
10         int flag=1;        //标记变量、记录是否能爬到终点 
11         int distance=0;
12         int time=0;
13         distance+=a*8;
14             if(distance<ans){
15                 while(1){
16                     distance-=b*12;        //休息 
17                     ++time;            // 休息时间过了24点、 所以算一天 
18                     distance+=a*12;
19                     if(distance>=ans)    break;
20                     if(b>=a){        //直接在循环里面判断、 因为前面可以爬的10小时可以到终点的话 
21                         flag=0;        //  也就不会进循环了 
22                         break;
23                 }
24             }    
25         }
26         if(!flag)    printf("-1\n");
27         else        printf("%d\n",time);
28     }
29 }

 

B. z-sort

题意:先给你一个数列、问用着数列的数是否可以组成一个 对于数列中每一个偶数项 存在ai ≥ ai - 1、对于每一个奇数项 存在ai ≤ ai - 1思路:我是这样想的、既然要满足两个条件、 那么对于从前到后的奇数项来说是一个非递减的,对前到后的偶数项来说是一个非递增的、

      那么对于所给的数列、 排一个序,然后贪心,具体看代码吧

  

 1 #include<cmath>
 2 #include<cstring>
 3 #include<iostream>
 4 #include<cstdio>
 5 #include<algorithm>
 6 using namespace std;
 7 int num[1005];
 8 int main()
 9 {
10     int n;scanf("%d",&n);
11     for(int i=1;i<=n;++i)
12         scanf("%d",&num[i]);
13     sort(num+1,num+n+1);
14     int ans[1005];
15     int add,dre;
16     add=1;
17     dre=n;
18     for(int i=1;i<=n;++i)            //构造这样一个数列
19         if(i%2==0)
20             ans[i]=num[dre--];
21         else
22             ans[i]=num[add++];
23         int flag=1;
24 //    for(int i=1;i<=n;++i)    
25 //        printf("%d ",ans[i]);
26 //        printf("\n");
27     for(int i=2;i<=n;++i)        //判断构造的数列是否满足条件
28         if(i%2==0){
29             if(ans[i]<ans[i-1])    flag=0;
30         }
31         else
32             if(ans[i]>ans[i-1])    flag=0;
33     if(!flag)    printf("Impossible");
34     else    for(int i=1;i<=n;++i)    printf("%d ",ans[i]);
35     printf("\n");    
36     return 0;
37 }

 

 C  D 题意其实都看懂了、  就是做不出来     好气好气阿, 

读题方面比以前好一点了、

继续努力吧、

 

posted @ 2016-03-26 09:29  我不萌、我要高冷  阅读(240)  评论(0编辑  收藏  举报