Poj--2947(数学,高斯消元,模线性方程)

2014-09-18 22:44:04

思路:比较裸的高斯消元+同余方程。注意几点:(1)对所有输入模7!Gauss过程中也要模7 (2)多解是由自由变元个数决定。

  1 /*************************************************************************
  2     > File Name: 2947.cpp
  3     > Author: Nature
  4     > Mail: 564374850@qq.com
  5     > Created Time: Thu 18 Sep 2014 08:34:31 PM CST
  6 ************************************************************************/
  7 
  8 #include <cstdio>
  9 #include <cstring>
 10 #include <cstdlib>
 11 #include <cmath>
 12 #include <vector>
 13 #include <queue>
 14 #include <map>
 15 #include <iostream>
 16 #include <algorithm>
 17 using namespace std;
 18 typedef long long ll;
 19 const int INF = 1 << 29;
 20 
 21 inline int Gcd(int a,int b){ return b == 0 ? a : Gcd(b,a % b); }
 22 inline int Lcm(int a,int b){ return a / Gcd(a,b) * b; }
 23 
 24 int n,m;
 25 int A[305][305];
 26 
 27 int Check(char *s){
 28     if(strcmp(s,"MON") == 0) return 1;
 29     if(strcmp(s,"TUE") == 0) return 2;
 30     if(strcmp(s,"WED") == 0) return 3;
 31     if(strcmp(s,"THU") == 0) return 4;
 32     if(strcmp(s,"FRI") == 0) return 5;
 33     if(strcmp(s,"SAT") == 0) return 6;
 34     if(strcmp(s,"SUN") == 0) return 7;
 35 }
 36 
 37 int Gauss(){
 38     int equ,var; equ = m; var = n;
 39     int i,j,k,r,col,LCM,ta,tb;
 40     col = 0;
 41     for(i = 0; i < equ && col < var; ++i,++col){
 42         r = i;
 43         for(j = i + 1; j < equ; ++j)
 44             if(abs(A[j][col]) > abs(A[r][col])) r = j;
 45         if(r != i)
 46             for(j = col; j <= var; ++j) swap(A[i][j],A[r][j]);
 47         if(A[i][col] == 0){
 48             --i;
 49             continue;
 50         }
 51         for(k = i + 1; k < equ; ++k) if(A[k][col]){
 52             LCM = Lcm(abs(A[i][col]),abs(A[k][col]));
 53             ta = LCM / abs(A[i][col]);
 54             tb = LCM / abs(A[k][col]);
 55             if(A[i][col] * A[k][col] < 0) ta = -ta;
 56             for(j = col; j <= var; ++j)
 57                 A[k][j] = ((A[k][j] * tb - A[i][j] * ta) % 7+ 7) % 7;
 58         }
 59     }
 60     for(k = i; k < equ; ++k) if(A[k][col] != 0)
 61         return -2;
 62     if(var - i > 0)
 63         return -1;
 64     for(i = var - 1; i >= 0; --i){
 65         for(j = i + 1; j < var; ++j){
 66             A[i][var] = ((A[i][var] - A[i][j] * A[j][var]) % 7 + 7) % 7;
 67         }
 68         while(A[i][var] % A[i][i] != 0) A[i][var] += 7;
 69         A[i][var] /= A[i][i];
 70         while(A[i][var] < 3) A[i][var] += 7;
 71         while(A[i][var] > 9) A[i][var] -=7;
 72     }
 73     return 1;
 74 }
 75 
 76 
 77 
 78 int main(){
 79     int num,a;
 80     char st[10],ed[10];
 81     while(scanf("%d%d",&n,&m) != EOF){
 82         if(n == 0 && m == 0)
 83             break;
 84         memset(A,0,sizeof(A));
 85         for(int i = 0; i < m; ++i){
 86             scanf("%d%s%s",&num,st,ed);
 87             while(num--){
 88                 scanf("%d",&a);
 89                 A[i][a - 1]++;
 90                 A[i][a - 1] %= 7;
 91             }
 92             A[i][n] = (Check(ed) - Check(st) + 1 + 7) % 7;
 93         }
 94         int t = Gauss();
 95         if(t == -2) printf("Inconsistent data.\n");
 96         else if(t == -1) printf("Multiple solutions.\n");
 97         else{
 98             printf("%d",A[0][n]);
 99             for(int i = 1; i < n; ++i) printf(" %d",A[i][n]);
100             puts("");
101         }
102     }
103     return 0;
104 }

 

转载于:https://www.cnblogs.com/naturepengchen/articles/3980247.html

OpenClaw实战四|内容创作全流程AI助理:自动撰稿+智能剪辑+多平台发布,一人顶一个内容团队 AI替代的是「写稿、剪辑、发布」这种流水线工作,真正让你解放出来,去做选题、创意、人设、变现这些高价值的事。OpenClaw这套内容创作全流程AI助理,最大的价值不是「帮你发内容」,而是让一个人,拥有一个内容团队的产能。不管是个人博主、小团队,还是企业新媒体,都能用零代码的方式,快速搭建属于自己的自动化内容矩阵。 阅读详情

相关推荐

PyCharm中Matplotlib中文显示问题的终极解决方案

本文详细解析了PyCharm中Matplotlib中文显示问题的根本原因,并提供了从简单三行代码到深入配置的多套解决方案。针对Windows、Mac和Linux不同系统环境,分别推荐了最优字体配置方案,同时涵盖了PyCharm特定环境下的后端设置、字体路径指定等高级技巧,帮助开发者彻底解决中文乱码问题。

weixin_28221501的博客 303

POJ 2947-Widget Factory(高斯消元解同余方程式)

题目地址:POJ 2947 题意:N种物品,M条记录,接写来M行,每行有K,Start,End,表述从星期Start到星期End,做了K件物品,接下来的K个数为物品的编号。此题注意最后结果要调整到3-9之间。 思路: 很容易想到高斯消元。但是是带同余方程式的高斯消元,开始建立关系的时候就要MOD 7 解此类方程式时最后求解的过程要用到扩展gcd的思想,举个例子,如果最后得到的矩阵为:

Rocky0429 2824

告别盲调!用Synopsys VIP搭建PCIe 5.0验证环境,手把手搞定链路训练与均衡调试

本文详细介绍了基于Synopsys VIP搭建PCIe 5.0验证环境的实战指南,重点解析了链路训练(LTSSM)与均衡调试的关键技术。通过配置VIP组件、设计验证平台架构及实战调试技巧,帮助工程师高效解决PCIe 5.0验证中的常见问题,提升芯片验证效率与可靠性。

weixin_28700411的博客 457

poj2947--Widget Factory(高斯消元)

题目链接:点击打开链接 题目大意:有n种零件,已知每种零件的加工时间最少为3天最多为9天,现在只知道有m个工程用的时间和加工的零件数,问可不可以求出每种零件的加工时间。 列出对7取余的m个方程,用高斯消元判断是否有解,并解出来。 #include #include #include using namespace std ; #pragma comment(linker,"/STACK

随风的专栏 1822

400G光模块测试全攻略:从PCS层到CMIS合规的避坑指南

本文为网络设备测试工程师和光通信研发人员提供了一份详尽的400G光模块测试实战指南。文章深入剖析了从PCS层信号完整性、FEC容限到CMIS管理接口合规性测试的全流程,并分享了ANLT协议分析、SerDes眼图调试以及系统级流量压力测试中的核心技巧与常见避坑点,旨在帮助读者构建一套高效、精准的测试体系,确保高速光模块的可靠性与性能。

weixin_29300931的博客 210

kubedns-coredns部署pod出现not ready问题

文章目录遇到的问题1、发现问题2、排查问题3、解决方法 coredns的实例health_check不通过的问题,排查和解决方法 遇到的问题 1、发现问题 pod启动但是未ready 查看是readiness失败 使用对应的URL进行curl,发现真的返回503 2、排查问题 查看错误日志,发现一堆这个错误"waiting on : kubernetes" 网上相关的问题解答 这个跟测试场景不一样,这个案例是开了防火墙,可以确认我这个案例的机器没有开防火墙,但它提醒了一点,coredns是需要访问ap

u012533481的博客 2844

poj2947

高斯消元法模版题,但套模版没用。。 先回顾一下线性代数的知识。 若要求解如下方程: 首先,其系数矩阵为 然后,其增广矩阵为: 然后若要求解这个方程,首先将第一行第一个元素化为1,即:第一行乘以1/3。

Daze 1866

从原理图到PCB:Cadence Allegro 17.4网表同步全流程详解(含第三方网表配置)

本文详细解析了Cadence Allegro 17.4中从Orcad原理图到PCB布局的网表同步全流程。核心内容包括标准的第一方网表同步步骤,以及针对第三方网表导入时关键的封装库路径配置方法,并提供了常见同步错误的排查思路,帮助工程师高效、准确地完成设计数据传递,确保PCB设计顺利开局。

salt9的博客 654

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

题意:生产一些零件,已知零件种数,记录条数 记录只记录了某次生产从周几开始,周几结束,以及生产了哪些产品。 每件商品生产所需天数为3-9天。 求每样产品需要多少天才能完成。 若无解输出Inconsistent data. 有无穷解输出Multiple solutions. 有唯一解,输出其解

happy_lcj 1799

【HYSPLIT 教程第二期】Inline WRF-HYSPLIT 耦合

【HYSPLIT 教程第二期】Inline WRF-HYSPLIT 耦合

WW、forever的博客 808

HFSS实战项目——微带带通滤波器设计

本文详细介绍并设计了一款微带带通滤波器,通过HFSS三位电磁仿真软件对其进行仿真设计及优化,仿真结果表明,本文设计的滤波器表现出优良的滤波性能,符合设计要求。

2401_87464239的博客 5391

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> #i...

weixin_30810239的博客 222

基于深度学习的树木种类识别

本文介绍了基于深度学习的树木种类识别技术。我们将通过深度学习模型和图像处理技术实现对树木的自动识别与分类。首先,我们将介绍深度学习的基本原理和相关算法。接着,我们将详细说明树木种类识别的数据准备、模型构建和训练过程。最后,我们将给出代码示例,帮助读者深入了解和实践该技术。

一键难忘的博客 2316

pku 2947 Widget Factory 高斯消元

http://poj.org/problem?id=2947 题意: 工人生产不同的部件需要不同的时间,最少需要3天最多需要9天。 给出n种部件和m条记录,每条记录包括该工人生产部件的总数k和他开始生产时间和结束时间(只给出是周几,不给出具体时间),之后给出这K个部件跟的所属的种类。最后求出生产这n种部件分别所需要的时间。 思路: 高斯消元: 例子来讲 首先我们能够列出方程 (x ...

weixin_30709635的博客 61

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

poj 2947 Widget Factory(高斯消元)

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

街角的花街糖 1151

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

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

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

高斯消元求解模线性方程-poj2947

https://vj.xtuacm.cf/contest/view.action?cid=115#problem/P这题目难点在于矩阵构建和取模strcmp(s, “MON”)==0 如果等于0两个字符串相同#include<stdio.h> #include<algorithm> #include<iostream> #include<string.h> #include<math.h> us

karant的博客 361

高斯消元题集

高斯消元题集 HDU: 3976 Electric resistance 4818 RP problem POJ: 1222 EXTENDED LIGHTS OUT 1830 开关问题 2065 SETI 2947 Widget Factory 3185 The Water Bowls HDU 3976

Sothan 997

高斯消元(个人笔记)

高斯消元

weixin_58995792的博客 364

POJ2947 Widget Factory【高斯消元】【同余方程】

题目大意: 有 N 种装饰物,M 个已知条件,每个已知条件描述为: p s t a1,a2,…,ap (1 <= ai <= N) 第一行表示从星期 s 到星期 t 一共生产了 p 件装饰物(工作天数可为 t - s + 1 + 7*x, 因为可能生产不只一周)。规定每件装饰物至少生产 3 天,最多生产 9天。问:每种装 饰物需要生产的天数。 如果没有解,则输出"Inconsistent data.",如果有多解,则输出"Multiple solutions." 如果有唯一解,则输出每种装饰

程序员充电站(itcharge) 708

POJ 2065-SETI(高斯消元求解同余方程式)

题目地址:POJ 2065 题意:输入一个素数p和一个字符串s(只包含小写字母和‘*’),字符串中每个字符对应一个数字,'*'对应0,‘a’对应1,‘b’对应2....            eg:str[] = "abc", 那么说明 n=3, 字符串所对应的数列为1, 2, 3。            同时题目定义了一个函数:a0*1^0 + a1*1^1+a2*1^2+........

Rocky0429 2323

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

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

further~ 644

POJ 2947 Widget Factory 解题报告(高斯消元法)

题目大意:某工厂,每个零件的加工时间是3天到9天。现在只有一些记录,记录中有开始是星期几,结束是星期几,加工了哪些零件,问你能不能求出加工每个零件所需要的天数。     解题报告:高斯消元法解线性方程组。这题可以直接用模板做的。直接贴代码~ #include #include #include #include using namespace std; const int maxn=

SF-_- 的 ACM 博客 1031

POJ 2947 Widget Factory(高斯消元)

题目连接~~~  本题是对同余方程组消元,方程比较好列,本题可以列m个方程,每个方程可以列成k1*x1 + k2*x2……kn*xn = y1 (mod 7)  y1是加工这一批零件所需要的时间。然后解方程就可以了。 代码: #include #include #include #include #include #include #include using namespa

Muti-Agent 2291

模板 poj2947 Widget Factory 高斯消元

转载自kuangbin的模板: #include #include #include #include #include using namespace std; const int MAXN=50; int a[MAXN][MAXN];//增广矩阵 int x[MAXN];//解集 bool free_x[MAXN];//标记是否是不确定的变元 /* void Debug(voi

Every day 485

文章标题 POJ 2947 : Widget Factory (高斯消元)

题目链接 题意:有n 种装饰物,m 个已知条件,每个已知条件的描述如下: p start end a1,a2……ap (1<=ai<=n) 第一行表示从星期start 到星期end 一共生产了p 件装饰物(工作的天数为end-start+1+7*x, 加7*x 是因为它可能生产很多周),第二行表示这p 件装饰物的种类(可能出现相同的种类,即ai=aj)。规定每件装饰物至少生产3 天,最多生

Wang_SF2015的博客 360
上一篇: Poj--1753(数学,高斯消元 + 枚举 or 暴力乱搞)
下一篇: Poj--2777(数据结构,线段树)
dingdi3021
博客等级 码龄11年 1粉丝 230原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值