题目描述:

vjudge

题解:

高消(线性基)模$7$。

可以算是板子了。

具体见代码:

  1. #include<cstdio>
  2. #include<cstring>
  3. #include<algorithm>
  4. using namespace std;
  5. const int N = ;
  6. const int MOD = ;
  7. template<typename T>
  8. inline void read(T&x)
  9. {
  10. T f = ,c = ;char ch=getchar();
  11. while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
  12. while(ch>=''&&ch<=''){c=c*+ch-'';ch=getchar();}
  13. x = f*c;
  14. }
  15. int n,m;
  16. char op[],s0[];
  17. int gtdt()
  18. {
  19. scanf("%s",s0+);
  20. if(s0[]=='S'&&s0[]=='u')return ;
  21. if(s0[]=='M')return ;
  22. if(s0[]=='T'&&s0[]=='u')return ;
  23. if(s0[]=='W')return ;
  24. if(s0[]=='T'&&s0[]=='h')return ;
  25. if(s0[]=='F')return ;
  26. if(s0[]=='S'&&s0[]=='a')return ;
  27. return -;
  28. }
  29. void print(int x)
  30. {
  31. if(x==)puts("Sunday");
  32. if(x==)puts("Monday");
  33. if(x==)puts("Tuesday");
  34. if(x==)puts("Wednesday");
  35. if(x==)puts("Thursday");
  36. if(x==)puts("Friday");
  37. if(x==)puts("Saturday");
  38. }
  39. int Inv[]={,,,,,,};
  40. struct Vec
  41. {
  42. int a[N];
  43. void rd(){for(int i=;i<=m;i++)read(a[i]),a[i]%=MOD;}
  44. }v0;
  45. bool fg=;
  46. struct lb
  47. {
  48. Vec v[N];int vl[N];
  49. bool check(Vec x)
  50. {
  51. for(int i=;i<=m;i++)if(x.a[i])
  52. {
  53. if(!v[i].a[i])return ;
  54. for(int j=i,now=Inv[x.a[i]];j<=m;j++)x.a[j]=x.a[j]*now%MOD;
  55. for(int j=i;j<=m;j++)x.a[j]=(x.a[j]-v[i].a[j]+MOD)%MOD;
  56. }
  57. return ;
  58. }
  59. int query(Vec x)
  60. {
  61. int r1 = ,r2 = ,r = ;
  62. for(int i=;i<=m;i++)if(x.a[i])
  63. {
  64. if(!v[i].a[i])return -;
  65. r=x.a[i];r2=r2*r%MOD,r1=r1*Inv[r]%MOD;
  66. for(int j=i,now=Inv[x.a[i]];j<=m;j++)x.a[j]=x.a[j]*now%MOD;
  67. r1=(r1+vl[i])%MOD;
  68. for(int j=i;j<=m;j++)x.a[j]=(x.a[j]-v[i].a[j]+MOD)%MOD;
  69. }
  70. return r1*r2%MOD;
  71. }
  72. void push(Vec x,int vl0)
  73. {
  74. for(int i=;i<=m;i++)if(x.a[i])
  75. {
  76. vl0=vl0*Inv[x.a[i]]%MOD;
  77. for(int j=i,now=Inv[x.a[i]];j<=m;j++)x.a[j]=x.a[j]*now%MOD;
  78. if(!v[i].a[i]){v[i]=x,vl[i]=vl0;break;}
  79. vl0=(vl0-vl[i]+MOD)%MOD;
  80. for(int j=i;j<=m;j++)x.a[j]=(x.a[j]+MOD-v[i].a[j])%MOD;
  81. }
  82. }
  83. }tr;
  84. int main()
  85. {
  86. // freopen("s.in","r",stdin);
  87. // freopen("s.out","w",stdout);
  88. read(n);
  89. for(int i=,w;i<=n;i++)
  90. {
  91. scanf("%s",op+);
  92. if(op[]=='A')m++;
  93. else if(op[]=='L')
  94. {
  95. v0.rd();w=(MOD-gtdt()+gtdt())%MOD;
  96. if(!tr.check(v0))
  97. {
  98. if(tr.query(v0)!=w)fg=;
  99. }else tr.push(v0,w);
  100. }else
  101. {
  102. v0.rd();w=gtdt();
  103. if(fg)puts("Already crazy");
  104. else if(tr.check(v0))puts("Don't know");
  105. else print((w+tr.query(v0))%MOD);
  106. }
  107. }
  108. return ;
  109. }

URAL1561 Winnie the Pooh的更多相关文章

  1. [001] winnie the pooh - 读后记

    winnie the pooh 我是在伍君仪透析英语视频培训班,获得这本书的,PDF格式的(排版不是很好,和当当上的相比有部分章节缺失) 这是我第一本采用透析法读完的英文书. 今天(2015年10月2 ...

  2. Python自然语言处理学习笔记(69)

    http://www.cnblogs.com/yuxc/archive/2012/02/09/2344474.html Chapter8    Analyzing Sentence Structure ...

  3. Python推荐系统库--Surprise实战

    一.使用movieLens数据集 from surprise import KNNBasic, SVD from surprise import Dataset from surprise impor ...

  4. Python 装饰器入门(上)

    翻译前想说的话: 这是一篇介绍python装饰器的文章,对比之前看到的类似介绍装饰器的文章,个人认为无人可出其右,文章由浅到深,由函数介绍到装饰器的高级应用,每个介绍必有例子说明.文章太长,看完原文后 ...

  5. Hadoop案例(十一)MapReduce的API使用

    一学生成绩---增强版 数据信息 computer,huangxiaoming,,,,,,, computer,xuzheng,,,,, computer,huangbo,,,, english,zh ...

  6. Hadoop学习之路(二十六)MapReduce的API使用(三)

    影评案例 数据及需求 数据格式 movies.dat 3884条数据 1::Toy Story (1995)::Animation|Children's|Comedy 2::Jumanji (1995 ...

  7. Python3中文教程

    搜索 此文档来源自网络 安装 PYTHON❝ Tempora mutantur nos et mutamur in illis. (时光流转,吾等亦随之而变.) ❞ — 古罗马谚语 深入欢迎来到 Py ...

  8. 五、Pandas玩转数据

    Series的简单运算 import numpy as np import pandas as pd s1=pd.Series([1,2,3],index=['A','B','C']) print(s ...

  9. C++学习笔记13-类继承

    1.  类模板的 static 成员[不同于C#中的static] 类模板能够像随意其它类一样声明static 成员.下面代码: template <class T> class Foo ...

随机推荐

  1. 浅谈volatile关键字

    volatile是一种轻量级的同步机制.它可以保证内存可见性以及防止指令重排序,但是不保证原子性 volatile和JMM机制是不可分割的,在谈volatile的时候有必要先了解以下JMM JMM(J ...

  2. ZK的选举算法

    一.前言 前面学习了Zookeeper服务端的相关细节,其中对于集群启动而言,很重要的一部分就是Leader选举,接着就开始深入学习Leader选举. 二.Leader选举 2.1 Leader选举概 ...

  3. android 一些常用权限

    <!-- 网络访问权限 --> <uses-permission android:name="android.permission.INTERNET" /> ...

  4. Python开发 第02课 Python 数据类型

    1.Python 变量类型 变量存储在内存中的值.这就意味着在创建变量时会在内存中开辟一个空间.基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中.因此,变量可以指定不同的数据 ...

  5. 03.Javascript——入门一些方法记录之Map和Set

    JavaScript的默认对象表示方式{}可以视为其他语言中的Map或Dictionary的数据结构,即一组键值对. 但是JavaScript的对象有个小问题,就是键必须是字符串.但实际上Number ...

  6. Nginx 配置https 开启ssl 同时支持http

    server { listen ; listen 443 ssl; server_name default; index index.html index.php; root /www/html; a ...

  7. STL使用迭代器逆向删除

    网上有很多这种例子: void erase(vector<int> &v) { for(vector<int>::reverse_iterator ri=v.rbegi ...

  8. WebService学习之旅(四)Apache Axis2的安装

    一.Axis2简介 Axis2是目前使用较多的WebService引擎,它是Axis1.x的升级版本,不仅支持SOAP1.1和SOAP1.2,而且也提供了对REST风格WebService的支持. A ...

  9. codevs 1267 老鼠的旅行 2012年CCC加拿大高中生信息学奥赛

    时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题目描述 Description You are a mouse that lives in a cage in ...

  10. vertx从入门到精通

    1.Vert.x安装指南 http://blog.csdn.net/sdyy321/article/details/38926005 http://blog.csdn.net/chszs/articl ...