首页 > 其他分享 >G63 线性基 异或和的方案数 P3857 [TJOI2008] 彩灯

G63 线性基 异或和的方案数 P3857 [TJOI2008] 彩灯

时间:2024-07-03 21:55:00浏览次数:24  
标签:P3857 int 异或 彩灯 TJOI2008 G63

视频链接:G63 线性基 异或和的方案数 P3857 [TJOI2008] 彩灯_哔哩哔哩_bilibili

 

 

P3857 [TJOI2008] 彩灯 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

// 线性基 O(55*n)
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;

#define LL long long
const int N=60,mod=2008;
int n,m,k;
LL a[N];

void gauss(){
  for(int i=55;i>=0;i--){
    for(int j=k;j<m;j++)
      if(a[j]>>i&1){swap(a[j],a[k]); break;}
    if((a[k]>>i&1)==0) continue;
    for(int j=0;j<m;j++)
      if(j!=k&&(a[j]>>i&1)) a[j]^=a[k];
    k++; if(k==m) break;
  }
}
int main(){
  scanf("%d%d",&n,&m);
  for(int i=0;i<m;i++){
    char s[N]; scanf("%s",s);
    LL x=0;
    for(int j=0;j<strlen(s);j++)
      x+=(1ll<<(n-j))*(s[j]=='O');
    a[i]=x;
  }
  gauss();
  printf("%lld\n",(1ll<<k)%mod);
}

 

标签:P3857,int,异或,彩灯,TJOI2008,G63
From: https://www.cnblogs.com/dx123/p/18277101

相关文章

  • 小B的异或
    描述小B收到了一串数字,其中包含n个数字。寄件人想知道这n个数的异或结果,但小B并不会求,就把这个问题转交给你。但他为了使你求得的更方便,于是运用魔法把这n个数都变成了 1 。现在,你需要求出这 n 个 1 异或后的结果。关于异或,下表为 a 与 b 的异或结果:aba⊕b1011......
  • Codeforces Round 950 (Div. 3)G. Yasya and the Mysterious Tree(字典树处理区间异或
    Problem-G-Codeforces存个字典树板子。1#include<bits/stdc++.h>23usingi64=longlong;45constexprintN=1E7;67inttrie[N][2];8intcnt[N][2];910inttot=0;11intnewNode(){12intx=++tot;13trie......
  • 【leetcode 找出第 K 大的异或坐标值]
    前缀和+最小堆importjava.util.PriorityQueue;classSolution{publicstaticvoidmain(String[]args){Solutionsolution=newSolution();solution.kthLargestValue(newint[][]{{5,2},{1,6}},4);}......
  • 【找出第 K 大的异或坐标值】python
    4层循环暴力超时 classSolution:defkthLargestValue(self,matrix:List[List[int]],k:int)->int:nums=[]forainrange(len(matrix)):forbinrange(len(matrix[0])):num=0foriinrange(......
  • 或、与、非、异或用途
    一、关键词**|(或)、&(与)、~(非)和^(异或)**符号描述运算规则&与两个位都为1时,结果才为1或或两个位都为0时,结果才为0^非两个位相同为0,相异为1~左移0变1,1变0<<左移各二进位全部左移若干位,高位丢弃,低位补0>>右移各二进位全部右移若干位,对无符号数......
  • F. 十六进制的异或
    原题链接题解1.异或规则为不进位加法,可以看作位运算2.查找的时间复杂度必不能高,\(log_{16}{10^{18}}·2e5\)2.所以,补齐前缀0,这样就能用字典树了code#include<bits/stdc++.h>usingnamespacestd;#definelllonglong//Trie数组的定义,大小为2000005*16,适应十六进制......
  • [ISITDTU 2019]EasyPHP RCE异或限制
    解决一个一直以来的问题,RCE的异或绕过问题。先了解下奇技淫巧吧-->https://www.leavesongs.com/PENETRATION/webshell-without-alphanum.html接下来说说今天的问题,在做异或问题是发现许多payload都是(xxxxx)^(%ff....),这都是怎么来的呢。现在说说吧,就比如拿'_'号来说,实质上异......
  • Acwing 143. 最大异或对
    题意:n个数,求任意两个数的最大异或值。思路:01前缀树总结:确定了处理01最大异或问题时,采用先bitset<32>(x).to_string()再插入和计算的方式。32位有符号整数的最大值应该是(1<<31)-1,而不是1<<32位,1<<32位代表这个1在第33位上。但是给bitset开的时候,要开到32位。此时最高位......
  • 异或
    这道题目的思路比较好由于\(1\)到\(n\)的路径很多,我们猜想,任意选一条路径可以通过某种异或运算来得到最优解证明:假设我们选出的路径不是最优路径,那么对于另一条最优路径,一定可以通过我们选出的路径异或上若干个简单环来达到。举个例子说明假设我们选出的是直线段\(AE\),最优的......
  • 异或与区间加题解
    异或与区间加题解简要题意给定\(n,m,K,a_{1...n}\),和\(m\)个三元组\((x_i,y_i,z_i)\),定义\(calc(l,r)=a_l\bigoplusa_{l+1}\bigoplus...\bigoplusa_r\)。对于每个三元组\((x,y,z)\),对所有满足\(x\lel\ler\ley\,\calc(l,r)=K\)的区间\((l,r)\)内的每个数\(b......