设为首页 加入收藏

TOP

[20181107][模拟赛](三)
2018-11-07 18:08:25 】 浏览:258
Tags:20181107 模拟
"w",stdout); n = read(); int bz1 = 0,bz2 = 0,bz3 = 0; for(int i = 1;i <= n;++i) { a[i] = read(); if(ma[a[i]]) bz1 = 1; ma[a[i]] = 1; if(a[i] > 1000) bz3 = 1; if(a[i] != 0 && a[i] != 1) bz2 = 1; } if(!bz1) { BF1::Main(); return 0; } if(!bz2) { BF2::Main(); return 0; } int m = read(); if(n <= 1000 && m <= 1000 && bz3 == 0) { BF4::Main(m); return 0; } if(n <= 1000 && m <= 1000) { BF3::Main(m); return 0; } return 0; }

std

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<vector>
#include<queue>
#include<map>
#include<set>
#include<stack>
#include<cstdlib>
#include<string>
#include<bitset>
#include<iomanip>
#include<deque>
#include<utility>
#define INF 1000000000
#define fi first
#define se second
#define N 1000005
#define P 1000000007
#define debug(x) cerr<<#x<<"="<<x<<endl
#define MP(x,y) make_pair(x,y)
using namespace std;
typedef long long LL;
typedef pair<int,int> pii;
int c[N],now,sum,a[N],b[N],ans[N],nxt[N],n;
map<int,int> vis,pre;
vector<pii> Q[N];

void Add(int x,int w)
{
    for(;x<=n;x+=x&-x)
        c[x]^=w;
}

int Get(int x)
{
    int s=0;
    for(;x;x-=x&-x)
        s^=c[x];
    return s;
}

int main()
{
    int i,m,ql,qr,j;
    freopen("xor.in","r",stdin);
    freopen("xor.out","w",stdout);
    cin>>n;
    now=0;
    for(i=1;i<=n;i++)
    {
        scanf("%d",&a[i]);
        vis[a[i]]++;
        nxt[pre[a[i]]]=i;
        pre[a[i]]=i;
        if(vis[a[i]]>1)
            now^=a[i];
        b[i]=now;
        //debug(b[i]);
    }
    cin>>m;
    for(i=1;i<=m;i++)
    {
        scanf("%d%d",&ql,&qr);
        Q[ql].push_back(MP(qr,i));
    }
    for(i=1;i<=n;i++)
    {
        //debug(sum);
        for(j=0;j<Q[i].size();j++)
            ans[Q[i][j].se]=Get(Q[i][j].fi)^b[Q[i][j].fi];
        ql=nxt[i];
        if(ql)
        {
            sum^=a[i];
            Add(ql,a[i]);
        }
    }
    for(i=1;i<=m;i++)
        printf("%d\n",ans[i]);
    return 0;
}

总结

期望得分:100 + 55 + 80 = 235

实际得分:100 + 55 + 80 = 235

暴力没挂真的感动。越来越菜了

一言

那时我怎么都想不到,原来也有这一天,念及你,竟既无风雨也无晴。 ——我亦飘零久

首页 上一页 1 2 3 下一页 尾页 3/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇PTA 下一篇根据sockfd获取TCP连接本地地址以..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目