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 }
posted @ 2016-04-17 22:30  April_AA  阅读(204)  评论(0编辑  收藏  举报