高斯消元解模同余方程组
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");}
}
高斯消元解模同余方程组相关推荐
- 【BZOJ1923】外星千足虫,高斯消元解xor方程组
Time:2016.08.29 Author:xiaoyimi 转载注明出处谢谢 传送门 思路: 原本以为是高斯消元解取模方程,后来发现这题意不就和异或方程一样吗 [异或(XOR)运算由于与" ...
- 第三十四章 数论——高斯消元解线性方程组
第三十四章 数论--高斯消元解线性方程组 一.高斯消元 1.线性方程组 2.高斯消元步骤 (1)数学知识铺垫 增广矩阵和阶梯矩阵 初等变换 (2)高斯消元步骤 二.代码模板 1.问题: 2.代码 一. ...
- HDU 4305 Lightning (高斯消元解kirchhoff矩阵+逆元)
题意是:给一些坐标点,如果两点之间的距离小于R,并且两点之间没有其他点,则这两个点保持连通,这样构成了一个图.问这个图中生成树的个数. 因为数据量并不大,O(N^3)的建图没有问题. 建好图以后就可以 ...
- [AcWing]883. 高斯消元解线性方程组(C++实现)高斯消元解线性方程组模板题
[AcWing]883. 高斯消元解线性方程组(C++实现)高斯消元解线性方程组模板题 1. 题目 2. 读题(需要重点注意的东西) 3. 解法 4. 可能有帮助的前置习题 5. 所用到的数据结构与算 ...
- 高斯消元 AcWing 883. 高斯消元解线性方程组
高斯消元 AcWing 883. 高斯消元解线性方程组 原题链接 AcWing 883. 高斯消元解线性方程组 算法标签 线性代数 高斯消元 思路 代码 #include<bits/stdc++ ...
- poj2947(高斯消元解同模方程组)
题目链接:http://poj.org/problem?id=2947 题意:有n 种装饰物,m 个已知条件,每个已知条件的描述如下: p start end a1, a2......ap (1< ...
- jzoj3823 遇见 [高斯消元解异或方程组]
Description Zyh独自一人在街上漫步.Zyh相信不久后应该就可以和她一起漫步,可是去哪里寻找那个她呢?Zyh相信每个人都有一个爱情的号码牌,这个号码牌是一个n*n的矩阵. 每个人都要在矩阵 ...
- POJ 2947 Widget Factory (高斯消元解同余方程组)
题意:N种物品,M条记录,接写来M行,每行有K,str1,str2,表示第i个记录从星期str1到星期str2,做了K件物品,接下来的K个数为物品的编号.求做每个物品所需的时间,并且最后结果在3-9之 ...
- AcWing 883. 高斯消元解线性方程组(高斯消元模板)
先出裸的模板: #include<bits/stdc++.h>using namespace std; const int N = 110; typedef double db; db a ...
最新文章
- 概率论与数理统计专业术语
- asp.net应用百度编辑器(UEditor)上传图片跟上次附件不成功的解决办法
- Idea中Terminal中git基本操作
- linux之ftp怎么把本地文件拷贝到服务端
- 计算机鼠标介绍教学反思,《玩转鼠标》教学反思
- 全网音乐下载,抖音热歌、无损音乐下载
- 愿你不会像我一样,活成狗一般的生活!
- 现在公开一个DHT网络爬虫网络爬虫供大家一起交流
- U3D Shader
- 罗森伯格成功布线五星蕴海建国饭店
- SQL Server-【知识与实战III】年龄查询、条件查询、多表查询、姓氏查询
- PHP 家长互助解决问题步骤,小区父母互助 完善自己做合格家长
- 路由器什么牌子好?游戏宅强推
- OpenAI打破文本和图像次元壁,提出基于对比学习的多模态预训练模型CLIP
- 微信小程序实现瀑布流布局
- vue2.0支持compiler
- 超级简单系列(收藏)
- 最新Sublime Text3 注册码激活码,持续更新!
- unity绘制管道_在Unity里写一个纯手动的渲染管线(一)
- geotools应用-JTS生产四叉树索引和R树索引
热门文章
- vscode android调试,使用VsCode开发调试React Native笔记
- 小甲鱼python课后题简书_Python 练习题汇总
- python3.7安装步骤-Python 3.7.0安装教程(附安装包) | 我爱分享网
- python入门指南by许半仙-推文:拯救书荒(短篇小甜饼合集)
- python 计算机程序设计-程序设计入门—Python
- 怎样学好python编程-Python编程怎么学习好?老男孩Python入门
- 哈弗F7x驾舱数字化测试 语音识别精准
- 未来,语音识别可能应用于哪些商业化场景?
- ibm语音识别输入系统
- php 按行读取 太慢,3分钟短文 | 大神救我!18G的大文件,PHP咋按行读取?