博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
URAL1561 Winnie the Pooh
阅读量:5112 次
发布时间:2019-06-13

本文共 2801 字,大约阅读时间需要 9 分钟。

题目描述:

题解:

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

可以算是板子了。

具体见代码:

#include
#include
#include
using namespace std;const int N = 1050;const int MOD = 7;template
inline void read(T&x){ T f = 1,c = 0;char ch=getchar(); while(ch<'0'||ch>'9'){
if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){c=c*10+ch-'0';ch=getchar();} x = f*c;}int n,m;char op[20],s0[20];int gtdt(){ scanf("%s",s0+1); if(s0[1]=='S'&&s0[2]=='u')return 0; if(s0[1]=='M')return 1; if(s0[1]=='T'&&s0[2]=='u')return 2; if(s0[1]=='W')return 3; if(s0[1]=='T'&&s0[2]=='h')return 4; if(s0[1]=='F')return 5; if(s0[1]=='S'&&s0[2]=='a')return 6; return -1;}void print(int x){ if(x==0)puts("Sunday"); if(x==1)puts("Monday"); if(x==2)puts("Tuesday"); if(x==3)puts("Wednesday"); if(x==4)puts("Thursday"); if(x==5)puts("Friday"); if(x==6)puts("Saturday");}int Inv[7]={
0,1,4,5,2,3,6};struct Vec{ int a[N]; void rd(){
for(int i=1;i<=m;i++)read(a[i]),a[i]%=MOD;}}v0;bool fg=0;struct lb{ Vec v[N];int vl[N]; bool check(Vec x) { for(int i=1;i<=m;i++)if(x.a[i]) { if(!v[i].a[i])return 1; for(int j=i,now=Inv[x.a[i]];j<=m;j++)x.a[j]=x.a[j]*now%MOD; for(int j=i;j<=m;j++)x.a[j]=(x.a[j]-v[i].a[j]+MOD)%MOD; } return 0; } int query(Vec x) { int r1 = 0,r2 = 1,r = 0; for(int i=1;i<=m;i++)if(x.a[i]) { if(!v[i].a[i])return -1; r=x.a[i];r2=r2*r%MOD,r1=r1*Inv[r]%MOD; for(int j=i,now=Inv[x.a[i]];j<=m;j++)x.a[j]=x.a[j]*now%MOD; r1=(r1+vl[i])%MOD; for(int j=i;j<=m;j++)x.a[j]=(x.a[j]-v[i].a[j]+MOD)%MOD; } return r1*r2%MOD; } void push(Vec x,int vl0) { for(int i=1;i<=m;i++)if(x.a[i]) { vl0=vl0*Inv[x.a[i]]%MOD; for(int j=i,now=Inv[x.a[i]];j<=m;j++)x.a[j]=x.a[j]*now%MOD; if(!v[i].a[i]){v[i]=x,vl[i]=vl0;break;} vl0=(vl0-vl[i]+MOD)%MOD; for(int j=i;j<=m;j++)x.a[j]=(x.a[j]+MOD-v[i].a[j])%MOD; } }}tr;int main(){ // freopen("s.in","r",stdin);// freopen("s.out","w",stdout); read(n); for(int i=1,w;i<=n;i++) { scanf("%s",op+1); if(op[1]=='A')m++; else if(op[1]=='L') { v0.rd();w=(MOD-gtdt()+gtdt())%MOD; if(!tr.check(v0)) { if(tr.query(v0)!=w)fg=1; }else tr.push(v0,w); }else { v0.rd();w=gtdt(); if(fg)puts("Already crazy"); else if(tr.check(v0))puts("Don't know"); else print((w+tr.query(v0))%MOD); } } return 0;}
View Code

 

转载于:https://www.cnblogs.com/LiGuanlin1124/p/10867900.html

你可能感兴趣的文章
一句话说清分布式锁,进程锁,线程锁
查看>>
python常用函数
查看>>
FastDFS使用
查看>>
服务器解析请求的基本原理
查看>>
[HDU3683 Gomoku]
查看>>
【工具相关】iOS-Reveal的使用
查看>>
数据库3
查看>>
存储分类
查看>>
下一代操作系统与软件
查看>>
【iOS越狱开发】如何将应用打包成.ipa文件
查看>>
[NOIP2013提高组] CODEVS 3287 火车运输(MST+LCA)
查看>>
Yii2 Lesson - 03 Forms in Yii
查看>>
Python IO模型
查看>>
Ugly Windows
查看>>
DataGridView的行的字体颜色变化
查看>>
Java再学习——关于ConcurrentHashMap
查看>>
如何处理Win10电脑黑屏后出现代码0xc0000225的错误?
查看>>
局域网内手机访问电脑网站注意几点
查看>>
[Serializable]的应用--注册码的生成,加密和验证
查看>>
Day19内容回顾
查看>>