[关闭]
@Junlier 2018-08-19T22:25:20.000000Z 字数 2239 阅读 1652

线性基学习

数学方法——线性基
先膜一下mona,感谢他生动的讲解……Orz
然后
这哥们讲的不错

我的板子

第一个

luoguP3812模板

  1. #include<iostream>
  2. #include<cstdlib>
  3. #include<cstdio>
  4. #include<cmath>
  5. #include<cstring>
  6. #include<iomanip>
  7. #include<algorithm>
  8. #include<ctime>
  9. #include<queue>
  10. #include<stack>
  11. #include<vector>
  12. #define rg register
  13. #define il inline
  14. #define lst long long
  15. #define ldb long double
  16. #define N 55
  17. using namespace std;
  18. const int Inf=1e9;
  19. int n;
  20. lst p[N];
  21. il lst read()
  22. {
  23. rg lst s=0,m=0;rg char ch=getchar();
  24. while(ch<'0'||ch>'9'){if(ch=='-')m=1;ch=getchar();}
  25. while(ch>='0'&&ch<='9')s=(s<<3)+(s<<1)+(ch^48),ch=getchar();
  26. return m?-s:s;
  27. }
  28. il void Insert(rg lst x)
  29. {
  30. for(rg int i=50;i>=0;--i)
  31. {
  32. if(!(x&(1ll<<i)))continue;
  33. if(!p[i])p[i]=x;
  34. x^=p[i];
  35. }
  36. }
  37. il lst Query(rg lst x)
  38. {
  39. for(rg int i=50;i>=0;--i)
  40. x=max(x,x^p[i]);
  41. return x;
  42. }
  43. int main()
  44. {
  45. n=read();
  46. for(rg int i=1;i<=n;++i)
  47. Insert(read());
  48. printf("%lld\n",Query(0));
  49. return 0;
  50. }

第二个……

luogu彩灯

  1. #include<iostream>
  2. #include<cstdlib>
  3. #include<cstdio>
  4. #include<cmath>
  5. #include<cstring>
  6. #include<iomanip>
  7. #include<algorithm>
  8. #include<ctime>
  9. #include<queue>
  10. #include<stack>
  11. #include<vector>
  12. #define rg register
  13. #define il inline
  14. #define lst long long
  15. #define ldb long double
  16. #define N 55
  17. #define mod 2008
  18. using namespace std;
  19. const int Inf=1e9;
  20. int n,m,ans;
  21. lst p[N];
  22. char light[N];
  23. il int read()
  24. {
  25. rg int s=0,m=0;rg char ch=getchar();
  26. while(ch<'0'||ch>'9'){if(ch=='-')m=1;ch=getchar();}
  27. while(ch>='0'&&ch<='9')s=(s<<3)+(s<<1)+(ch^48),ch=getchar();
  28. return m?-s:s;
  29. }
  30. il void Insert(rg lst x)
  31. {
  32. for(rg int i=50;i>=0;--i)
  33. {
  34. if(!(x&(1ll<<i)))continue;
  35. if(!p[i])p[i]=x;
  36. x^=p[i];
  37. }
  38. }
  39. il lst qpow(rg int a,rg int b)
  40. {
  41. rg lst base=a,res=1;
  42. while(b)
  43. {
  44. if(b&1)res=(res*base)%mod;
  45. base=(base*base)%mod;
  46. b>>=1;
  47. }
  48. return res;
  49. }
  50. int main()
  51. {
  52. n=read(),m=read();
  53. for(rg int i=1;i<=m;++i)
  54. {
  55. scanf("%s",light);
  56. rg lst ss=0;
  57. for(rg int j=0;j<n;++j)
  58. ss=ss*2+(light[j]=='O'?1:0);
  59. Insert(ss);
  60. }
  61. for(rg int i=50;i>=0;--i)
  62. if(p[i])ans++;
  63. printf("%lld\n",qpow(2,ans));
  64. return 0;
  65. }

题单(没错,xzy的)

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注