poj 2947 Widget Factory (高斯消元解同余方程组+判断无解、多解)
http://poj.org/problem?id=2947
血泪史:


CE:poj的string类型要加string库,swap不能直接交换数组
WA:
x[m-1]也有可能<3啊O(≧口≦)O
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm> using namespace std; const int mod=; int n,m;
char ch[][] = {"MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"}; int a[][];
int x[]; int inv[]; void read(int &x)
{
x=; char c=getchar();
while(!isdigit(c)) c=getchar();
while(isdigit(c)) { x=x*+c-''; c=getchar(); }
} int getgcd(int a,int b) { return !b ? a : getgcd(b,a%b); } int getlcm(int a,int b) { return a*b/getgcd(a,b); } void preinv()
{
inv[]=;
for(int i=;i<=;++i) inv[i]=(-mod/i*inv[mod%i]%mod+mod)%mod;
} int gauss()
{
int equ=n,var=m;
int i,j,k;
int max_r,col;
int ta,tb,lcm;
int tmp;
for(k=,col=;k<equ && col<var;++k,++col)
{
max_r=k;
for(i=k+;i<equ;++i)
if(abs(a[i][col])>abs(a[max_r][col])) max_r=i;
if(!a[max_r][col]) { --k; continue; }
if(k!=max_r)
for(j=col;j<var+;++j) swap(a[k][j],a[max_r][j]);
for(i=k+;i<equ;++i)
if(a[i][col])
{
lcm=getlcm(abs(a[i][col]),abs(a[k][col]));
ta=lcm/abs(a[i][col]);
tb=lcm/abs(a[k][col]);
if(a[i][col]*a[k][col]<) tb=-tb;
for(j=col;j<var+;++j) a[i][j]=((a[i][j]*ta-a[k][j]*tb)%mod+mod)%mod;
}
}
for(int i=k;i<equ;++i)
if(a[i][var]) return -;
if(k<var) return -;
for(int i=var-;i>=;--i)
{
tmp=a[i][var];
for(j=i+;j<var;++j)
if(a[i][j])
{
tmp-=a[i][j]*x[j];
tmp=(tmp%mod+mod)%mod;
}
x[i]=tmp*inv[a[i][i]]%mod;
}
return ;
} int turn(char *c)
{
for(int i=;i<;++i)
if(!strcmp(c,ch[i])) return i+;
} int main()
{
int k,xi;
char c[];
int s,t;
preinv();
while(scanf("%d%d",&m,&n)!=EOF)
{
if(!m) return ;
memset(a,,sizeof(a));
for(int i=;i<n;++i)
{
read(k);
scanf("%s",c);
s=turn(c);
scanf("%s",c);
t=turn(c);
a[i][m]=(t-s++)%;
while(k--)
{
read(xi);
a[i][xi-]++;
}
}
for(int i=;i<n;++i)
for(int j=;j<m;++j)
a[i][j]%=mod;
int ans=gauss();
if(ans==-) puts("Inconsistent data.");
else if(ans==-) puts("Multiple solutions.");
else
{
for(int i=;i<m;++i)
{
if(x[i]<) x[i]+=;
printf("%d%c",x[i],i==m- ? '\n' : ' ');
}
}
}
}
poj 2947 Widget Factory (高斯消元解同余方程组+判断无解、多解)的更多相关文章
- Poj 2947 widget factory (高斯消元解同模方程)
题目连接: http://poj.org/problem?id=2947 题目大意: 有n种类型的零件,m个工人,每个零件的加工时间是[3,9],每个工人在一个特定的时间段内可以生产k个零件(可以相同 ...
- POJ 2947 2947 Widget Factory 高斯消元
给出组件的数量n,给出记录的数量m(n就是变元数量,m是方程数量).每一个记录代表一个方程,求每个组件的生产天数. 高斯消元即可 #include <cstdio> #include &l ...
- POJ 2947 Widget Factory(高斯消元)
Description The widget factory produces several different kinds of widgets. Each widget is carefully ...
- POJ 2947-Widget Factory(高斯消元解同余方程式)
题目地址:id=2947">POJ 2947 题意:N种物品.M条记录,接写来M行,每行有K.Start,End,表述从星期Start到星期End,做了K件物品.接下来的K个数为物品的 ...
- POJ2947Widget Factory(高斯消元解同模方程)
http://poj.org/problem?id=2947 题目大意:有n 种装饰物,m 个已知条件,每个已知条件的描述如下:p start enda1,a2......ap (1<=ai&l ...
- poj 2947 Widget Factory
Widget Factory 题意:有n件装饰品,有m组信息.(1 <= n ,m<= 300)每组信息有开始的星期和结束的星期(是在mod 7范围内的)并且还包括num种装饰品的种类(1 ...
- POJ 1830 开关问题 高斯消元,自由变量个数
http://poj.org/problem?id=1830 如果开关s1操作一次,则会有s1(记住自己也会变).和s1连接的开关都会做一次操作. 那么设矩阵a[i][j]表示按下了开关j,开关i会被 ...
- A - The Water Bowls POJ - 3185 (bfs||高斯消元)
题目链接:https://vjudge.net/contest/276374#problem/A 题目大意:给你20个杯子,每一次操作,假设当前是对第i个位置进行操作,那么第i个位置,第i+1个位置, ...
- POJ 1166 The Clocks 高斯消元 + exgcd(纯属瞎搞)
依据题意可构造出方程组.方程组的每一个方程格式均为:C1*x1 + C2*x2 + ...... + C9*x9 = sum + 4*ki; 高斯消元构造上三角矩阵,以最后一个一行为例: C*x9 = ...
随机推荐
- 将WebService部署到 SharePoint 2010 gac 缓存中,并用Log4Net记录日志到数据库
最近做了一个sharePoint项目,需要实现的功能是,第三方网站访问我们sharePoint中的数据,通过Webservice方式实现文件的上传和下载. 于是代码工作完成了之后,本地调试没什么问题, ...
- github添加ssh连接用户
最近打算用flask写一个自己的博客网站,打算把代码放在GitHub上,使用ssh访问.记录下GitHub配置ssh用户的流程. 1.在本地电脑或云服务器上生成ssh公钥和私钥,window下可以进入 ...
- opencv core组件进阶
1.图像在内存中存储方式,图像矩阵的大小取决于颜色模型,取决于所有的通道数:还有重要的颜色空间缩减的概念:因为如果是RGB的话,使用uchar的话,就有256^3的结合方法.所以要用到颜色缩减的方法, ...
- idou老师教你学istio :基于角色的访问控制
istio的授权功能,也称为基于角色的访问控制(RBAC),它为istio服务网格中的服务提供命名空间级别.服务级别和方法级别的访问控制.基于角色的访问控制具有简单易用.灵活和高性能等特性.本文介绍如 ...
- ace how to guide
Configuring the editor there are several ways to pass configuration to Ace 有几种方法可以将配置传递给ace // pass ...
- linux第七章笔记
第七章 链接 链接是将各种代码和数据部分收集起来并组合成为一个单一文件的过程,这个文件可被加载(或拷贝)到存储器并执行.链接可以执行于编译时,也就是在源代码被翻译成机器代码时:也可以执行于加载时,也就 ...
- Daily Scrum 11.1
今天放假一天,明天又是新的一周,预计开始Alpha版本所有功能的整合和优化,争取在两天内完成各种功能的整合. Member Task on 11.1 Task on 11.2 仇栋民 放假一天 开始T ...
- WPF和js交互 调用窗体中的方法
public partial class WebTest: Window { private void Window_ContentRendered(object sender, EventArgs ...
- 初学Hadoop之单机模式环境搭建
本文仅作为学习笔记,供大家初学Hadoop时学习参考.初学Hadoop,欢迎有经验的朋友进行指导与交流! 1.安装CentOS7 准备 CentOS系统镜像CentOS-7.0-1406-x86_64 ...
- ElasticSearch 2 (4) - API Convention
ElasticSearch 2.1.1 (4) - API Convention The elasticsearch REST APIs are exposed using JSON over HTT ...