zoukankan      html  css  js  c++  java
  • 第12届浙江省大学生程序设计大赛 解题报告

    题目连接

    1.Ace of Aces

    签到题(这道题我们的学长参赛时开场5分钟就过了,全场第一)

    #include<iostream>
    #include<algorithm>
    #define maxn 1005
    using namespace std;
    int nu[maxn];
    void init()
    {
        int i;
        for(i = 0;i < maxn;i ++)
            nu[i] = 0;
    }
    int main(void)
    {
        int cas,n,a,flag = 0;
        cin >> cas;
        while(cas --)
        {
            init();
            flag = 1;
            cin >> n;
            for(int i = 0;i < n;i ++){
                cin >> a;
                nu[a] ++;
            }
            int ans = 0,tmp;
            for(int i = 0;i < maxn;i ++)
            {
                if(ans < nu[i]){
                    ans = nu[i];
                    tmp = i;
                }
            }
            for(int i = 0;i < maxn;i ++)
            {
                if(ans == nu[i] && i !=tmp){
                    flag = 0;
                    break;
                }
            }
            if(!flag)
                cout << "Nobody" << endl;
            else{
                cout << tmp << endl;
            }
        }
        return 0;
    }

    2.Team Formation

    题目大意:要从n个学生中选出两个参加某比赛,给出每个学生的skill level。若某两个学生的skill level值分别为 a ,b,当a ^ b > max(a,b),该两个学生可以组合参赛。问:共有几种组合方式?

    思路:如果遍历所有的可能,那么时间会超。思考:异或的特点是什么?同一位上相同则为0,相异则为1。那么,两个数a b异或,a的位数位l1,b的位数为l2,假设(l1  >= l2),若a的l1位上数字为0,则a^b  < a,否则a^b > a;

    也就是说,判断两个数异或只需要根据他们的最高位的情况。bit【i】代表最高位为i的数字的个数。

    #include<iostream>
    #include <cstring>
    #include<algorithm>
    #define maxn 100005
    using namespace std;
    int skill[maxn],bit[32];
    void get_bit(int n)
    {
       int l = 31;
      while(l >= 0)
        {
            if(n & (1<<l))
            {
                bit[l]++;
                return ;
            }
            l--;
        }
        return ;
    }
    int main(void)
    {
        int i,j,l;
        int cas,n,a,flag = 0;
        int ans ;
        cin >> cas;
        while(cas --)
        {
            memset(bit, 0, sizeof(bit));
            ans = 0;
            cin >> n;
            for(int i = 0;i < n;i ++){
                cin >> skill[i];
                get_bit(skill[i]);
            }
            for(i = 0;i < n;i ++)
            {
                l = 31;
                while(l >= 0)
                {
                    if(skill[i] & (1 << l))
                        break;
                    l --;
                }
                l --;
                while(l >= 0)
                {
                    if(! (skill[i] & (1 << l)))
                        ans += bit[l];
                    l --;
                }
            }
            cout << ans <<endl;
        }
        return 0;
    }

    3.

    4.

  • 相关阅读:
    Ionic3 遇到的一些错误-Error: Cannot find module 'reflect-metadata'
    Ionic3 遇到的一些错误-submodule update -q --init --recursive
    Ionic3 一些命令
    Npm 使用淘宝镜像
    在PHP中使用AES加密算法加密数据-2
    php实现AES/CBC/PKCS5Padding加密解密(又叫:对称加密)-1
    php rsa加密解密实例
    composer 安装Laravel、thinkphp5.1
    PHP原生分页的编写
    微信授权登录并获取用户信息接口开发
  • 原文地址:https://www.cnblogs.com/zhangjialu2015/p/5315983.html
Copyright © 2011-2022 走看看