AC通道:http://www.lydsy.com/JudgeOnline/problem.php?id=2844

这题貌似HDU上有一道差不多的题,不过我没做过,也就没管了。

首先讲一个线性基的东西,大概就是这样:

然后就是一个什么性质:S异或起来会出现重复,但是重复了多少次呢?

若我构造一个大小为k的线性基,那么重复了2^(n-k)次。

然后构造出需要的数,就每次找到能消去位数的地方消去就好。

#include<cstdio>
#include<cstring>
#include<algorithm>using namespace std;const int maxn=100010;
const int mod=10086;inline int in(){int x=0;char ch=getchar();while(ch<'0' || ch>'9') ch=getchar();while(ch>='0' && ch<='9') x=10*x+ch-'0',ch=getchar();return x;
}int n,m,k;
int a[maxn],b[maxn];void gauss(){k=n;for(int i=1;i<=n;i++){for(int j=i+1;j<=n;j++)if(a[j]>a[i]) swap(a[i],a[j]);if(!a[i]){k=i-1;break;}for(int j=30;j>=0;j--)if((a[i]>>j)&1){b[i]=j;for(int x=1;x<=n;x++)if(x!=i && (a[x]>>j)&1)a[x]^=a[i];break;}}
}   inline int power(int x,int y){int t=1;for(;y;y>>=1,x=x*x%mod)if(y&1) t=t*x%mod;return t;
}int main(){
#ifndef ONLINE_JUDGEfreopen("2844.in","r",stdin);freopen("2844.out","w",stdout);
#endifn=in();for(int i=1;i<=n;i++) a[i]=in();m=in();gauss();int ans=1;for(int i=1;i<=k;i++)if((m>>b[i])&1){m^=a[i];ans=(ans+power(2,n-i))%mod;}printf("%d",ans);    return 0;
}

View Code

转载于:https://www.cnblogs.com/Robert-Yuan/p/5231142.html

BZOJ2844 albus就是要第一个出场相关推荐

  1. BZOJ2844: albus就是要第一个出场(线性基)

    Time Limit: 6 Sec  Memory Limit: 128 MB Submit: 2054  Solved: 850 [Submit][Status][Discuss] Descript ...

  2. [BZOJ2844]albus就是要第一个出场(线性基)

    题目: 我是超链接 题解: 先不考虑重复数字的问题,如果要求数字Q的出现位置的话,首先一个比较直观的想法是,如果能求出这样一组基底,它从小到大排序以后可以满足:设只选i向量构造出来的数字为R,那么1. ...

  3. bzoj2844 albus就是要第一个出场(线性基【询问排名)

    题目链接 分析: 这道题是hdu3949的逆运算(可能题面有点难懂) 既然我们能够知道排名是第k的数是多少 就可以直接二分,变成判定性问题 当然,这道题还有其他解法: 因为是子集异或和,可以考虑用线性 ...

  4. 【bzoj2844 albus就是要第一个出场】

    题意:给定一个n个数的集合S和一个数x,求x在S的2n2n个子集从小到大的异或和序列中最早出现的位置 根据性质每一个数字出现的次数是相同的都是2^(n-cnt)个,cnt是线性基中元素得个数 #inc ...

  5. [BZOJ2844]albus就是要第一个出场

    题目 传送门 to BZOJ 传送门 to VJ 思路 看到异或,想到线性基.再仔细观察一下,好像每个元素出现的次数都是一样的耶! 我们有两种证明方法.其一是,考虑某个异或和出现次数超过一的原因:⨁c ...

  6. [BZOJ 2844] albus就是要第一个出场

    2844: albus就是要第一个出场 Time Limit: 6 Sec  Memory Limit: 128 MB Submit: 2316  Solved: 964 [Submit][Statu ...

  7. bzoj 2844: albus就是要第一个出场(线性基)

    2844: albus就是要第一个出场 Time Limit: 6 Sec  Memory Limit: 128 MB Submit: 1635  Solved: 680 [Submit][Statu ...

  8. 2844: albus就是要第一个出场

    2844: albus就是要第一个出场 链接 分析: 和HDU3949差不多互逆,这里需要加上相同的数. 结论:所有数任意异或,构成的数出现一样的次数,次数为$2^{n-cnt}$,cnt为线性基的大 ...

  9. 【BZOJ 2844】 albus就是要第一个出场

    2844: albus就是要第一个出场 Time Limit: 6 Sec  Memory Limit: 128 MB Submit: 436  Solved: 190 [Submit][Status ...

最新文章

  1. scala 自带json_scala中复杂对象转JSON和解析的方法
  2. java网络编程之TCP通讯
  3. sql如何遍历几百万的表_Oracle PL/SQL调优技巧分享
  4. python 下标 遍历列表_python中的数据结构与算法(1):列表、元组与字符串
  5. hashmap value占用空间大小_求比HashMap占用内存少的查找方法
  6. php获取今天是几号,php 获取今日、昨日、上周、本月的起始时间戳和结束时间戳以及当月共有多少天...
  7. 加速 VR 渲染地狱难度进阶篇:降低图形 API 调用次数
  8. 【Python】【Flask】
  9. 颜色表及html代码
  10. JavaFX 2中的PopupMenu
  11. python位运算符_NumPy按位运算符解析和实例详解
  12. Internet Explorer 7 功能
  13. shell 截取某个字符串之后的内容
  14. 2012.5.4号--关于125k(简易读卡和低频唤醒)
  15. layui jquery innerHTML 无效
  16. 是时候激活你的批判性思维了
  17. GMP认证计算机化系统验证
  18. win10硬盘分区怎么分
  19. CLIP改进工作串讲(上)
  20. 共享充电,是雪中送炭还是暗藏危险?——恶意充电宝实验

热门文章

  1. java统计一个字符串中每个字符出现的次数_剑指offer算法题054:字符流中第一个不重复的字符...
  2. Error assembling WAR: webxml attribute is required (or pre-existing WEB-INF/web.xml
  3. linux-shell命令之rm(remove)【删除文件或目录】
  4. 资源 | Deeplearning.ai课程与笔记汇总
  5. 【Attention】Visual Attention Network
  6. 5g与edge ai_使用OpenVINO部署AI Edge应用
  7. rust面向对象_面向初学者的Rust操作员综合教程
  8. 变异函数 python_使用Python进行变异测试
  9. 苏宁张近东和富士康郭台铭为什么要抛售阿里巴巴股票?
  10. 1000万存在银行,一年的利息够日常生活费吗?