工厂里每件期间的生产时间为3-9天,告诉你有N个器件和M个计划,每个计划都是说明生产1~N号器件的时间,最后问你每件器件的生产时间。或者多解或没有解。

例如样例

2 3
2 MON THU
1 2
3 MON FRI
1 1 2
3 MON SUN
1 2 2
其中 2 MON THU 说明下面有两个器件是星期一到星期四生产的,所以有如下方程:(假设i号器件生产时间为xi)
x1+x2=4
x1+x1+x2=5
x1+x2+x2=7 很明显求方程解可以用高斯消元法,算做一道高斯消元的练习题吧。
高斯消元就是通过初等行变化把矩阵化成阶梯型矩阵,然后从低到顶求解每个变量的值。
注意如果某列对应的都是0,那么求解下一列。
多解的情况就是矩阵的秩小于未知量的个数,因为那些未知量可以取任意的值。
没有解就是得出秩行下面如果某个最后的常数不是0,那么就是无解,因为没有0=m这样的解。 代码如下:
#include <iostream>
#include <string.h>
#include <string>
#include <map>
using namespace std; int ma[][],n,m;
int arr[],ans;
map<string,int> mp;
int solve()
{
int i,j,k=,l,tmp,num=,sum;
for(i=;i<=m&&k<=n;++i){ //这里i是当前第i行,k是当前第k列
for(j=i;j<=m;++j) //找一个k列不是0的行
if(ma[j][k])
break;
if(j>m){ //找不到那么就处理下一个未知量
--i;
++k;
continue;
}
if(j!=i){
swap(ma[i],ma[j]);
}
for(j=i+;j<=m;++j){
if(!ma[j][k])
continue;
tmp=ma[j][k];//!!!这里WA了,因为一开始没有保存ma[j][k]的值,如果你不保存那么ma[j][k]通过下面会变成0
for(l=k;l<=n+;++l){
ma[j][l]=ma[i][l]*tmp-ma[j][l]*ma[i][k];
ma[j][l]=(ma[j][l]%+)%;
}
}
++num;
++k;
}
sum=;
for(i=num+;i<=m;++i) //找是否会无解
if(ma[i][n+])
return ;
if(num!=n) //多解
return ; for(i=n;i;--i){ //唯一解
for(j=i+;j<=n;++j){
ma[i][n+]=ma[i][n+]-arr[j]*ma[i][j];
ma[i][n+]=(ma[i][n+]%+)%;
}
arr[i]=;
for(j=;j<=;++j)
if(ma[i][i]*j%==ma[i][n+])
arr[i]=j;
}
return ;
}
int main(){
ios::sync_with_stdio();
mp["MON"]=;
mp["TUE"]=;
mp["WED"]=;
mp["THU"]=;
mp["FRI"]=;
mp["SAT"]=;
mp["SUN"]=;
while(cin>>n>>m,n+m){
int k,x;
string s1,s2;
memset(ma,,sizeof ma);
for(int i=;i<=m;++i){
cin>>k;
cin>>s1>>s2;
ma[i][n+]=(mp[s2]-mp[s1]++)%;
while(k--){
cin>>x;
ma[i][x]++;
ma[i][x]%=;
}
}
ans=solve();
if(ans==)
cout<<"Inconsistent data."<<endl;
else if(ans==)
cout<<"Multiple solutions."<<endl;
else
for(int i=;i<=n;++i)
cout<<arr[i]<<" \n"[i==n];
}
return ;
}

POJ2947-Widget Factory的更多相关文章

  1. [Gauss]POJ2947 Widget Factory

    题意: 有n种小工具要加工,每种工具的加工时间为3到9天,给了m条加工记录.  每条记录 X $s_1$ $s_2$ 分别代表 这个工人在$s_1$到$s_2$(前闭后闭)的时间里加工了X件小工具   ...

  2. POJ 2947 Widget Factory(高斯消元)

    Description The widget factory produces several different kinds of widgets. Each widget is carefully ...

  3. 使用 jQuery UI Widget Factory 编写有状态的插件(Stateful Plugins)

    使用 jQuery UI Widget Factory 编写有状态的插件(Stateful Plugins) Note 这一章节的内容是基于 Scott Gonzalez 一篇博客 Building ...

  4. poj 2947 Widget Factory

    Widget Factory 题意:有n件装饰品,有m组信息.(1 <= n ,m<= 300)每组信息有开始的星期和结束的星期(是在mod 7范围内的)并且还包括num种装饰品的种类(1 ...

  5. Widget Factory (高斯消元解线性方程组)

    The widget factory produces several different kinds of widgets. Each widget is carefully built by a ...

  6. 软件公司的两种管理方式 总体来说,这个世界上存在两种不同的软件公司的组织结构。我把他们叫做 Widget Factory(小商品工厂) 和 Film Crews(电影工作组

    软件公司的两种管理方式 一个简单的回答应该是——“因为在我们的社会里,我们总是会认为薪水和会和职位的层次绑在一起”.但是,这个答案同时也折射出一个事实——我们的薪资是基于我们的所理解的价值,但这并没有 ...

  7. 通过扩展jQuery UI Widget Factory实现手动调整Accordion高度

    □ 实现Accordion高度一致 <head> <meta name="viewport" content="width=device-width&q ...

  8. 【POJ】2947 Widget Factory(高斯消元)

    http://poj.org/problem?id=2947 各种逗啊..还好1a了.. 题意我就不说了,百度一大把. 转换为mod的方程组,即 (x[1,1]*a[1])+(x[1,2]*a[2]) ...

  9. POJ Widget Factory 【求解模线性方程】

    传送门:http://poj.org/problem?id=2947 Widget Factory Time Limit: 7000MS   Memory Limit: 65536K Total Su ...

  10. UVA 1564 - Widget Factory(高斯消元)

    UVA 1564 - Widget Factory 题目链接 题意:n种零件, 给定m个制作时间.每段时间制作k个零件,每种零件有一个制作时间,每段时间用Mon到Sun表示,求每一个零件的制作时间.还 ...

随机推荐

  1. ssh登录locale报错:cannot change locale (zh_CN.UTF-8): No such file or directory

    一.登录ssh报错: Last :: from 172.28.146.109 -bash: warning: setlocale: LC_ALL: cannot change locale (en_C ...

  2. WEBLOGIC because another WebLogic Server instance is already using this directory

    错误提示:because another WebLogic Server instance is already using this directory 原因:ldap目录数据库文件被锁定,可能是w ...

  3. excle 内部 超链接(锚点)

    超连接对象: 1.文档 2.本文档中的位置. 3.  本文重点  指定 链接到 xx表中的xx位置. 第三种连接  类似于 web文档的中 锚点 超连接 看下图 选 择本文档中的位置, 选择 工作表. ...

  4. centos7更改时区

    1,linux系统更换时区 2,时间同步 1,linux系统更换时区 注:# timedatectl # 查看系统时间方面的各种状态 # timedatectl list-timezones # 列出 ...

  5. Java I/O (1) - 输入/输出流

    先说概念: Java API中,可以从其中读入一个字节序列的对象叫做输入流,可以向其中写入一个字节序列的对象叫做输出流.这些字节序列的来源地 和 目的地 可以文件.网络连接甚至内存块.抽象类Input ...

  6. layui---十分适用于PC端后台的框架

    1.关闭当前页面: top.$(".layui-tab-title").find("li.layui-this>i").click(); 2.调用指定ID ...

  7. mysql 多列索引学习-经典实例

    索引优化 ,b-tree假设某个表有一个联合索引(c1,c2,c3,c4) 以下 只能使用该联合索引的c1,c2,c3部分A. where c1 = x and c2 = x and c4>x ...

  8. distpicker使用记录

    今天使用distpicker遇到了一些问题,记录一下. 插件地址 使用说明 需要引入的 js 文件 <script type="text/javascript" src=&q ...

  9. 进军的socket

    在学socket有时候我们会遇到这种问题: 解决方法一: 在服务端中加入:severTCP.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) ...

  10. HihoCoder - 1103 Colorful Lecture Note

    Little Hi is writing an algorithm lecture note for Little Ho. To make the note more comprehensible, ...