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 = ...
随机推荐
- C#_父窗体跟子窗体的控件操作
很多人都苦恼于如何在子窗体中操作主窗体上的控件,或者在主窗体中操作子窗体上的控件.相比较而言,后面稍微简单一些,只要在主窗体中创建子窗体的时候,保留所创建子窗体对象即可. 下面重点介绍前一种,目前常见 ...
- kubernetes 集群新增node 节点并将应用分配到新增节点
第一章 1.重新安装一台kubernetes node节点,新增节点:192.168.1.192 网址:https://www.cnblogs.com/zoulixiang/p/9504324.htm ...
- ECS centos7 使用外部邮件服务商的465加密端口
ECS centos7 使用外部邮件服务商的465加密端口发送邮件. 1.修改/etc/mail.rc 文件中添加以下的 set smtp="smtps://smtp.163.com:465 ...
- PAT甲级题解-1047. Student List for Course (25)-排序
一开始是建立了course[2501][40001]数组,存储每节课的学生编号然后for循环两层输出,但这样复杂度为O(2500*40000),也很明显导致最后时间超时后来发现最多40000学生,每个 ...
- 第四篇——Spring音乐登录界面设计及实现(C#)
Spring音乐播放器,我们小组设计其启动时有一个登录界面,用户初次可以注册,输入用户名和密码,点击注册即将输入信息保存到register文本文件中:如果已有用户名,输入用户名和密码,点击登录,程序会 ...
- Leetcode——37.解数独 [##]
@author: ZZQ @software: PyCharm @file: leetcode37_solveSudoku.py @time: 2018/11/20 16:41 思路:递归回溯 首先, ...
- [Latex] Travis-CI与Latex构建开源中文PDF
博主有一本开源书籍,用 latex 排版,托管在Github上.但用 latex 不像是 Markdown,当tex文本更新时,用于最终浏览的PDF文件很难得到及时的更新, 所以博主一直想找到一套工具 ...
- week6:个人博客作业
这周主要是参与团队编程的讨论 团队编程中发现很多问题: 1,每个人共同空闲的时间不好找 就我组来说,我是考研,每天晚上都要去外面上课,有的人在进行大创,,也有的像我一样在整考研的东西,还有的进行其他, ...
- ElasticSearch 2 (23) - 语言处理系列之词根提取
ElasticSearch 2 (23) - 语言处理系列之词根提取 摘要 世界上大多数语言都是屈折变化的,意思是词语可以通过变形来表达不同的含义: 数(Number): fox, foxes 时态( ...
- golang curl
/** 1.可设置代理 2.可设置 cookie 3.自动保存并应用响应的 cookie 4.自动为重新向的请求添加 cookie */ package curl import ( "net ...