poj 2947 Widget Factory (高斯消元,解模线性方程)

用51单片机和LD3320语音模块DIY一个会说话的温度报警器(附完整代码) 本文详细介绍了如何使用51单片机和LD3320语音模块DIY一个智能温度报警器,包括硬件选型、电路设计、软件开发及核心功能实现。通过DS18B20温度传感器和语音模块的结合,实现温度超标时的语音报警功能,适合智能家居系统等应用场景。附完整代码,方便开发者快速复现。 阅读详情

链接:poj 2947

题意:生产一些零件,已知零件种数,记录条数

记录只记录了某次生产从周几开始,周几结束,以及生产了哪些产品。

每件商品生产所需天数为3-9天。

求每样产品需要多少天才能完成。

若无解输出Inconsistent data.

有无穷解输出Multiple solutions.

有唯一解,输出其解

分析:根据题目所给信息,可以列出同余方程组,再根据高斯消元求解,

但还得判断是无解,无穷解,还是唯一解

1.系数矩阵的秩若与增广矩阵的秩不相等,则无解,否则有解

2.若有解,若增广矩阵的秩小于未知数的个数,则有无穷解

3.若有解,增广矩阵的秩等于未知数的个数,则有唯一解

有唯一解时,需要用扩展欧几里得解模线性方程

注:求矩阵的秩,先将矩阵化为阶梯型,有多少个非0行或者非0列,

矩阵的秩就为多少.矩阵的行秩等于矩阵的列秩


#include<stdio.h>
#include<string.h>
#include<algorithm>
#define MOD 7
using namespace std;
int m,n,matrix[310][310],ans[310];
int get_id(char s[])
{
    char week[8][5]={"","MON","TUE","WED","THU","FRI","SAT","SUN"};
    int i;
    for(i=1;i<=7;i++)
        if(strcmp(s,week[i])==0)
            break;
    return i;
}
int ex_gcd(int a,int b,int &x,int &y)
{
    int t,d;
    if(b==0){
        x=1;
        y=0;
        return a;
    }
    d=ex_gcd(b,a%b,x,y);
    t=x;
    x=y;
    y=t-a/b*y;
    return d;
}
int Lcm(int a,int b)
{
    int x,y;
    return a*b/ex_gcd(a,b,x,y);
}
int guass()
{
    int i,j,row,col;
    for(row=0,col=0;row<n&&col<m;row++,col++){
        for(i=row;i<n;i++)
            if(matrix[i][col])
                break;
        if(i==n){          //col列全为0
            row--;
            continue;
        }
        if(i!=row)
            for(j=0;j<=m;j++)
                swap(matrix[row][j],matrix[i][j]);   //交换两行
        for(i=row+1;i<n;i++){          
            if(matrix[i][col]){
                int lcm=Lcm(matrix[row][col],matrix[i][col]);
                int t1=lcm/matrix[i][col],t2=lcm/matrix[row][col];
                for(j=col;j<=m;j++)
                    matrix[i][j]=((matrix[i][j]*t1-matrix[row][j]*t2)%MOD+MOD)%MOD;
            }
        }
    }
    for(i=row;i<n;i++)     
        if(matrix[i][m])          //无解
            return -1;
    if(row<m)                    //有无穷解
        return 0;
    memset(ans,0,sizeof(ans));  //唯一解求解过程如下
    for(i=n-1;i>=0;i--){        
        int temp=0;
        for(j=i+1;j<m;j++)
            temp=(temp+matrix[i][j]*ans[j]%MOD)%MOD;
        int b=((matrix[i][m]-temp)%MOD+MOD)%MOD;
        int x,y;
        int d=ex_gcd(matrix[i][i],MOD,x,y);  //解模线性方程
        x=x*(b/d)%MOD;
        x=(x%(MOD/d)+(MOD/d))%(MOD/d);
        ans[i]=x;
        if(ans[i]<3)
            ans[i]+=7;
    }
    return 1;
}
int main()
{
    int num,i,j,type;
    char start[5],end[5];
    while(scanf("%d%d",&m,&n)!=EOF){
        if(m==0&&n==0)
            break;
        memset(matrix,0,sizeof(matrix));
        for(i=0;i<n;i++){
            scanf("%d%s%s",&num,start,end);
            matrix[i][m]=((get_id(end)-get_id(start)+1)%MOD+MOD)%MOD; //求生产时间对7取余
            for(j=1;j<=num;j++){
                scanf("%d",&type);
                matrix[i][type-1]=(matrix[i][type-1]+1)%MOD;   //记录矩阵的值
            }
        }
        int flag=guass();   //高斯消元
        if(flag==-1)
            printf("Inconsistent data.\n");
        else if(flag==0)
            printf("Multiple solutions.\n");
        else{
            for(i=0;i<m-1;i++)
                printf("%d ",ans[i]);
            printf("%d\n",ans[m-1]);
        }
    }
    return 0;
}


ADRV9009学习资料保存:基于XC7Z100+ADRV9009的双收双发无线电射频板卡 ADRV9009学习资料保存:基于XC7Z100+ADRV9009的双收双发无线电射频板卡 一、板卡概述 基于XC7Z100+ADRV9009的双收双发无线电射频板卡是基于XilinxZYNQFPGA和ADI的无线收发芯片ADRV9009开发的专用功能板卡,用于5G小基站,无线图传,数据收发... 阅读详情

相关推荐

别再只会regress了!用Stata的csdid命令搞定多期DID的完整实操指南

本文详细介绍了如何在Stata中使用csdid命令进行多期DID分析,解决传统DID方法在交错处理场景下的局限性。通过完整的实操指南,包括环境搭建、核心语法、结果解读和高阶应用,帮助研究者更准确地评估政策效果,适用于计量经济学和实证研究领域。

weixin_30236595的博客 582

线性代数感悟之4 通过增广矩阵查看解的情况上篇

最近在看 liuyubobobo 的线性代数课,感觉很妙,有些感悟记录一下~~~ 通过增广矩阵查看解的情况: ------------------------------------------------------------------------------------------------------------------------------ 主元(首元)定义:非零行的第一个元素。 什么是阶梯形矩阵? 感性定义:可以画个阶梯,阶梯下面都是0 理性定义: 有...

songhuangong123的博客 1万+

dreamerv3复现教程

由于dreamerv3存在很多版本冲突问题,所以很难直接使用和复现。

无人机飞啊飞啊飞 2831

poj2947(高斯消元解同模方程组)

题目链接:http://poj.org/problem?id=2947 题意:有n 种装饰物,m 个已知条件,每个已知条件的描述如下: p start enda1, a2......ap (1<= ai <= n)第一行表示从星期 start 到星期 end 一共生产了p 件装饰物 (工作的天数为end - start + 1 + 7*x, 加 7*x 是因为它可能生产很多周...

weixin_30810239的博客 261

Python + Google AI 自动修复 Sonar Bug 实践

在工作中总会遇到种种不期而至的需求,比如前段时间突然要修复所有 Sonar Bug,涉及各种琐碎的代码风格问题,包括但不限于语法不规范、废弃注释等问题。这些项目都已经持续开发几年了,Sonar 上的问题层出不穷,各种问题已经累积到了上万个,手动修复不但费时费力,而且过程异常枯燥。

子洋 Blog 2414

SAP 资产主数据屏幕增强:对比字段追加与子屏幕/页签 2 种方案优劣

本文深入对比了SAP资产主数据(AS01/AS03)屏幕增强的两种方案:字段追加与子屏幕/页签。从技术实现、业务适配、系统维护等维度分析各自优劣,提供方案选型决策树和混合方案实践建议,帮助企业在SAP实施中做出最优选择。

weixin_28559803的博客 283

POJ - 2947 (Widget Factory)

题意:有 n 个零件,每个零件需要 [3,9] 内的其中一天完成,现给出 m 个工人开始开始和结束工作的日期(星期几) 还有它们加工的所有零件种类,求出每一种零件加工需要的时间; 分析:裸的高斯消元解同余线性方程组,套板子就行; 代码: #include<cmath> #include<cstdio> #include<cstring> #i...

Joker & Liar的博客 247

保姆级教程:在树莓派5B上用AI Kit跑YOLOv8,实测134fps的完整配置流程

本文提供了一份详细的树莓派5B搭配AI Kit部署YOLOv8的教程,从硬件组装到模型转换、优化和部署,最终实现134FPS的高帧率推理性能。通过Hailo-8L AI加速模块和HEF模型转换,这套方案为边缘AI计算提供了强大支持,适用于智能监控、无人机视觉导航等应用场景。

weixin_28725407的博客 444

POJ2947解题报告

原题链接:POJ2947 思路:本题是用高斯消元以及同余方程做,但是需要注意整数高斯消元避免使用除法。还需注意同余方程的解的问题、方程式与未知数个数不等问题。 错误报告:这题总时间花了应该有七八个小时了。第一次做忽略了方程式个数不等于未知数个数时情况,并且对于何时无解、何时多解判断方法错误,在消元方面我使用了最小公倍数(异曲同工哈?)避免消元后出现的小数。今天又用了近四小时更改,发现如下错误:...

帅比王的博客 9084

IEEE ACCESS Please note that all author names should be listed in English.(所有作者名需用英文名列出)

很奇怪哈,我明明手稿和提交页面作者都是用的英文,但是为什么还是会提示我没用英文呢?后来给编辑发消息,回的很快,他给我发了一个截图,确实是出现中文,但是我还是不知道为啥会出现中文。直到晚上回寝室洗澡的时候忽然想起来了是不是orcid的原因,因为它会强制作者绑定一个orcid账号,而我的orcid账号的名字刚好是中文的。当然这个只是我的一个猜想,但是我觉得可能性很大。我的第二篇论文已经投稿了快三个月了,效果非常的不好,所以我打算转投IEEE ACCESS了,希望这里可以给我一点好的建议。

kuyecsl的博客 3309

PostgreSQL:Patroni 高可用架构,基于etcd的自动故障转移集群

本文详细介绍了基于Patroni和etcd构建PostgreSQL高可用集群的方案。Patroni作为外部守护进程,通过etcd分布式协调服务实现自动故障转移、主节点选举等关键功能,弥补了PostgreSQL原生缺乏自动故障转移的不足。文章涵盖核心架构(3节点PG+3节点etcd)、环境规划、etcd集群部署(包括配置验证)以及Patroni安装配置的关键步骤,特别强调了Patroni自动初始化PG实例、配置同步复制等生产级特性。该方案通过外部组件协同工作,在不修改PG源码的情况下实现了生产环境所需的高可用

数据知道的博客 2486

[poj2947][高斯消元]Widget Factory

传送门: http://poj.org/problem?id=2947 这个代码是错的,我也不是很清楚为啥错了,高消的部分被我拿去交seti那题过了。。可能系数求错了?如果有人看我这个博文发现出了偏差请帮忙指正一下谢谢了。 sol: 题目就是给出了一系列同余方程组,解方程即可。 #include&lt;iostream&gt; #include&lt;algorithm&gt; #inc...

Gzb1128的栖息地 258

Xilinx FPGA ICAP原语实现多重配置

众所周知,常见的FPGA通常为SRAM结构,固件程序一般存放在外置的串行Flash中,比如SPI Flash,M25P16或N25Q128等。 FPGA启动时,一般先从SPI起始地址开始加载数据到内部的SRAM,加载完成、校验通过则会直接运行。 那么有没有可能在SPI Flash中存放两个或多个FPGA固件呢?

whik1194的博客 4611

poj 2947 Widget Factory 高斯消元解模线性方程

http://poj.org/problem?id=2947 思路: http://blog.youkuaiyun.com/u013486414/article/details/46999499 http://blog.youkuaiyun.com/sr_19930829/article/details/38275863 #include #include #include using namespace std

chen_minghui的博客 369

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

poj 2947 Widget Factory 【高斯消元解模线性方程组】

Widget Factory Time Limit: 7000MS   Memory Limit: 65536K Total Submissions: 5074   Accepted: 1754 Description The widget factory produces several different kinds of widge

世界很大 668

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

poj2947 Widget Factory (高斯消元解模线性方程组)

Widget Factory Time Limit: 7000MS Memory Limit: 65536K Total Submissions: 6261 Accepted: 2207 Description The widget factory produces several different kinds of widgets. Each widget is carefully built by a skilled widgeteer. The time required to build a

雪的期许 970

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

POJ2947:Widget Factory(高斯消元,解模线性方程)

Widget Factory Time Limit: 7000MS   Memory Limit: 65536K Total Submissions: 6319   Accepted: 2235 Description The widget factory produces several different kinds of wid

junior19的博客 373

POJ 2947 Widget Factory(高斯消元)

Description 有n种零件,生产每种零件都需要3~9天,现在给出m种记录,每种记录记录了生产一些零件的开始日期和结束日期(周一到周日),问是否能够得到生产每种零件所需时间 Input 多组用例,每组用例首先输入两个整数n和m表示零件种类数和记录数,每次记录首先输入这次生产的零件数量num,然后输入开始日期和结束日期,之后输入num个零件编号,以0 0结束输入(1<=n,m<=300,n

ZSQ 553

poj -- 2947 Widget Factory(高斯消元)

有n种产品,m个员工,每个员工在gei

further~ 644

POJ 2947 Widget Factory(高斯消元法,解模线性方程组)

Widget Factory Time Limit: 7000MS   Memory Limit: 65536K Total Submissions: 3412   Accepted: 1114 Description The widget factory produces several different kinds of widgets...

weixin_34238633的博客 112

poj 2947 Widget Factory (高斯消元法,解模线性方程组)

Description The widget factory produces several different kinds of widgets. Each widget is carefully built by a skilled widgeteer. The time required to build a widget depends on its type: the simpl

hndu__lz的博客 301

从橡皮筋到橡胶轮胎:用Python和NumPy手把手模拟泊松比与广义胡克定律

本文通过Python和NumPy详细演示了泊松比与广义胡克定律的模拟过程,从橡皮筋到橡胶轮胎的材料形变行为。通过构建材料形变模拟器,展示了不同材料(如橡胶、钢铁)在受力时的独特表现,并提供了代码实现和可视化方法,帮助开发者和工程师深入理解材料力学。

weixin_30378623的博客 278

poj2947——Widget Factory(高斯消元求模线性方程)

Widget Factory Time Limit: 7000MS   Memory Limit: 65536K Total Submissions: 5977   Accepted: 2082 Description The widget factory produces several different kinds of widge

我在浪里 374

部件库(Widget Factory)

部件库(Widget Factory)是一个强大的工具,它为开发者提供了丰富的UI组件和高度的可定制性。通过使用部件库,开发者可以大大提高开发效率,同时创建出美观、响应式的用户界面。无论是Web应用、移动应用,还是原型设计和UI/UX设计,部件库都能够提供强大的支持。

lly202406的博客 457

高斯消元法,加法,异或,同余方程组,原理分析,题目详解

高斯消元法是线代中非常基础的知识,在数据量较小的时候,可以用来求解 加法/异或/同余方程组,矩阵求逆。

EQUINOX1的博客 1228

poj 2947

题目描述:就是求模7的方程组.然后结果在3到9之间.n~300题解:高斯消元.用公倍数和除以逆元来解.重点:代码:#include <iostream> #include <cstdio> #include <cstring> #include <string> #include <cmath> #include <ctype.h> #include <limits.h> #include <cst

ruclion的专栏 447
上一篇: poj 1905 Expanding Rods (二分查找)
下一篇: poj 2976 Dropping tests (01规划,二分查找)
happy_lcj
博客等级 码龄13年 7粉丝 152原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值