zoukankan      html  css  js  c++  java
  • Educational Codeforces Round 11

    A. Co-prime Array

    http://codeforces.com/contest/660/problem/A

    题意:给出一段序列,插进一些数,使新的数列两两成互质数,求插最少的个数,并输出这个序列。

    思路:最优的就是插入1,1与非1的数都互质。

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 int gcd(int a,int b){
     4     return b==0?a:gcd(b,a%b);
     5 }
     6 int main(){
     7     int n,t=0,a[2010],b[2010];
     8     scanf("%d",&n);
     9     for(int i=0;i<n;i++){
    10         cin>>a[i];
    11         if(gcd(a[i],a[i-1])!=1)
    12         b[t++]=1;
    13         b[t++]=a[i];
    14     }
    15     cout<<t-n<<endl;
    16     cout<<b[0];
    17     for(int i=1;i<t;i++)
    18     cout<<" "<<b[i];
    19     cout<<endl;
    20     return 0;
    21 }

    B. Seating On Bus

    http://codeforces.com/contest/660/problem/B

    题意:不是很懂题目意思,看样例找规律好了

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 int n,m;
     4 int main()
     5 {
     6     cin>>n>>m;
     7     for (int i=1;i<=2*n;i++)
     8     {
     9         if (2*n+i<=m) 
    10             cout<<2*n+i<<' ';
    11         if (i<=m) 
    12             cout<<i<<' ';
    13     }
    14     return 0;
    15 }

    C. Hard Process

    http://codeforces.com/contest/660/problem/C

    题意:给你k个机会,每次可以把一个0变成1,然后形成最长的都是1的子序列,输出变换后的序列

    思路:dp和二分

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 const int maxn = 1e6;
     4 int n,k;
     5 int a[maxn],sum[maxn];
     6 int main()
     7 {
     8     scanf("%d%d",&n,&k);
     9     for(int i=1;i<=n;i++)
    10     {
    11         scanf("%d",&a[i]);
    12         a[i]=1-a[i];//将数字互换是为了后面寻找0最多的序列
    13     }
    14     for(int i=1;i<=n;i++)
    15         sum[i]=sum[i-1]+a[i];
    16     int ans1=0,ans2=0;
    17     for(int i=1;i<=n;i++)
    18     {
    19         int l = i,r = n,ans=0;
    20         while(l<=r)
    21         {
    22             int mid=(l+r)/2;
    23             if(sum[mid]-sum[i-1]>k)r=mid-1;
    24             else l=mid+1,ans=mid-i+1;//二分找到1尽可能多的地方
    25         }
    26         if(ans>ans1)
    27         {
    28             ans1=ans;
    29             ans2=i;
    30         }
    31     }
    32     cout<<ans1<<endl;
    33     for(int i=ans2;i<=n;i++)
    34     {
    35         if(ans1==0)break;
    36         if(a[i]==1)a[i]=0;
    37         if(a[i]==0)ans1--;
    38     }
    39     for(int i=1;i<=n;i++)
    40         cout<<1-a[i]<<" ";
    41 }
    我会一直在
  • 相关阅读:
    win8 win10 安装msi 提示2502、2503的错误代码
    本地wamp的Internal Server Error错误解决方法
    安卓客户端测试总结
    测试bug级别定义
    测试流程
    测试人员的分工
    web安全测试-AppScan使用分享
    性能测试-小计
    0基础学java_字节流和字符流
    0基础学java_通配符
  • 原文地址:https://www.cnblogs.com/zhien-aa/p/5402585.html
Copyright © 2011-2022 走看看