Widget Factory

题意:输入n,m,n代表n种工具,接下来m行每行输入k,start,end,k种类型的工具开始生产的时间以及结束的时间,接下来一行k个数字表示k种工具;生产一种工具最少3天,最多9天

问每种类型的工具生产几天,无解输出Inconsistent data.,多组解输出Multiple solutions,唯一解输出各需要几天。

假设生产一个i类型的工具需要xi天则

a00*x0+a01*x1+···+a0n-1*xn-1=b1(mod7)

a10*x0+a11*x1+···+a1n-1*xn-1=b2(mod7)

···

#include<iostream>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<cstdio>
#include<string>
using namespace std;
typedef long long ll;
const int mod=7;
const int maxn=400;
int a[maxn][maxn];//增广矩阵
int x[maxn];//解集
int equ,var;//equ个方程var个未知数
int gcd(int a,int b)
{if(b==0)return a;return gcd(b,a%b);
}
int lcm(int a,int b)
{return a/gcd(a,b)*b;
}
int powmod(int a,int b,int c)
{a=a%c;int res=1;while(b){if(b&1)res=(res*a)%c;a=a*a%c;b>>=1;}return res;
}
/*int exgcd(int a,int b,int &x,int &y)//扩展欧几里得求逆元
{if(b==0){x=1;y=0;return a;}int ans=exgcd(b,a%b,x,y);int t=x;x=y;y=t-(a/b)*y;return ans;
}*/
int gauss()
{int max_r,col,k,i,j;for(k=0,col=0;k<equ&&col<var;k++,col++){max_r=k;for(i=k+1;i<equ;i++){if(abs(a[i][col])>abs(a[max_r][col]))max_r=i;}if(a[max_r][col]==0){k--;continue;}if(max_r!=k){for(j=col;j<=var;j++)swap(a[k][j],a[max_r][j]);}for(i=k+1;i<equ;i++){if(a[i][col]!=0){int Lcm=lcm(abs(a[i][col]),abs(a[k][col]));int ta=Lcm/abs(a[i][col]);int tb=Lcm/abs(a[k][col]);if(a[i][col]*a[k][col]<0)tb=-tb;for(j=col;j<=var;j++){a[i][j]=((a[i][j]*ta-a[k][j]*tb)%mod+mod)%mod;}}}}for(i=k;i<equ;i++)if(a[i][col]!=0)return -1;//无解if(k<var)return var-k;//多解for(i=var-1;i>=0;i--){int temp=a[i][var];for(j=i+1;j<var;j++){if(a[i][j]){temp-=a[i][j]*x[j];temp=(temp%mod+mod)%mod;}}x[i]=temp*powmod(a[i][i],5,mod)%mod;//逆元/*int xx,y;exgcd(a[i][i],mod,xx,y);x[i]=(temp*xx%mod+mod)%mod;*///扩展欧几里得求逆元}return 0;
}
int judge(char s[])
{if(strcmp(s,"MON")==0) return 1;else if(strcmp(s,"TUE")==0) return 2;else if(strcmp(s,"WED")==0) return 3;else if(strcmp(s,"THU")==0) return 4;else if(strcmp(s,"FRI")==0) return 5;else if(strcmp(s,"SAT")==0) return 6;else return 7;
}
int main()
{int n,m,i;while(scanf("%d%d",&n,&m)){if(n==0&&m==0)break;memset(a,0,sizeof(a));char ch1[10],ch2[10];int k;for(i=0;i<m;i++){scanf("%d%s%s",&k,ch1,ch2);a[i][n]=((judge(ch2)-judge(ch1)+1)%mod+mod)%mod;//ch2可能在ch1前面,负数求余int t;while(k--){scanf("%d",&t);t--;a[i][t]++;a[i][t]%=mod;}}equ=m;var=n;int res=gauss();if(res==-1)printf("Inconsistent data.\n");else if(res==0){for(i=0;i<n;i++)if(x[i]<=2)x[i]+=7;//题目中要求生产工具最少3天最多9天for(i=0;i<n-1;i++)printf("%d ",x[i]);printf("%d\n",x[n-1]);}elseprintf("Multiple solutions.\n");}
}

高斯消元解模同余方程组相关推荐

  1. 【BZOJ1923】外星千足虫,高斯消元解xor方程组

    Time:2016.08.29 Author:xiaoyimi 转载注明出处谢谢 传送门 思路: 原本以为是高斯消元解取模方程,后来发现这题意不就和异或方程一样吗 [异或(XOR)运算由于与" ...

  2. 第三十四章 数论——高斯消元解线性方程组

    第三十四章 数论--高斯消元解线性方程组 一.高斯消元 1.线性方程组 2.高斯消元步骤 (1)数学知识铺垫 增广矩阵和阶梯矩阵 初等变换 (2)高斯消元步骤 二.代码模板 1.问题: 2.代码 一. ...

  3. HDU 4305 Lightning (高斯消元解kirchhoff矩阵+逆元)

    题意是:给一些坐标点,如果两点之间的距离小于R,并且两点之间没有其他点,则这两个点保持连通,这样构成了一个图.问这个图中生成树的个数. 因为数据量并不大,O(N^3)的建图没有问题. 建好图以后就可以 ...

  4. [AcWing]883. 高斯消元解线性方程组(C++实现)高斯消元解线性方程组模板题

    [AcWing]883. 高斯消元解线性方程组(C++实现)高斯消元解线性方程组模板题 1. 题目 2. 读题(需要重点注意的东西) 3. 解法 4. 可能有帮助的前置习题 5. 所用到的数据结构与算 ...

  5. 高斯消元 AcWing 883. 高斯消元解线性方程组

    高斯消元 AcWing 883. 高斯消元解线性方程组 原题链接 AcWing 883. 高斯消元解线性方程组 算法标签 线性代数 高斯消元 思路 代码 #include<bits/stdc++ ...

  6. poj2947(高斯消元解同模方程组)

    题目链接:http://poj.org/problem?id=2947 题意:有n 种装饰物,m 个已知条件,每个已知条件的描述如下: p start end a1, a2......ap (1< ...

  7. jzoj3823 遇见 [高斯消元解异或方程组]

    Description Zyh独自一人在街上漫步.Zyh相信不久后应该就可以和她一起漫步,可是去哪里寻找那个她呢?Zyh相信每个人都有一个爱情的号码牌,这个号码牌是一个n*n的矩阵. 每个人都要在矩阵 ...

  8. POJ 2947 Widget Factory (高斯消元解同余方程组)

    题意:N种物品,M条记录,接写来M行,每行有K,str1,str2,表示第i个记录从星期str1到星期str2,做了K件物品,接下来的K个数为物品的编号.求做每个物品所需的时间,并且最后结果在3-9之 ...

  9. AcWing 883. 高斯消元解线性方程组(高斯消元模板)

    先出裸的模板: #include<bits/stdc++.h>using namespace std; const int N = 110; typedef double db; db a ...

最新文章

  1. 概率论与数理统计专业术语
  2. asp.net应用百度编辑器(UEditor)上传图片跟上次附件不成功的解决办法
  3. Idea中Terminal中git基本操作
  4. linux之ftp怎么把本地文件拷贝到服务端
  5. 计算机鼠标介绍教学反思,《玩转鼠标》教学反思
  6. 全网音乐下载,抖音热歌、无损音乐下载
  7. 愿你不会像我一样,活成狗一般的生活!
  8. 现在公开一个DHT网络爬虫网络爬虫供大家一起交流
  9. U3D Shader
  10. 罗森伯格成功布线五星蕴海建国饭店
  11. SQL Server-【知识与实战III】年龄查询、条件查询、多表查询、姓氏查询
  12. PHP 家长互助解决问题步骤,小区父母互助 完善自己做合格家长
  13. 路由器什么牌子好?游戏宅强推
  14. OpenAI打破文本和图像次元壁,提出基于对比学习的多模态预训练模型CLIP
  15. 微信小程序实现瀑布流布局
  16. vue2.0支持compiler
  17. 超级简单系列(收藏)
  18. 最新Sublime Text3 注册码激活码,持续更新!
  19. unity绘制管道_在Unity里写一个纯手动的渲染管线(一)
  20. geotools应用-JTS生产四叉树索引和R树索引

热门文章

  1. vscode android调试,使用VsCode开发调试React Native笔记
  2. 小甲鱼python课后题简书_Python 练习题汇总
  3. python3.7安装步骤-Python 3.7.0安装教程(附安装包) | 我爱分享网
  4. python入门指南by许半仙-推文:拯救书荒(短篇小甜饼合集)
  5. python 计算机程序设计-程序设计入门—Python
  6. 怎样学好python编程-Python编程怎么学习好?老男孩Python入门
  7. 哈弗F7x驾舱数字化测试 语音识别精准
  8. 未来,语音识别可能应用于哪些商业化场景?
  9. ibm语音识别输入系统
  10. php 按行读取 太慢,3分钟短文 | 大神救我!18G的大文件,PHP咋按行读取?