BZOJ2844 albus就是要第一个出场
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就是要第一个出场相关推荐
- BZOJ2844: albus就是要第一个出场(线性基)
Time Limit: 6 Sec Memory Limit: 128 MB Submit: 2054 Solved: 850 [Submit][Status][Discuss] Descript ...
- [BZOJ2844]albus就是要第一个出场(线性基)
题目: 我是超链接 题解: 先不考虑重复数字的问题,如果要求数字Q的出现位置的话,首先一个比较直观的想法是,如果能求出这样一组基底,它从小到大排序以后可以满足:设只选i向量构造出来的数字为R,那么1. ...
- bzoj2844 albus就是要第一个出场(线性基【询问排名)
题目链接 分析: 这道题是hdu3949的逆运算(可能题面有点难懂) 既然我们能够知道排名是第k的数是多少 就可以直接二分,变成判定性问题 当然,这道题还有其他解法: 因为是子集异或和,可以考虑用线性 ...
- 【bzoj2844 albus就是要第一个出场】
题意:给定一个n个数的集合S和一个数x,求x在S的2n2n个子集从小到大的异或和序列中最早出现的位置 根据性质每一个数字出现的次数是相同的都是2^(n-cnt)个,cnt是线性基中元素得个数 #inc ...
- [BZOJ2844]albus就是要第一个出场
题目 传送门 to BZOJ 传送门 to VJ 思路 看到异或,想到线性基.再仔细观察一下,好像每个元素出现的次数都是一样的耶! 我们有两种证明方法.其一是,考虑某个异或和出现次数超过一的原因:⨁c ...
- [BZOJ 2844] albus就是要第一个出场
2844: albus就是要第一个出场 Time Limit: 6 Sec Memory Limit: 128 MB Submit: 2316 Solved: 964 [Submit][Statu ...
- bzoj 2844: albus就是要第一个出场(线性基)
2844: albus就是要第一个出场 Time Limit: 6 Sec Memory Limit: 128 MB Submit: 1635 Solved: 680 [Submit][Statu ...
- 2844: albus就是要第一个出场
2844: albus就是要第一个出场 链接 分析: 和HDU3949差不多互逆,这里需要加上相同的数. 结论:所有数任意异或,构成的数出现一样的次数,次数为$2^{n-cnt}$,cnt为线性基的大 ...
- 【BZOJ 2844】 albus就是要第一个出场
2844: albus就是要第一个出场 Time Limit: 6 Sec Memory Limit: 128 MB Submit: 436 Solved: 190 [Submit][Status ...
最新文章
- scala 自带json_scala中复杂对象转JSON和解析的方法
- java网络编程之TCP通讯
- sql如何遍历几百万的表_Oracle PL/SQL调优技巧分享
- python 下标 遍历列表_python中的数据结构与算法(1):列表、元组与字符串
- hashmap value占用空间大小_求比HashMap占用内存少的查找方法
- php获取今天是几号,php 获取今日、昨日、上周、本月的起始时间戳和结束时间戳以及当月共有多少天...
- 加速 VR 渲染地狱难度进阶篇:降低图形 API 调用次数
- 【Python】【Flask】
- 颜色表及html代码
- JavaFX 2中的PopupMenu
- python位运算符_NumPy按位运算符解析和实例详解
- Internet Explorer 7 功能
- shell 截取某个字符串之后的内容
- 2012.5.4号--关于125k(简易读卡和低频唤醒)
- layui jquery innerHTML 无效
- 是时候激活你的批判性思维了
- GMP认证计算机化系统验证
- win10硬盘分区怎么分
- CLIP改进工作串讲(上)
- 共享充电,是雪中送炭还是暗藏危险?——恶意充电宝实验
热门文章
- java统计一个字符串中每个字符出现的次数_剑指offer算法题054:字符流中第一个不重复的字符...
- Error assembling WAR: webxml attribute is required (or pre-existing WEB-INF/web.xml
- linux-shell命令之rm(remove)【删除文件或目录】
- 资源 | Deeplearning.ai课程与笔记汇总
- 【Attention】Visual Attention Network
- 5g与edge ai_使用OpenVINO部署AI Edge应用
- rust面向对象_面向初学者的Rust操作员综合教程
- 变异函数 python_使用Python进行变异测试
- 苏宁张近东和富士康郭台铭为什么要抛售阿里巴巴股票?
- 1000万存在银行,一年的利息够日常生活费吗?