Codeforces Round #274 (Div. 2) 解题报告

2015-01-27 22:35:56 ? 作者: ? 浏览: 64

?

这次自己又只能做出4道题来。

A题:Expression

水题。

枚举六种情况求最大值即可。

代码如下:

?

#include 
  
   
#include 
   
     #include 
    
      #include 
     
       #include 
      
        #include 
       
         #include 
        
          #include 
         
           #include
           #include 
           
             #include 
            
              using namespace std; #define LL __int64 int main() { LL a, b, c, d[10]; while(scanf(%I64d%I64d%I64d,&a,&b,&c)!=EOF) { d[0]=a*b*c; d[1]=(a+b)*c; d[2]=a+b+c; d[3]=a*(b+c); d[4]=a+b*c; d[5]=a*b+c; sort(d,d+6); printf(%I64d ,d[5]); } return 0; }
            
           
         
        
       
      
     
    
   
  

B题:Towers

?

水题。

每次都是将最多的拿出一个给最少的,直到最大的与最少的相差小于或等于1.

代码如下:

#include 
  
   
#include 
   
     #include 
    
      #include 
     
       #include 
      
        #include 
       
         #include 
        
          #include 
         
           #include
           #include 
           
             #include 
            
              using namespace std; #define LL __int64 struct node { int x, num; }fei[1000]; int cmp(node x, node y) { return x.x
             
               C题:Exams
              

?

还是水。。小贪心

小贪心。先按标记日期排个序,然后扫一遍即可,能用小的就优先考虑小的。

代码如下:

?

#include 
               
                
#include 
                
                  #include 
                 
                   #include 
                  
                    #include 
                   
                     #include 
                    
                      #include 
                     
                       #include 
                      
                        #include
                        #include 
                        
                          #include 
                         
                           using namespace std; #define LL __int64 struct node { int x, y; }fei[6000]; int cmp(node x, node y) { if(x.x==y.x) return x.y
                          
                           =k) { k=fei[i].y; } else { k=fei[i].x; } } printf(%d ,k); } return 0; }
                          
                         
                        
                      
                     
                    
                   
                  
                 
                
               

D题:

?

还是水。。。。二分。

分别考虑4种情况,x,y,x+y,y-x。然后用二分找差值为这四个数的。

代码如下:

?

#include 
               
                
#include 
                
                  #include 
                 
                   #include 
                  
                    #include 
                   
                     #include 
                    
                      #include 
                     
                       #include 
                      
                        #include
                        #include 
                        
                          #include 
                         
                           using namespace std; #define LL __int64 int a[110000]; int bin_search(int x, int y, int high) { int low=0, mid; while(low<=high) { mid=low+high>>1; if(y-a[mid]==x) return 1; else if(y-a[mid]>x) low=mid+1; else high=mid-1; } return 0; } int main() { int n, l, x, y, i, j, k, flag1, flag2; while(scanf(%d%d%d%d,&n,&l,&x,&y)!=EOF) { flag1=flag2=0; for(i=0; i
                          
                           =0||a[i]+x<=l)) { flag=1; break; } } if(flag&&a[i]-y>=0) { printf(1 %d ,a[i]-y); } else if(flag&&a[i]+x<=l) { printf(1 %d ,a[i]+x); } else { printf(2 %d %d ,x,y); } } } } } return 0; } 
                          
                         
                        
                      
                     
                    
                   
                  
                 
                
               


?

?