设为首页 加入收藏

TOP

Codeforces Round #271 (Div. 2) 解题报告
2015-07-20 17:31:50 来源: 作者: 【 】 浏览:2
Tags:Codeforces Round #271 Div. 解题 报告

?

A题:Keyboard

模拟水题。

代码如下:

?

#include 
  
   
#include 
   
     #include 
    
      #include 
     
       #include 
      
        #include 
       
         #include 
        
          #include 
         
           #include
           #include 
           
             #include 
            
              using namespace std; #define LL __int64 char s[]={qwertyuiopasdfghjkl;zxcvbnm,./}; int main() { int i, x, j, len; char c, s1[200]; scanf(%c,&c); if(c=='L') x=1; else x=-1; scanf(%s,s1); len=strlen(s1); for(i=0;i
             
               B题:Worms
              

?

水题。。

代码如下:

?

#include 
               
                
#include 
                
                  #include 
                 
                   #include 
                  
                    #include 
                   
                     #include 
                    
                      #include 
                     
                       #include 
                      
                        #include
                        #include 
                        
                          #include 
                         
                           using namespace std; #define LL __int64 int dp[1100000]; int main() { int n, m, i, j, sum=0, x; scanf(%d,&n); for(i=0;i
                          
                            C题:Captain Marmot
                           

?

暴力枚举,共4*4*4*4种情况,对每一种情况分别判断是否是正方形。我居然一直都以为是矩形。。

判断方法:将4条边与两条对角线分别计算出来。然后排序,4个小的肯定是边,2个大的是对角线,然后判断边是否都相等,对角线是否都相等,对角线是否是边的sqrt(2)倍(这里最好是用平方来判断是否是2倍)。然后找出移动次数最少的输出即可。

代码如下:

?

#include 
                            
                             
#include 
                             
                               #include 
                              
                                #include 
                               
                                 #include 
                                
                                  #include 
                                 
                                   #include 
                                  
                                    #include 
                                   
                                     #include
                                     #include 
                                     
                                       #include 
                                      
                                        using namespace std; #define LL __int64 const int mod=1e9+7; struct node { LL x, y; }t1[5], t2[5], fei[5]; node solve(node x, node y, int z) { node t; t=x; int i; for(i=0;i
                                       
                                         D题:Flowers
                                        

?

DP,还是水题。。可以这样考虑:

第n个只有两种情况,若第n个是R,那么情况数为dp[n-1]种。若第n个是W,由于W只能连续k个,所以说,第n-k+1至第n个必须都是W,那么此时情况数为dp[n-k]种。所以状态转移方程为:

dp[n]=dp[n-1]+dp[n-k]。

然后用一个数组保存前缀和即可。

代码如下:

#include 
                                         
                                          
#include 
                                          
                                            #include 
                                           
                                             #include 
                                            
                                              #include 
                                             
                                               #include 
                                              
                                                #include 
                                               
                                                 #include 
                                                
                                                  #include
                                                  #include 
                                                  
                                                    #include 
                                                   
                                                     using namespace std; #define LL __int64 const int mod=1e9+7; LL dp[110000], sum[110000]; int main() { int i, j, n, k, a, b; LL x=0; sum[0]=0; dp[0]=0; scanf(%d%d,&n,&k); for(i=1;i<=k-1;i++) dp[i]=1; dp[k]=2; for(i=k+1;i<=100000;i++) { dp[i]=dp[i-k]+dp[i-1]; dp[i]%=mod; } for(i=1;i<=100000;i++) { sum[i]=(sum[i-1]+dp[i])%mod; } while(n--) { scanf(%d%d,&a,&b); printf(%I64d ,(sum[b]+mod-sum[a-1])%mod); } return 0; }
                                                   
                                                  
                                                
                                               
                                              
                                             
                                            
                                           
                                          
                                         
自己能做出来的只有这么些。。sad。。

?

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇uva 10452 Marcus 下一篇hdu 2899 hdu 3400 三分/几何

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·在 Redis 中如何查看 (2025-12-26 03:19:03)
·Redis在实际应用中, (2025-12-26 03:19:01)
·Redis配置中`require (2025-12-26 03:18:58)
·Asus Armoury Crate (2025-12-26 02:52:33)
·WindowsFX (LinuxFX) (2025-12-26 02:52:30)