您的位置:首页 > 其它

codeforces#320ABCD

2015-09-17 18:50 351 查看
题目

A

[code]#include <cstdio>
#include <iostream>

using namespace std;

int main(){
    unsigned int n;
    cin >> n;
    int  cc = 0;
    while(n){
        if(n&1){
            cc++;
        }
        n >>= 1;
    }
    cout << cc << endl;
    return 0;
}


B

[code]#include <cstdio>
#include <iostream>

using namespace std;

int d[805];
int a[805][805];
int x[1000005];
int y[1000005];

int main(){
    int n;
    cin >> n;
    int m = 2*n;

    for(int i = 1;i <= m;i++){
        for(int j = 1;j < i;j++){
            scanf("%d",&a[i][j]);
            x[a[i][j]] = i;
            y[a[i][j]] = j;
        }
    }

    for(int i = 1000000;i >= 1;i--){
        if(!d[x[i]] && !d[y[i]]){
            d[x[i]] = y[i];
            d[y[i]] = x[i];
        }
    }
//  for(int i = 1;i <= m;i++){
//      int mi = 0;
//      if(!d[i]){
//          for(int j = i+1;j <= m;j++){
//              if(!d[j] && a[j][i] > mi){
//                  mi = a[j][i];
//                  d[i] = j; 
//              }
//          }
//          cout << i << mi << endl; 
//          d[d[i]] = i;
//      }
//  }
//  
    for(int i = 1;i <= m;i++){
        if(i!=1){
            printf(" ");
        }
        printf("%d",d[i]);
    }
    cout << endl;
    return 0;
}


C

[code]#include <cstdio>
#include <iostream>
#include <cmath>
using namespace std;
#define INF 1000000001.0
int main(){
    int a,b;
    cin >> a >> b;
    int x = a-b;
    int y = a+b;
    double ans = INF;
    if(a > b){
        int c =  floor(x/b);
        if(c > 0){
            if(c&1){
                if(c > 1)
                    ans = x*1.0/(c-1);  
            }
            else{
                ans = x * 1.0 /c;
            }   
        }
        c = floor(y/b);
        if(c & 1){
            if(c >= 3){
                ans = min(ans,y*1.0/(c-1));
            }
        }
        else{
            if(y >= 2)
            ans = min(ans,y*1.0/c);
        }
        if(ans < INF)
            printf("%.11f\n",ans);
        else{
            printf("%.11f\n",-1.0);
        }
    }
    else if(a == b){
        printf("%d\n",a);
    }
    else{
        cout << -1 << endl;
    }
    return 0;
}#include <cstdio>
#include <iostream>
#include <cmath>
using namespace std;
#define INF 1000000001.0
int main(){
    int a,b;
    cin >> a >> b;
    int x = a-b;
    int y = a+b;
    double ans = INF;
    if(a > b){
        int c =  floor(x/b);
        if(c > 0){
            if(c&1){
                if(c > 1)
                    ans = x*1.0/(c-1);  
            }
            else{
                ans = x * 1.0 /c;
            }   
        }
        c = floor(y/b);
        if(c & 1){
            if(c >= 3){
                ans = min(ans,y*1.0/(c-1));
            }
        }
        else{
            if(y >= 2)
            ans = min(ans,y*1.0/c);
        }
        if(ans < INF)
            printf("%.11f\n",ans);
        else{
            printf("%.11f\n",-1.0);
        }
    }
    else if(a == b){
        printf("%d\n",a);
    }
    else{
        cout << -1 << endl;
    }
    return 0;
}


D

[code]#include <cstdio>
#include <iostream>
#include <algorithm>

using namespace std;
typedef long long LL;

LL l[200005];
LL a[200005];
LL r[200005];

int main(){
    int n,k,x;
    cin >> n >>k >>x;
    for(int i = 1;i <= n;i++){
        scanf("%lld",&a[i]);
    }

    for(int i = 1;i <= n;i++){
        l[i] = l[i-1]|a[i];
    }

    for(int i = n;i >= 1;i--){
        r[i] = r[i+1]|a[i];
    }

    LL ans = 0;
    for(int i = 1;i <= n;i++){
        for(int j = 0;j < k;j++){
            a[i]*= x;       
        }
        ans = max(ans,a[i]|l[i-1]|r[i+1]);
    }
    cout<< ans << endl;
    return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: