汕头市队赛SRM 20 T1魔法弹
T1
背景
“主角光环已经不能忍啦!”
被最强控制AP博丽灵梦虐了很长一段时间之后,众人决定联合反抗。
魂魄妖梦:“野怪好像被抢光了?”
十六夜咲夜:“没事,我们人多。”
然后当然是以失败告终了。
八云紫:“我们需要一个更强的法师!”
蕾米莉亚:“她的话应该就没问题了吧。”
帕秋莉就这样来到了这块大陆:“来试试我的新魔法。”
描述
帕秋莉的新魔法基于二进制异或运算进行伤害判定。
初始时,系统会生成一些数字。帕秋莉的魔法弹每次攻击,会从数字中挑出一些,将它们异或后作为此次的真实伤害值。作为完美主义者,帕秋莉要求自己任意两次攻击造成的伤害不得相等。那么在给定初始数字的情况下,求出帕秋莉能造成的最大伤害,这就是运营商的兼职程序员你的任务了。答案模1e9+7.
输入格式
第一行n,m,表示初始有n个数,每个数用长度为m的二进制串表示。
接下来n行每行一个二进制串表示数字。
输出格式
一个整数,帕秋莉能造成的最大伤害模1e9+7后的值。
样例输入
3 3
000
100
101
样例输出
10
数据范围与约定
- 对于20%的数据:
- 对于50%的数据:
- 对于100%的数据:
样例解释
初始数字是0、4、5,能由他们异或出来的数字集合是{0,1,4,5},答案为0+1+4+5=10
——————————————————————————————
这题其实是裸的线性基 推荐个博客吧
构造出基之后呢 一个数能否被xor出来关键在于能否用基构造出来
那么 我们单独考虑每一位对答案的贡献就可以辣
f[i][1]表示表示到第i位 这一位用基xor得到1的方案数
考虑当前位 如果是1 那么f[i][1]=f[i][0]=f[i][1]+f[i][0]
如果是0 f[i][1]*=2 f[i][0]*=2
然后就可以写辣 至于构造 其实bitse很好写的2333
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<bitset>
const int M=,mod=1e9+;
int read(){
int ans=,f=,c=getchar();
while(c<''||c>''){if(c=='-') f=-; c=getchar();}
while(c>=''&&c<=''){ans=ans*+(c-''); c=getchar();}
return ans*f;
}
int ans,n,m,mark[M];
char ch[M];
std::bitset<>f[],a[];
int dp[M][],ly[M];
void prepare(){ly[]=; for(int i=;i<=m;i++) ly[i]=ly[i-]*%mod;}
int main(){
n=read(); m=read();
prepare();
for(int i=;i<=n;i++){
scanf("%s",ch+);
for(int j=;j<=m;j++) f[i][j]=ch[j]-'';
}
for(int i=;i<=n;i++){
for(int j=;j<=m;j++)if(f[i][j]){
if(!mark[j]){a[j]=f[i]; mark[j]=; break;}
f[i]^=a[j];
}
}
for(int k=;k<=m;k++){
int f0=,f1=;
for(int i=;i<=m;i++)if(mark[i]){
if(a[i][k]) f0=f1=(f0+f1)%mod;
else f1=f1*%mod,f0=f0*%mod;
}
ans=(ans+1LL*ly[m-k]*f1%mod)%mod;
}printf("%d\n",ans);
return ;
}
汕头市队赛SRM 20 T1魔法弹的更多相关文章
- 汕头市队赛SRM 20 T2不净的圣杯
不净的圣杯 SRM 20 背景 作为一张BUG级别的卡,官方打算把它修改得人畜无害一些…… 虽然名字还没想好,但是能力大概是对敌方所有单位造成d点伤害,d为自己牌组中所有卡的编号的最大公约数.这无疑是 ...
- 汕头市队赛SRM 20 T3 灵魂觉醒
背景 自从芽衣.布洛妮娅相继灵魂觉醒之后,琪亚娜坐不住了.自己可是第一个入驻休伯利安号的啊!于是她打算去找德丽莎帮忙,为她安排了灵魂觉醒的相关课程. 第一天,第一节课. “实现灵魂觉醒之前,你需要先将 ...
- 汕头市队赛 SRM 07 D 天才麻将少女kpm
这道题放了很久还是回来补了 D 天才麻将少女KPM SRM 07 背景&&描述 天才麻将少女KPM立志要在日麻界闯出一番名堂. KPM上周叒打了n场麻将,但她这次又没控分,而且 ...
- 汕头市队赛 SRM 07 B 好玩的麻将
B 好玩的麻将 SRM 07 背景&&描述 天才麻将少女KPM立志要在日麻界闯出一番名堂. KPM上周又打了n场麻将,又控了分使得自己的排名是1..n的一个排列. 但她 ...
- 汕头市队赛 SRM 06 C 秀恩爱
C 秀恩爱 SRM 06 背景&&描述 KPM坐在直升机上俯瞰小渔村景象. 渔村可看作二维平面,密密麻麻地到处都是单身狗,KPM当前所在坐标为(sx,s ...
- 汕头市队赛 SRM 06 A 撕书
A 撕书 SRM 06 背景&&描述 游行寺汀正在杀书. 书总共有n页,每页都可以看作是一个小写英文字母,所以我们可以把书看成长度为n的字符串s. 琉璃 ...
- 汕头市队赛 SRM 06 B 起伏的排名
B 起伏的排名 SRM 06 背景&&描述 天才麻将少女KPM立志要在日麻界闯出一番名堂. 在上个星期她打了n场麻将,每场麻将都有n名玩家.KPM自然记得自己的n次排名. ...
- 汕头市队赛 SRM 08 B
B-3 SRM 08 描述 给长度为 n 的数列 A 和长度为 m 的数列 B,问有多少长度为 m 的数列 C 满足 输入格式 第一行俩整数 n 和 m 第二行 n 个整数 ,表示数列 A 第三行 m ...
- 汕头市队赛 SRM 08 C
C-3 SRM 08 描述 给一个图,n 个点 m 条双向边,每条边有其长度.n 个点中有 k 个是特殊点,问任意两个特殊点的最短路是多少. 输入格式 第一行三个整数 n m k 第二行 k 个整数 ...
随机推荐
- anaconda安装不存在的包
Anaconda作为一个工具包集成管理工具,下载python工具包是很方便的,直接敲: conda install package_name 1 但是有时候安装一个工具包(如skimage)的时候,在 ...
- 主流 Kubernetes 发行版梳理
2014 年,Kubernetes 作为内部 Google orchestrator Borg 开源版本推出,目前已是最成功和发展最快的 IT 基础架构项目之一.2018 年,Kubernetes 已 ...
- 7款很棒的 HTML5 视频播放器
做个连接:http://www.cnblogs.com/lhb25/archive/2011/06/27/7-great-html-5-video-player-scripts.html
- 第一章 Spring 概述
Spring框架的生态,已经成了JavaWeb开发的事实标准 以IOC与AOP为基础,提供了一整套JavaWeb的开发解决方案 在需要引入功能前,先看看有没有Spring的实现,或者其他框架,看看能否 ...
- 【bzoj5108】[CodePlus2017]可做题 拆位+乱搞
题目描述 给出一个长度为 $m$ 的序列 $a$ ,编号为 $a_1\sim a_m$,其中 $n$ 个位置的数已经确定,剩下的位置的数可以任意指定.现在令 $b$ 表示 $a$ 的前缀异或和,求 $ ...
- Codeforces 1025D(区间dp)
容易想到设f[i][j][k]为i~j区间以k为根是否能构成bst.这样是O(n4)的.考虑将状态改为f[i][j][0/1]表示i~j区间以i-1/j+1为根能否构成bst.显然如果是i-1作为根的 ...
- NOIP2002 提高组
[NOIP2002] 提高组 T1.均分纸牌 算法:贪心(模拟) [分析]: 1.简化 2.过滤 3.辩证法 详见课件的例7 还有一种类似的思路是:求出平均值后,i←1 to n-1扫描,若a[i] ...
- BZOJ1208:[HNOI2004]宠物收养所——题解
http://www.lydsy.com/JudgeOnline/problem.php?id=1208 Description 最近,阿Q开了一间宠物收养所.收养所提供两种服务:收养被主人遗弃的宠物 ...
- SPOJ1825/FTOUR2:Free tour II——包看得懂/看不懂题解
http://www.spoj.com/problems/FTOUR2/en/ 题目大意:给一棵黑白染色的树,求边权和最大且经过黑点不超过K的路径. ———————————————————— 前排膜拜 ...
- LOJ6388:[THUPC2018]赛艇——题解
https://loj.ac/problem/6388 如果你做过BZOJ5217:[Lydsy2017省队十连测]航海舰队的话,那么恭喜你,这道题就是大水题. 如果你做过BZOJ4259:残缺的字符 ...