工厂里每件期间的生产时间为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. H5-手机震动

    //手机震动function vibration(){ navigator.vibrate = navigator.vibrate || navigator.webkitVibrate || navi ...

  2. oracl遇到的问题

    使用oracl数据库用  ALTER TABLE Students ADD CONSTRAINT PRINF_NAME_UNIQUE UNIQUE (sname) 添加唯一性约束,出现问题,报错为:a ...

  3. gradle用户目录本地库移动设置

    gradle被越来越多的程序开发人员使用来构件项目代码,使用gradle依赖的第三方jar包有时候非常占空间,默认这样的用户本地库目录(缓存目录)在系统盘上,我们可以修改用户目录到其它盘上 工具/原料 ...

  4. 云笔记项目-MyBatis返回自增类型&堆栈对象补充理解

    在云笔记项目中,讲到了MySql的自增,MyBatis查询到自增类型数据后可以设置返回到参数属性,其中学习了MySql的自增写法,堆栈对象等知识. MySql数据类型自增 建立一张Person表,其中 ...

  5. tensorflow安装和初使用

    本文的目的是为了复习并帮助刚开始起步使用机器学习的人员 1.安装准备 为了方便就在window上安装,我的是window10 的笔记本,首先准备python 因为tensorflow在仅仅支持wind ...

  6. SQl 执行效率总结

    SQL执行效率总结 1.关于SQL查询效率,100w数据,查询只要1秒,与您分享: 机器情况 p4: 2.4 内存: 1 G os: windows 2003 数据库: ms sql server 2 ...

  7. Unity Awards 2018最佳资源

    好的工具与资源,将帮助你的开发,达到事办功倍,今天我们将为大家介绍荣获Unity Awards 2018最佳资源的获奖作品. 最佳艺术工具:Aura - Volumetric Lighting Aur ...

  8. 算法练习LeetCode初级算法之其他

    位1的个数 解法一: class Solution { // you need to treat n as an unsigned value public int hammingWeight(int ...

  9. jquery 入口函数

    jQuery 入口函数: $(document).ready(function(){ // 执行代码 }); 或者 $(function(){ // 执行代码 }); JavaScript 入口函数: ...

  10. spring的事务操作(重点)

    这篇文章一起来回顾复习下spring的事务操作.事务是spring的重点, 也是面试的必问知识点之一. 说来这次面试期间,也问到了我,由于平时用到的比较少,也没有关注过这一块的东西,所以回答的不是特别 ...