zoukankan      html  css  js  c++  java
  • Codeforces Round #267 (Div. 2)

    A

    题意:给出n对a,b,问有多少对a-b>=2

     1 #include<iostream>  
     2 #include<cstdio>  
     3 #include<cstring> 
     4 #include <cmath> 
     5 #include<stack>
     6 #include<vector>
     7 #include<map> 
     8 #include<queue> 
     9 #include<algorithm>  
    10 #define mod=1e9+7;
    11 using namespace std;
    12 
    13 typedef long long LL;
    14 
    15 int main(){
    16     int n,a,b,ans=0;
    17     scanf("%d",&n);
    18     while(n--){
    19         scanf("%d %d",&a,&b);
    20         if((b-a)>=2) ans++;
    21     }
    22     
    23     printf("%d
    ",ans);
    24     return 0;
    25 }
    View Code

    B

    题意:给出m+1个数,给出k,求在前m个数里面与第m+1个数表示成二进制时,不相同的位数小于等于k的个数

    翻的别人的代码,看怎么算二进制的位数不同的,发现一个函数 __builtin_popcount() 计算一个32位无符号整数共有多少个1 http://www.cnblogs.com/avema/p/3774294.html

     1 #include<iostream>  
     2 #include<cstdio>  
     3 #include<cstring> 
     4 #include <cmath> 
     5 #include<stack>
     6 #include<vector>
     7 #include<map> 
     8 #include<set>
     9 #include<queue> 
    10 #include<algorithm>  
    11 #define mod=1e9+7;
    12 using namespace std;
    13 
    14 typedef long long LL;
    15 const int maxn=1000+5;
    16 int a[maxn];
    17 
    18 int main(){
    19     int n,m,k,i,j,ans=0;
    20     cin>>n>>m>>k;
    21     for(i=0;i<=m;i++) {
    22         cin>>a[i];
    23     }
    24     
    25     for(i=0;i<m;i++){
    26         ans+= __builtin_popcount(a[i]^a[m])<=k;
    27     }
    28     cout<<ans<<"
    ";
    29     return 0;
    30 }
    View Code

    C

    题意:给出n个数,求将这n个数划分为k块,长度为m的区间的最大值

    用dp[i][j]表示前i个数划分成j块的最大值

    dp[i][j]=max(dp[i-1][j],dp[i-m][j-1]+sum[i]-sum[i-m])

     1 #include<iostream>  
     2 #include<cstdio>  
     3 #include<cstring> 
     4 #include <cmath> 
     5 #include<stack>
     6 #include<vector>
     7 #include<map> 
     8 #include<set>
     9 #include<queue> 
    10 #include<algorithm>  
    11 #define mod=1e9+7;
    12 using namespace std;
    13 
    14 typedef long long LL;
    15 const int maxn=5000+5;
    16 LL num[maxn],dp[maxn][maxn];
    17 
    18 int main(){
    19     int n,m,i,j,k;
    20     cin>>n>>m>>k;
    21     for(i=1;i<=n;i++){
    22         cin>>num[i];
    23         num[i]+=num[i-1];
    24     }
    25     
    26     for(i=1;i<=n;i++){
    27         for(j=1;j<=k;j++){
    28             dp[i][j]=dp[i-1][j];
    29             if(i>=m)
    30             dp[i][j]=max(dp[i-1][j],dp[i-m][j-1]+num[i]-num[i-m]);
    31             
    32         //    printf("dp[%d][%d]=%d
    ",i,j,dp[i][j]);
    33         }
    34     }
    35     printf("%I64d
    ",dp[n][k]);
    36     return 0;    
    37 }
    View Code

    B的二进制不懂写= = C搜了题解后,是背包= =

    真是挫----爆----了 go---g0---go----

  • 相关阅读:
    正则表达式的妙用获得数组
    道不远人,话IO框架
    页面和控件的生命周期及其二者的关系
    深度解析 TypeConverter & TypeConverterAttribute (二)
    今天我顺利的在cnblogs安家,我要在这里写下辉煌
    AJAX or Ajax
    深度解析 TypeConverter & TypeConverterAttribute (一)
    SonarQube简单入门
    vuecli · Failed to download repo vuejstemplates/webpack: connect ETIMEDOUT 192.30.253.112:443
    Sqlmap使用教程
  • 原文地址:https://www.cnblogs.com/wuyuewoniu/p/4361727.html
Copyright © 2011-2022 走看看