• hdu 6186 CS Course


    CS Course

    Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
    Total Submission(s): 52    Accepted Submission(s): 30


    Problem Description
    Little A has come to college and majored in Computer and Science.

    Today he has learned bit-operations in Algorithm Lessons, and he got a problem as homework.

    Here is the problem:

    You are giving n non-negative integers a1,a2,,an, and some queries.

    A query only contains a positive integer p, which means you 
    are asked to answer the result of bit-operations (and, or, xor) of all the integers except ap.
     
    Input
    There are no more than 15 test cases. 

    Each test case begins with two positive integers n and p
    in a line, indicate the number of positive integers and the number of queries.

    2n,q105

    Then n non-negative integers a1,a2,,an follows in a line, 0ai109 for each i in range[1,n].

    After that there are q positive integers p1,p2,,pqin q lines, 1pin for each i in range[1,q].
     
    Output
    For each query p, output three non-negative integers indicates the result of bit-operations(and, or, xor) of all non-negative integers except ap in a line.
     
    Sample Input
    3 3 1 1 1 1 2 3
     
    Sample Output
    1 1 0 1 1 0 1 1 0
     
    记录前缀后缀跑一遍就可以了。
    ac代码:
    #include <cstdio>
    #include <iostream>
    #include <cstring>
    using namespace std;
    int a[100001];
    int zand[100001];
    int zand1[100001];
    int zxor[100001];
    int zxor1[100001];
    int zor[100001];
    int zor1[100001];
    int main()
    {
        int n,q;
        while(~scanf("%d %d",&n,&q))
        {
            for(int i=1;i<=n;i++)
            {
                scanf("%d",&a[i]);
                if(i==1)
                {
                    zand[i]=a[i];
                    zor[i]=a[i];
                    zxor[i]=a[i];
                }
                else
                {
                    zand[i]=(a[i]&zand[i-1]);
                    zor[i]=(a[i]|zor[i-1]);
                    zxor[i]=(a[i]^zxor[i-1]);
                }
            }
            zand1[n]=zor1[n]=zxor1[n]=a[n];
            for(int i=n-1;i>=1;i--)
            {
                 zand1[i]=(a[i]&zand1[i+1]);
                 zor1[i]=(a[i]|zor1[i+1]);
                 zxor1[i]=(a[i]^zxor1[i+1]);
            }
            while(q--)
            {
                int x;
                scanf("%d",&x);
                if(x==1)
                {
                    cout<<zand1[2]<<' '<<zor1[2]<<' '<<zxor1[2]<<endl;
                }
                else if(x==n)
                {
                    cout<<zand[n-1]<<' '<<zor[n-1]<<' '<<zxor[n-1]<<endl;
                }
                else
                {
                    cout<<(zand[x-1]&zand1[x+1])<<' '<<(zor[x-1]|zor1[x+1])<<' '<<(zxor[x-1]^zxor1[x+1])<<endl;
                }
            }
        }
    
        return 0;
    }
  • 相关阅读:
    Python学习笔记--8.3 函数--返回值
    Python学习笔记--8.2 函数--默认值参数
    Python学习笔记--9 非空即真,非零即真
    [Robot Framework] 支持python 3 的 robot framework 安装
    Mysql DB 无法创建 function,报错:ERROR 1418 (HY000): This function has none of DETERMINISTIC, NO SQL, or READS SQL
    vue项目中console.log报错 No Console
    git命令合并分支代码
    远程桌面连接时如何使用本地扬声器和麦克风
    [Grafana] 如何把不同series的点用线连接起来
    POM 文件参考
  • 原文地址:https://www.cnblogs.com/z1141000271/p/7459914.html
Copyright © 2020-2023  润新知