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

    B

    题意:给出n个男孩,m个女孩,n个男孩的a[i],m个女孩的b[i],其中组成一队的条件是男孩女孩分别的值的差小于等于1,问能够组成多少对

    先排序,再扫一遍,符合条件的就标记

     1 #include<iostream>  
     2 #include<cstdio>  
     3 #include<cstring>  
     4 #include<algorithm>  
     5 using namespace std;
     6 
     7 int a[1005],b[1005],vis[1005];
     8 
     9 int main()
    10 {
    11     int n,i,j,m,ans=0,x,y;
    12     scanf("%d",&n);
    13     for(i=1;i<=n;i++) scanf("%d",&a[i]);
    14     scanf("%d",&m);
    15     for(i=1;i<=m;i++) scanf("%d",&b[i]);
    16     sort(b+1,b+m+1);
    17     sort(a+1,a+n+1);
    18     memset(vis,0,sizeof(vis));
    19     
    20     for(i=1;i<=n;i++)
    21     {
    22          x=a[i]+1;y=a[i]-1;
    23         for(j=1;j<=m;j++)
    24         {
    25             if(!vis[j]&&(x==b[j]||y==b[j]||a[i]==b[j]))
    26             {
    27                 ans++;
    28                 vis[j]=1;
    29             //    printf("ans=%d
    ",ans);
    30             //    printf("a[%d]=%d
    ",i,a[i]);
    31             
    32                 break;
    33             }
    34         //
    35         }
    36     }
    37     printf("%d
    ",ans);
    38     
    39 }
    View Code

    补-----------------------------------------------------------------------------------------------------

    A

    题意:给出n个数,用交换的方式将它们排序,输出交换的次数以及交换的位置。

    找的一份第一个提交的代码学习(看题解= =), 从前到后遍历,找到一个数能够交换到的最后的位置,如果这个位置和最初的位置不同,则放进vector容器中

     1 #include<iostream>  
     2 #include<cstdio>  
     3 #include<cstring>  
     4 #include<algorithm>  
     5 #include<vector>
     6 using namespace std;
     7 
     8 vector<pair<int,int> >v;
     9 int a[5005];
    10 
    11 int main()
    12 {
    13     int i,j,n,x;
    14     scanf("%d",&n);
    15     for(i=0;i<n;i++) scanf("%d",&a[i]);
    16     for(i=0;i<n;i++)
    17     {   x=i;
    18         for(j=i+1;j<n;j++)
    19         {
    20             if(a[j]<a[x]) x=j;        
    21         }
    22         if(x!=i) {v.push_back(make_pair(i,x));swap(a[i],a[x]);}
    23     }
    24     printf("%d
    ",v.size());
    25     for(i=0;i<v.size();i++)
    26     printf("%d %d
    ",v[i].first,v[i].second);
    27 }
    View Code

    C

    题意:给出一个数的长度m,给出各个位数的和n,求满足这个条件的最小的数和最大的数

    先看最大的数,就尽量往高位放9,放完了就填0, 最小的数和最大的数类似,先将n-1(留一个1给最高位),尽量往低位放9,放完了就放0

    这一题wa了好几次,因为没有考虑全情况,n在大于9*m的情况下,就无解了

     1 #include<iostream>  
     2 #include<cstdio>  
     3 #include<cstring>  
     4 #include<algorithm>  
     5 using namespace std;
     6 
     7 int a[105],b[105];
     8 
     9 int main()
    10 {
    11     int m,n,i,j,c;
    12     scanf("%d %d",&m,&n);
    13     c=n;
    14     if((m>1&&n==0)||(n>9*m)) printf("-1 -1
    ");
    15     else
    16     {
    17         for(i=m-1;i>=0;i--)
    18     {
    19         if(n>=9) a[i]=9;
    20         else a[i]=n%9;
    21         n=n-a[i];    
    22     }
    23     n=c-1;
    24     for(i=0;i<m;i++)
    25     {
    26         if(n>=9) b[i]=9;
    27         else b[i]=n%9;
    28         n=n-b[i];
    29     }
    30     
    31     b[m-1]=b[m-1]+1;
    32     
    33     
    34     for(i=m-1;i>=0;i--)
    35     printf("%d",b[i]);
    36     printf(" ");
    37     for(i=m-1;i>=0;i--)
    38     printf("%d",a[i]);    
    39     printf("
    ");
    40     }
    41 }
    View Code
  • 相关阅读:
    C# 与 Java Rsa加密与解密互通
    PHP 读取Postgresql中的数组
    ArcGis Javascript API (V3.6)加载天地图
    Entity Framework 6.0 对枚举的支持/实体添加后会有主键反回
    ubuntu 中 ssh连接用UTF8
    Entity Framework PostgresQL CodeFirst
    Golang 字符编码
    CentOS 安装 mono
    C和C++中的不定参数
    WisDom.Net 框架设计(一) 总体框架
  • 原文地址:https://www.cnblogs.com/wuyuewoniu/p/4305727.html
Copyright © 2011-2022 走看看